🎓 一、 选题背景:为什么选这个题?

同学们,听我一句劝:别再卷“外卖系统”了! 那是资本家的故事,我们要讲**“中国故事”**。

  1. 政治正确(Buff 叠满):紧扣“文化自信”、“数字非遗”、“乡村振兴”。答辩时你只要说出“用技术赋能传统文化”,立意瞬间拉满。
  2. 界面绝美:非遗项目(如剪纸、皮影、京剧)本身就好看。随便找几张高清大图往首页轮播图一放,导师第一印象就是“这系统做得精致”。
  3. 逻辑简单
  • 展示 = 文章 CMS(增删改查)。
  • 众筹 = 商品预售(加个进度条)。
  • 没有什么复杂的库存锁定、物流追踪,因为众筹通常是预售!

🏗️ 二、 系统架构设计

为了体现“数字化保护”和“商业化落地”的双重价值,我们采用 内容 + 交易 双引擎架构。

1. 技术栈选型

  • 后端:Spring Boot 2.7+、MyBatis Plus
  • 前端:Vue 3 + Element Plus + Video.js (视频播放)
  • 数据库:MySQL 8.0
  • 加分项:Redis (众筹热度排行)

2. 系统逻辑架构图 (Mermaid)

这张图展示了用户如何在“学习文化”和“支持文化”之间流转。

后端服务 (Spring Boot)
前台应用
1.发布文章/视频
存储
读取展示
2.发起众筹项目
3.支持/购买
API调用
4.更新进度条
更新金额
内容管理服务
众筹引擎服务
订单支付服务
首页大屏
非遗百科 (CMS)
文创众筹 (交易)
🧑‍🎓 游客/文化爱好者
👮 非遗传承人/管理员
💾 MySQL数据库

🛠️ 三、 项目亮点包装(Project Highlights)

这部分专门用来把“简单的功能”吹成“高端的创新”。

1. 沉浸式“数字孪生”非遗博物馆

包装话术:区别于传统的图文列表,本系统集成了 多媒体 CMS 引擎。支持非遗技艺的高清视频流播放与大图如瀑布流展示,构建了“云端博物馆”。虽然底层只是存储了视频 URL,但你可以说实现了“非遗资产的数字化留存与复现”。

2. 基于“时间窗”的动态众筹进度算法

包装话术:针对文创产品的孵化特性,系统设计了动态众筹引擎。实时计算 (当前筹集金额 / 目标金额) * 100% 并渲染为前端进度条。同时引入“时间窗”机制,自动监控项目截止日期,一旦过期未达标自动触发(模拟)退款流程,实现了商业逻辑的闭环。

3. 非遗“活化”推荐机制

包装话术:为了解决冷门非遗无人问津的问题,系统在众筹详情页引入了关联推荐策略。当用户浏览“皮影戏”众筹时,系统会自动推荐相关的“皮影制作技艺”科普文章,实现了“以商养文,以文促商”的生态闭环。


💻 四、 核心功能实现(保姆级代码)

核心只有两个:非遗文章怎么存(CMS),众筹进度怎么算(数学题)。

1. 核心表结构设计

非遗百科表 (sys_heritage_item)

其实就是一张博客文章表。

字段名 类型 说明 备注
id BIGINT 主键 -
title VARCHAR 项目名称 如:苏绣
level VARCHAR 级别 国家级/省级
category VARCHAR 类别 民间美术/传统技艺
video_url VARCHAR 视频地址 核心展示字段
content TEXT 富文本详情 -
众筹项目表 (sys_crowd_project)

其实就是一张商品表,多了“目标金额”和“截止时间”。

字段名 类型 说明 备注
id BIGINT 主键 -
name VARCHAR 文创名 如:苏绣双面扇
target_money DECIMAL 目标金额 如:10000.00
current_money DECIMAL 已筹金额 如:5000.00
end_time DATETIME 截止时间 -
status TINYINT 状态 0:众筹中, 1:成功, 2:失败

2. 难点代码:众筹支持与进度计算 (CrowdService.java)

