东晟密封科技博客:打造密封件技术交流新平台 一、建设背景与目标广东东晟密封科技有限公司作为一家集研发、生产、销售于一体的国家高新技术企业专注于聚四氟乙烯、聚氨酯、橡胶等高分子材料密封元件的研制。为深化品牌影响力构建技术护城河特规划企业级博客系统。本方案旨在通过内容营销将东晟密封件在工程机械、液压气动、石油天然气等领域的密封件解决方案进行沉淀打造一个集技术分享、密封圈选型指导、行业交流于一体的专业平台让“怕漏油装东晟油封”的品牌理念深入人心。1.1、技术栈选型前端技术栈框架: Vue 3 TypeScript ViteUI组件库: Element Plus状态管理: Pinia路由: Vue Router 4HTTP客户端: Axios富文本编辑器: WangEditor 53D可视化: Three.js GLTFLoader图表: ECharts 5后端技术栈框架: Spring Boot 2.7 Java 17安全框架: Spring Security JWTORM: MyBatis Plus数据库: MySQL 8.0 Redis 7.0搜索: Elasticsearch 8.0文件存储: MinIO (兼容S3)API文档: Knife4j Swagger 3部署: Docker Docker Compose数据库设计-- 用户表 CREATE TABLE sys_user ( id bigint NOT NULL AUTO_INCREMENT COMMENT 用户ID, username varchar(50) NOT NULL COMMENT 用户名, password varchar(100) NOT NULL COMMENT 密码, nickname varchar(50) DEFAULT NULL COMMENT 昵称, email varchar(100) DEFAULT NULL COMMENT 邮箱, phone varchar(20) DEFAULT NULL COMMENT 手机号, avatar varchar(500) DEFAULT NULL COMMENT 头像, role tinyint NOT NULL DEFAULT 1 COMMENT 角色0-管理员 1-注册用户 2-访客, company varchar(100) DEFAULT NULL COMMENT 公司名称, position varchar(50) DEFAULT NULL COMMENT 职位, focus_seal_types json DEFAULT NULL COMMENT 关注的密封件类型, status tinyint NOT NULL DEFAULT 1 COMMENT 状态0-禁用 1-正常, create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, PRIMARY KEY (id), UNIQUE KEY uk_username (username), KEY idx_email (email), KEY idx_role_status (role,status) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用户表; -- 密封件分类表 CREATE TABLE seal_category ( id bigint NOT NULL AUTO_INCREMENT COMMENT 分类ID, name varchar(50) NOT NULL COMMENT 分类名称, code varchar(20) NOT NULL COMMENT 分类编码, description varchar(200) DEFAULT NULL COMMENT 分类描述, icon varchar(200) DEFAULT NULL COMMENT 图标, sort int DEFAULT 0 COMMENT 排序, parent_id bigint DEFAULT 0 COMMENT 父分类ID, level tinyint DEFAULT 1 COMMENT 层级, status tinyint DEFAULT 1 COMMENT 状态0-禁用 1-启用, create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (id), UNIQUE KEY uk_code (code), KEY idx_parent_id (parent_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT密封件分类表; -- 博客文章表 CREATE TABLE blog_article ( id bigint NOT NULL AUTO_INCREMENT COMMENT 文章ID, title varchar(200) NOT NULL COMMENT 文章标题, summary varchar(500) DEFAULT NULL COMMENT 文章摘要, cover_image varchar(500) DEFAULT NULL COMMENT 封面图, content longtext NOT NULL COMMENT 文章内容(HTML), content_md longtext COMMENT 文章内容(Markdown), author_id bigint NOT NULL COMMENT 作者ID, category_id bigint DEFAULT NULL COMMENT 分类ID, view_count int DEFAULT 0 COMMENT 阅读量, like_count int DEFAULT 0 COMMENT 点赞数, comment_count int DEFAULT 0 COMMENT 评论数, share_count int DEFAULT 0 COMMENT 分享数, is_top tinyint DEFAULT 0 COMMENT 是否置顶0-否 1-是, is_recommend tinyint DEFAULT 0 COMMENT 是否推荐0-否 1-是, is_original tinyint DEFAULT 1 COMMENT 是否原创0-转载 1-原创, status tinyint NOT NULL DEFAULT 0 COMMENT 状态0-草稿 1-待审核 2-已发布 3-已下架, publish_time datetime DEFAULT NULL COMMENT 发布时间, create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, PRIMARY KEY (id), KEY idx_author_id (author_id), KEY idx_category_id (category_id), KEY idx_status_publish_time (status,publish_time), FULLTEXT KEY ft_title_summary (title,summary) WITH PARSER ngram ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT博客文章表; -- 文章标签关联表 CREATE TABLE blog_article_tag ( id bigint NOT NULL AUTO_INCREMENT COMMENT 关联ID, article_id bigint NOT NULL COMMENT 文章ID, tag_id bigint NOT NULL COMMENT 标签ID, PRIMARY KEY (id), UNIQUE KEY uk_article_tag (article_id,tag_id), KEY idx_tag_id (tag_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT文章标签关联表; -- 标签表 CREATE TABLE blog_tag ( id bigint NOT NULL AUTO_INCREMENT COMMENT 标签ID, name varchar(50) NOT NULL COMMENT 标签名称, color varchar(20) DEFAULT #409EFF COMMENT 标签颜色, hot int DEFAULT 0 COMMENT 热度, create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (id), UNIQUE KEY uk_name (name) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT标签表; -- 密封件选型参数表 CREATE TABLE seal_selection_param ( id bigint NOT NULL AUTO_INCREMENT COMMENT 参数ID, param_name varchar(50) NOT NULL COMMENT 参数名称, param_code varchar(30) NOT NULL COMMENT 参数编码, param_type tinyint NOT NULL COMMENT 参数类型1-数值 2-枚举 3-布尔, unit varchar(20) DEFAULT NULL COMMENT 单位, min_value decimal(10,2) DEFAULT NULL COMMENT 最小值, max_value decimal(10,2) DEFAULT NULL COMMENT 最大值, options json DEFAULT NULL COMMENT 枚举选项, required tinyint DEFAULT 1 COMMENT 是否必填0-否 1-是, sort int DEFAULT 0 COMMENT 排序, create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (id), UNIQUE KEY uk_param_code (param_code) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT密封件选型参数表; -- 密封件产品库 CREATE TABLE seal_product ( id bigint NOT NULL AUTO_INCREMENT COMMENT 产品ID, product_code varchar(50) NOT NULL COMMENT 产品编码, product_name varchar(100) NOT NULL COMMENT 产品名称, product_type varchar(50) NOT NULL COMMENT 产品类型, material varchar(50) NOT NULL COMMENT 材料, category_id bigint NOT NULL COMMENT 分类ID, description text COMMENT 产品描述, specifications json DEFAULT NULL COMMENT 规格参数, application_scenarios json DEFAULT NULL COMMENT 应用场景, technical_data_url varchar(500) DEFAULT NULL COMMENT 技术资料URL, 3d_model_url varchar(500) DEFAULT NULL COMMENT 3D模型URL, price_range varchar(100) DEFAULT NULL COMMENT 价格区间, status tinyint DEFAULT 1 COMMENT 状态0-下架 1-上架, create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (id), UNIQUE KEY uk_product_code (product_code), KEY idx_category_id (category_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT密封件产品库; -- 成功案例表 CREATE TABLE success_case ( id bigint NOT NULL AUTO_INCREMENT COMMENT 案例ID, title varchar(200) NOT NULL COMMENT 案例标题, customer_name varchar(100) NOT NULL COMMENT 客户名称, industry varchar(50) NOT NULL COMMENT 所属行业, application_scenario varchar(200) NOT NULL COMMENT 应用场景, problem_description text COMMENT 问题描述, solution text NOT NULL COMMENT 解决方案, seal_products json NOT NULL COMMENT 使用的密封件产品, performance_improvement json DEFAULT NULL COMMENT 性能提升数据, images json DEFAULT NULL COMMENT 案例图片, video_url varchar(500) DEFAULT NULL COMMENT 视频URL, view_count int DEFAULT 0 COMMENT 查看次数, is_featured tinyint DEFAULT 0 COMMENT 是否精选, publish_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 发布时间, PRIMARY KEY (id), KEY idx_industry (industry), KEY idx_publish_time (publish_time) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT成功案例表; -- 评论表 CREATE TABLE blog_comment ( id bigint NOT NULL AUTO_INCREMENT COMMENT 评论ID, article_id bigint NOT NULL COMMENT 文章ID, user_id bigint NOT NULL COMMENT 用户ID, parent_id bigint DEFAULT 0 COMMENT 父评论ID, content text NOT NULL COMMENT 评论内容, like_count int DEFAULT 0 COMMENT 点赞数, status tinyint DEFAULT 1 COMMENT 状态0-删除 1-正常 2-审核中, create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (id), KEY idx_article_id (article_id), KEY idx_user_id (user_id), KEY idx_parent_id (parent_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT评论表;2.1、后端核心代码实现1. 项目结构dongcheng-blog/ ├── dongcheng-common/ # 公共模块 ├── dongcheng-system/ # 系统模块 ├── dongcheng-blog/ # 博客模块 ├── dongcheng-seal/ # 密封件模块 ├── dongcheng-search/ # 搜索模块 ├── dongcheng-file/ # 文件模块 └── dongcheng-admin/ # 后台管理2. 用户与权限管理模块UserController.javaRestController RequestMapping(/api/user) Api(tags 用户管理) public class UserController { Autowired private UserService userService; PostMapping(/register) ApiOperation(用户注册) public ResultUserVO register(Valid RequestBody UserRegisterDTO dto) { return Result.success(userService.register(dto)); } PostMapping(/login) ApiOperation(用户登录) public ResultLoginVO login(Valid RequestBody LoginDTO dto) { return Result.success(userService.login(dto)); } GetMapping(/profile) ApiOperation(获取用户信息) PreAuthorize(hasAnyRole(USER, ADMIN)) public ResultUserProfileVO getProfile() { Long userId SecurityUtils.getUserId(); return Result.success(userService.getProfile(userId)); } PutMapping(/profile) ApiOperation(更新用户信息) PreAuthorize(hasAnyRole(USER, ADMIN)) public ResultVoid updateProfile(Valid RequestBody UserUpdateDTO dto) { Long userId SecurityUtils.getUserId(); userService.updateProfile(userId, dto); return Result.success(); } PostMapping(/focus/seal-types) ApiOperation(更新关注的密封件类型) PreAuthorize(hasAnyRole(USER, ADMIN)) public ResultVoid updateFocusSealTypes(RequestBody ListString sealTypes) { Long userId SecurityUtils.getUserId(); userService.updateFocusSealTypes(userId, sealTypes); return Result.success(); } } // 用户服务实现 Service Slf4j public class UserServiceImpl implements UserService { Autowired private UserMapper userMapper; Autowired private PasswordEncoder passwordEncoder; Autowired private JwtTokenProvider tokenProvider; Override Transactional(rollbackFor Exception.class) public UserVO register(UserRegisterDTO dto) { // 检查用户名是否已存在 if (userMapper.existsByUsername(dto.getUsername())) { throw new BusinessException(用户名已存在); } // 检查邮箱是否已存在 if (StringUtils.hasText(dto.getEmail()) userMapper.existsByEmail(dto.getEmail())) { throw new BusinessException(邮箱已被注册); } // 创建用户 SysUser user new SysUser(); user.setUsername(dto.getUsername()); user.setPassword(passwordEncoder.encode(dto.getPassword())); user.setNickname(dto.getNickname()); user.setEmail(dto.getEmail()); user.setPhone(dto.getPhone()); user.setRole(UserRole.REGISTERED_USER.getCode()); user.setStatus(UserStatus.NORMAL.getCode()); userMapper.insert(user); // 返回用户信息 return convertToVO(user); } Override public LoginVO login(LoginDTO dto) { SysUser user userMapper.selectByUsername(dto.getUsername()); if (user null) { throw new BusinessException(用户名或密码错误); } if (!passwordEncoder.matches(dto.getPassword(), user.getPassword())) { throw new BusinessException(用户名或密码错误); } if (user.getStatus() UserStatus.DISABLED.getCode()) { throw new BusinessException(账号已被禁用); } // 生成token String token tokenProvider.generateToken(user.getId(), user.getUsername(), user.getRole()); // 更新登录信息 userMapper.updateLoginInfo(user.getId()); LoginVO vo new LoginVO(); vo.setToken(token); vo.setUserInfo(convertToVO(user)); return vo; } Override public UserProfileVO getProfile(Long userId) { SysUser user userMapper.selectById(userId); if (user null) { throw new BusinessException(用户不存在); } UserProfileVO vo new UserProfileVO(); vo.setId(user.getId()); vo.setUsername(user.getUsername()); vo.setNickname(user.getNickname()); vo.setEmail(user.getEmail()); vo.setPhone(user.getPhone()); vo.setAvatar(user.getAvatar()); vo.setCompany(user.getCompany()); vo.setPosition(user.getPosition()); vo.setFocusSealTypes(JSON.parseArray(user.getFocusSealTypes(), String.class)); vo.setRole(user.getRole()); return vo; } }3. 技术博客与内容管理模块ArticleController.javaRestController RequestMapping(/api/blog) Api(tags 博客管理) public class ArticleController { Autowired private ArticleService articleService; PostMapping(/articles) ApiOperation(创建文章) PreAuthorize(hasAnyRole(USER, ADMIN)) public ResultLong createArticle(Valid RequestBody ArticleCreateDTO dto) { Long userId SecurityUtils.getUserId(); Long articleId articleService.createArticle(userId, dto); return Result.success(articleId); } PutMapping(/articles/{id}) ApiOperation(更新文章) PreAuthorize(hasAnyRole(USER, ADMIN)) public ResultVoid updateArticle(PathVariable Long id, Valid RequestBody ArticleUpdateDTO dto) { Long userId SecurityUtils.getUserId(); articleService.updateArticle(id, userId, dto); return Result.success(); } PostMapping(/articles/{id}/publish) ApiOperation(发布文章) PreAuthorize(hasAnyRole(USER, ADMIN)) public ResultVoid publishArticle(PathVariable Long id) { Long userId SecurityUtils.getUserId(); articleService.publishArticle(id, userId); return Result.success(); } GetMapping(/articles/{id}) ApiOperation(获取文章详情) public ResultArticleDetailVO getArticleDetail(PathVariable Long id) { ArticleDetailVO vo articleService.getArticleDetail(id); // 增加阅读量异步 articleService.incrementViewCount(id); return Result.success(vo); } GetMapping(/articles) ApiOperation(分页查询文章) public ResultPageResultArticleVO listArticles( RequestParam(defaultValue 1) Integer page, R二、核心功能模块设计1. 用户与权限管理系统设立三级角色访客、注册用户工程师/客户及管理员。注册用户可完善个人信息记录其关注的液压密封件类型。管理员拥有最高权限负责审核内容、管理用户并针对重点客户设置专属访问权限以便查看特定工况下的油封技术白皮书。2. 技术博客与内容管理这是系统的核心。博主技术团队可发布关于骨架油封、防尘圈、斯特封等产品的深度解析文章。编辑器需支持图文混排并能插入密封件的3D剖面图或动态演示。文章发布时必须关联特定的密封件分类如旋转密封、往复密封和标签如“耐高温密封圈”、“食品级密封件”形成结构化的知识库。系统将自动统计每篇密封件技术文章的阅读量作为热度排序的依据。3. 智能选型与交互模块区别于普通博客本方案深度融合业务场景。在文章页面侧边栏或底部嵌入“密封件选型助手”入口。用户阅读关于“挖掘机液压缸漏油”的案例时可直接跳转至选型工具输入轴径、压力、温度等参数系统基于东晟密封件235种材料配方库推荐匹配的V型组合密封或格来圈型号。同时用户可对文章进行点赞、评论分享在实际应用中更换聚四氟乙烯密封件的心得形成互动社区。4. 案例库与搜索优化设立“成功案例”专区展示东晟密封件在比亚迪、三一重工等知名企业的应用实例。重点突出密封件在超高压、强腐蚀等苛刻工况下的优异表现。前端首页提供全文检索功能用户可通过“泄漏率”、“耐磨性”等关键词快速定位到相关的橡胶密封件解决方案。同时系统支持按最新发布或最热文章排序并展示热门标签如“无油润滑密封件”、“PTFE密封件”。三、视觉与运营支撑页面设计采用东晟蓝为主色调保持品牌统一性。技术文档区支持PDF下载方便一线工程师离线查阅密封件安装维护教程。后台需具备数据看板监测“密封圈”等关键词的搜索频次指导内容创作方向。通过持续输出高质量的密封件技术干货将博客打造为东晟密封件连接全球客户的数字化纽带。