这个逻辑是整个系统的“金钱核心”。

@Service
public class CrowdService {

    @Autowired
    private CrowdProjectMapper projectMapper;
    @Autowired
    private CrowdOrderMapper orderMapper;

    /**
     * 核心功能:用户支持(购买)文创产品
     * @param projectId 项目ID
     * @param supportAmount 支持金额 (比如买了一个 99元的扇子)
     */
    @Transactional
    public void supportProject(Long projectId, BigDecimal supportAmount) {
        // 1. 锁定项目 (防止并发导致金额统计不准,简单点直接用数据库行锁)
        CrowdProject project = projectMapper.selectByIdForUpdate(projectId);
        
        if (project.getStatus() != 0 || new Date().after(project.getEndTime())) {
            throw new RuntimeException("众筹已结束,无法支持!");
        }

        // 2. 更新已筹金额
        BigDecimal newCurrent = project.getCurrentMoney().add(supportAmount);
        project.setCurrentMoney(newCurrent);

        // 3. 判断是否众筹成功
        // 如果 当前金额 >= 目标金额,且状态还是进行中,则改为成功
        if (newCurrent.compareTo(project.getTargetMoney()) >= 0) {
            project.setStatus(1); // 众筹成功
        }

        // 4. 落库
        projectMapper.updateById(project);

        // 5. 生成订单记录 (略)
        createOrder(projectId, supportAmount);
    }
    
    /**
     * 前端获取进度百分比 (用于显示进度条)
     * 公式:(当前 / 目标) * 100
     */
    public Integer getProgressPercent(Long projectId) {
        CrowdProject p = projectMapper.selectById(projectId);
        if (p.getTargetMoney().compareTo(BigDecimal.ZERO) == 0) return 0;
        
        // 计算百分比,保留整数
        BigDecimal percent = p.getCurrentMoney()
            .divide(p.getTargetMoney(), 2, RoundingMode.HALF_UP)
            .multiply(new BigDecimal(100));
            
        return percent.intValue() > 100 ? 100 : percent.intValue();
    }
}


📸 五、 运行效果展示 (答辩 PPT 必杀技)

这部分是视觉分。非遗项目,图一定要美!

  1. 首页大屏
  • 轮播图放一张高清的“京剧脸谱”或“千里江山图”。
  • 中间放一个“非遗地图”(ECharts 地图),鼠标移到哪个省,显示该省有多少非遗项目。
  1. 众筹详情页(核心)
  • 左边是文创产品的高清图。
  • 右边最显眼的地方:一条绿色的进度条
  • 文字显示:“已筹 ¥8,848 / 目标 ¥10,000 (88%)”
  • 旁边放个倒计时:“距离结束还剩 03 天 12 小时”
  • 注:这种“紧迫感”是电商系统的精髓。

🗣️ 六、 答辩防御术(高情商回答)

Q1: 你的众筹如果失败了,钱怎么退?

A (闭环版): “老师,本系统设计了**‘众筹状态机’。当项目由于到期且未达到目标金额(Status=2)时,系统会触发定时任务 (Spring Task)**,自动扫描失败项目的订单表,并调用模拟支付接口的 Refund 方法进行原路退回。这保证了用户的资金安全。”
(解析:虽然你可能没写退款代码,但逻辑要是闭环的。)

Q2: 为什么把“非遗展示”和“众筹”放在一个系统里?

A (立意版): “这是为了解决非遗保护中**‘造血能力不足’的痛点。单纯的展示只是‘输血’,而通过文创众筹,可以让非遗传承人通过手艺获得经济回报,实现‘造血’。本系统旨在打通‘文化传播-市场认可-资金回流’**的可持续发展链路。”
(解析:这一波升华,直接把一个 CRUD 系统拔高到了乡村振兴的高度。)


总结
这个项目的核心是**“素材”
代码写起来非常快(就是文章表+订单表),但你需要去百度找一点好看的非遗视频和图片填进去。
只要界面做得古色古香,进度条能动,这就是一个
S级**的毕业设计。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