项目所有用的话,右上角请给一个 Star ⭐非常感谢
这是一款基于微信小程序的面试刷题平台,专为程序员面试准备设计。项目包含完整的后端管理系统、微信小程序客户端和Web管理后台,提供面试题库、在线刷题、VIP会员、学习路径、项目实践等多种功能。
项目非常牛叉,想开发考试、刷题、面试小程序的都可以用本项目参考下。
- 💡 完整的题库系统:支持多种编程语言的面试题库管理
- 📝 智能刷题模式:顺序刷题、随机刷题、挑战模式
- 🎓 学习路径规划:系统化的学习路径和模块化文章
- 💼 项目实践:真实项目案例练习
- 👥 用户成长体系:积分、等级、挑战排行榜
- 💎 VIP会员系统:支持会员功能和优惠券
- 💰 微信支付集成:完整的支付流程和订单管理
- 📊 数据统计分析:学习进度、答题记录、成绩统计
扫描下方二维码,立即体验小程序:
├── 后端服务 (Spring Boot + MyBatis)
│ ├── 用户认证与授权 (Shiro)
│ ├── 题库管理
│ ├── 支付服务 (微信支付V3)
│ └── 数据统计
│
├── 小程序端 (原生微信小程序)
│ ├── 首页导航
│ ├── 题库浏览
│ ├── 在线刷题
│ ├── 个人中心
│ └── VIP购买
│
└── Web管理后台 (Thymeleaf)
├── 题库管理
├── 用户管理
├── 内容管理
└── 订单管理
| 技术 | 版本 | 说明 |
|---|---|---|
| Spring Boot | 2.5.12 | 基础框架 |
| RuoYi | 4.7.6 | 后台管理框架 |
| MyBatis | - | ORM框架 |
| Shiro | - | 权限认证 |
| MySQL | - | 数据库 |
| Druid | - | 数据库连接池 |
| PageHelper | - | 分页插件 |
| Hutool | 5.7.x | Java工具类库 |
| HttpClient | 4.5.13 | HTTP客户端 |
| Thymeleaf | - | 模板引擎 |
| 技术 | 说明 |
|---|---|
| 微信小程序原生框架 | 小程序客户端 |
| crypto-js | 加密库 |
| Editor.md | Markdown编辑器 |
| CodeMirror | 代码编辑器 |
| jQuery | JavaScript库 |
- JDK 1.8+
- Maven 3.x
- MySQL 5.7+
- 微信开发者工具
- 题目分类管理(按技术栈、难度分类)
- 题目CRUD操作
- 题目详情(包含代码高亮)
- 题目收藏
- 题目纠正反馈
- 浏览历史记录
- 顺序刷题
- 随机刷题
- 分类刷题
- 挑战模式
- 试卷模式
- 答题记录
- 编程语言选择
- 学习路径规划
- 模块化文章
- 项目实践案例
- 进度追踪
- 微信授权登录
- 用户资料管理
- 积分等级系统
- VIP会员管理
- 优惠券系统
- 用户反馈
- 轮播图管理
- 公告通知
- 文章管理
- 公司信息
- 导航配置
- 微信支付接入(V3版本)
- VIP购买
- 优惠券使用
- 订单管理
- 支付回调处理
interview/
├── src/
│ ├── main/
│ │ ├── java/com/example/demo/
│ │ │ ├── controller/ # 控制器层
│ │ │ │ ├── BBannerController.java # 轮播图
│ │ │ │ ├── InterviewQuestionController.java # 题库管理
│ │ │ │ ├── InterviewQuestionApiController.java # 题库API
│ │ │ │ ├── WxPayController.java # 微信支付
│ │ │ │ ├── WxuserController.java # 微信用户
│ │ │ │ └── ... # 其他控制器
│ │ │ ├── domain/ # 实体类
│ │ │ │ ├── BBanner.java # 轮播图实体
│ │ │ │ ├── InterviewQuestion.java # 面试题实体
│ │ │ │ ├── UserVip.java # VIP实体
│ │ │ │ └── ... # 其他实体
│ │ │ ├── mapper/ # 数据访问层
│ │ │ ├── service/ # 业务逻辑层
│ │ │ │ ├── Impl/ # 实现类
│ │ │ │ └── I*.java # 接口
│ │ │ └── utils/ # 工具类
│ │ │ ├── WeChatPayUtil.java # 微信支付工具
│ │ │ ├── HttpUtil.java # HTTP工具
│ │ │ └── JSONUtil.java # JSON工具
│ │ └── resources/
│ │ ├── application.yml # 主配置文件
│ │ ├── application-druid.yml # 数据源配置
│ │ ├── mapper/demo/ # MyBatis映射文件
│ │ ├── static/ # 静态资源
│ │ │ └── kf-pan-deng-micro/ # 小程序源码
│ │ │ ├── pages/ # 小程序页面
│ │ │ ├── utils/ # 工具类
│ │ │ ├── images/ # 图片资源
│ │ │ ├── app.js # 小程序主文件
│ │ │ ├── app.json # 小程序配置
│ │ │ └── ...
│ │ └── templates/ # Web模板
│ └── test/ # 测试代码
├── pom.xml # Maven配置
└── README.md # 项目说明
| 表名 | 说明 |
|---|---|
| b_interview_question | 面试题库表(核心表) |
| b_type_interview_question | 题目分类表 |
| b_timus | 题目信息表 |
| b_timu_option | 题目选项表 |
| b_shijuan | 试卷表 |
| b_shijuan_timu | 试卷题目关联表 |
| b_favorite | 收藏表 |
| b_corrective | 题目纠正表 |
| b_user_feedback | 用户反馈表 |
| 表名 | 说明 |
|---|---|
| wxuser | 微信用户表 |
| user_vip | VIP用户表 |
| user_ad_vip | 广告VIP表 |
| user_upgrade | 用户升级记录 |
| user_interview_challenged | 用户挑战记录 |
| b_user_coupon | 用户优惠券表 |
| 表名 | 说明 |
|---|---|
| b_banner | 轮播图表 |
| b_notice | 公告表 |
| b_module_article_info | 模块文章表 |
| b_language_info | 编程语言表 |
| b_study_path | 学习路径表 |
| b_project_practice | 项目实践表 |
| b_company_info | 公司信息表 |
| b_tabbar_link_config | 导航配置表 |
| 表名 | 说明 |
|---|---|
| b_coupon | 优惠券表 |
| vip_price_config | VIP价格配置表 |
确保已安装以下环境:
- JDK 1.8 或更高版本
- Maven 3.x
- MySQL 5.7 或更高版本
- 微信开发者工具(用于小程序开发)
- 创建数据库:
CREATE DATABASE shuati DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;- 导入数据库脚本:
# 导入SQL文件(项目中应包含数据库初始化脚本)
mysql -u root -p shuati < database.sql- 修改数据库配置文件:
编辑
src/main/resources/application-druid.yml:
spring:
datasource:
druid:
master:
url: jdbc:mysql://127.0.0.1:3306/shuati?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: 你的数据库用户名
password: 你的数据库密码编辑 src/main/resources/application.yml:
# 文件上传路径配置
ruoyi:
profile: D:/ruoyi/uploadPath # Windows
# profile: /www/wwwroot/interview/uploads # Linux
# 服务器端口
server:
port: 8090
# 微信支付配置(需要申请微信支付商户号)
weixinpay:
mch_id: 你的商户号
mch_serial_no: 你的证书序列号
private_key_path: 证书路径/apiclient_key.pem
private_cert_path: 证书路径/apiclient_cert.pem
api_v3_key: 你的APIv3密钥
micro_app_id: 你的小程序AppID
micro_app_secret: 你的小程序Secret
domain: https://你的域名.com# 进入项目根目录
cd interview
# Maven编译打包
mvn clean install
# 启动项目
mvn spring-boot:run
# 或者运行jar包
java -jar target/demo-0.0.1-SNAPSHOT.jar启动成功后访问:http://localhost:8090
-
打开微信开发者工具
-
导入小程序项目:
- 项目路径:
src/main/resources/static/kf-pan-deng-micro/ - AppID:填入你的小程序AppID
- 项目路径:
-
修改小程序配置: 编辑
utils/uri.js配置后端API地址:const baseUrl = 'http://localhost:8090'; // 开发环境 // const baseUrl = 'https://你的域名.com'; // 生产环境
-
编译并运行小程序
访问:http://localhost:8090/login
默认管理员账号(若使用RuoYi框架默认账号):
- 用户名:admin
- 密码:admin123
首页 展示刷题挑战入口 |
大厂信息 大厂面试信息 |
面试题 题目浏览列表 |
刷题挑战 选择题目数量和难度 |
做题页面 在线答题 |
成绩页面 查看答题结果 |
免费项目 免费学习资源 |
VIP项目 VIP学习资源 |
开通VIP VIP会员升级 |
我的页面 个人信息管理 |
||
- 题库管理:题目增删改查、批量导入
- 用户管理:用户列表管理
- 内容管理:轮播图、公告管理
- 试卷管理:刷题挑战试卷管理
- 配置管理:TabBar链接配置
- 首页:展示轮播图、快速入口、推荐题目
- 题库:按语言、分类浏览题目
- 刷题:题目详情、代码展示、答案解析
- 练习:项目实践、学习路径
- 个人中心:个人信息、VIP、成绩、收藏
- 题库管理:题目增删改查、批量导入
- 用户管理:用户列表、VIP管理
- 内容管理:轮播图、公告、文章
- 订单管理:支付订单、优惠券
- 数据统计:用户统计、答题统计
| 页面路径 | 说明 |
|---|---|
| pages/index/index | 首页 |
| pages/splash/splash | 启动页 |
| pages/guide/guide | 引导页 |
| pages/languageInfo/languageInfo | 编程语言选择 |
| pages/typeInterviewQuestion/typeInterviewQuestion | 题目分类 |
| pages/interviewQuestion/interviewQuestion | 题目列表 |
| pages/interviewQuestionDetail/interviewQuestionDetail | 题目详情 |
| pages/interviewQuestionSearch/interviewQuestionSearch | 搜索题目 |
| pages/interviewQuestionFavorite/interviewQuestionFavorite | 我的收藏 |
| pages/interviewQuestionCorrect/interviewQuestionCorrect | 题目纠正 |
| pages/studyPath/studyPath | 学习路径 |
| pages/moduleArticle/moduleArticle | 模块文章 |
| pages/prjectPracticeList/prjectPracticeList | 项目实践列表 |
| pages/doExam/doExam | 在线考试 |
| pages/challenge/challenge | 挑战模式 |
| pages/sj/sj | 试卷列表 |
| pages/sjTimu/sjTimu | 试卷题目 |
| pages/my/my | 个人中心 |
| pages/score/score | 我的成绩 |
| pages/grade/grade | 等级系统 |
| pages/coupon/coupon | 我的优惠券 |
| pages/vipUpgrade/vipUpgrade | VIP升级 |
| pages/feedback/feedback | 问题反馈 |
| pages/myFeedback/myFeedback | 我的反馈 |
| pages/freeProject/freeProject | 免费项目 |
| pages/vipProject/vipProject | VIP项目 |
所有小程序API端点都配置在Shiro白名单中,无需登录验证:
/interviewQuestion/** # 题库相关
/detailInterviewQuestion/** # 题目详情
/interviewQuestionFavorite/** # 收藏相关
/lookHistoryInterviewerQuestion/** # 浏览历史
/demo/wxuser/** # 微信用户
/demo/banner/miniapp/list # 轮播图
/demo/wxpay/** # 微信支付
/demo/** # 其他API
GET /interviewQuestion/list- 获取题目列表GET /detailInterviewQuestion/{id}- 获取题目详情POST /interviewQuestionFavorite/add- 添加收藏DELETE /interviewQuestionFavorite/remove/{id}- 取消收藏GET /interviewQuestionFavorite/list- 获取收藏列表
POST /demo/wxuser/login- 微信登录GET /demo/wxuser/info- 获取用户信息POST /demo/wxuser/update- 更新用户信息
POST /demo/wxpay/native- 创建支付订单POST /demo/wxpay/notify- 支付回调
ruoyi:
profile: D:/ruoyi/uploadPath # 根据实际情况修改weixinpay:
micro_app_id: wxef3b89b54c1606ec # 替换为你的小程序AppID
micro_app_secret: 你的小程序Secret # 替换为你的Secretweixinpay:
mch_id: 1641997373 # 替换为你的商户号
mch_serial_no: 你的证书序列号 # 商户API证书序列号
private_key_path: 证书路径 # 商户私钥文件路径
private_cert_path: 证书路径 # 商户证书文件路径
api_v3_key: 你的APIv3密钥 # APIv3密钥
domain: https://你的域名.com # 支付回调域名spring:
datasource:
druid:
master:
url: jdbc:mysql://127.0.0.1:3306/shuati
username: shuati
password: 你的密码shiro:
session:
expireTime: 30 # Session超时时间(分钟)
maxSession: -1 # 最大会话数,-1不限制- 登录地址:
/login - 首页地址:
/index - 验证码开关:可配置开启/关闭
- Session超时:30分钟
xss:
enabled: true
excludes: /system/notice/*
urlPatterns: /system/*,/monitor/*,/tool/*- 密码错误5次锁定10分钟
- 支持Remember Me功能(可配置)
直接使用IDE(如IntelliJ IDEA)运行 DemoApplication.java 启动类。
# 打包
mvn clean package -DskipTests
# 运行
nohup java -jar target/demo-0.0.1-SNAPSHOT.jar > logs/app.log 2>&1 &FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]server {
listen 80;
server_name 你的域名.com;
location / {
proxy_pass http://localhost:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}- 在微信开发者工具中点击"上传"
- 填写版本号和项目备注
- 登录微信公众平台提交审核
- 审核通过后发布上线
- 检查数据库是否启动
- 检查配置文件中的数据库连接信息
- 确认数据库名称、用户名、密码是否正确
- 检查文件上传路径是否存在
- 检查路径权限
- 查看配置文件中的
ruoyi.profile配置
- 检查小程序
utils/uri.js中的API地址配置 - 确认后端服务已启动
- 检查服务器防火墙设置
- 小程序正式环境需要配置合法域名(https)
- 确认已申请微信支付商户号
- 检查证书文件路径是否正确
- 验证APIv3密钥是否正确
- 查看支付回调域名是否配置正确
- 检查Shiro Session配置
- 确认Session超时时间设置
- 查看是否启用了多实例(需要配置Session共享)
采用RuoYi后台管理框架,快速搭建后台管理系统,代码结构清晰,易于维护和扩展。
从题库管理、用户学习、VIP购买、支付结算,形成完整的商业闭环。
- 题库系统支持多种刷题模式
- 学习路径系统化引导
- 用户成长体系增强粘性
- VIP和优惠券提供商业变现
- 模块化设计,便于功能扩展
- 统一的API接口规范
- 完善的代码注释
- 支持代码生成功能
完整实现微信支付V3版本的Native支付和JSAPI支付流程,包括:
- 签名验证
- 证书管理
- 回调处理
- 订单查询
集成Editor.md编辑器,支持:
- 实时预览
- 代码高亮
- 多种主题
- 图片上传
基于Shiro的权限管理:
- 细粒度权限控制
- 角色权限分配
- 菜单权限动态加载
- 按钮级权限控制
- 页面懒加载
- 图片压缩处理
- 请求防抖
- 数据缓存
- 增加在线考试计时功能
- 添加题目难度评级
- 实现用户积分商城
- 支持题目评论和讨论
- 增加AI智能推题
- 开发APP版本
- 添加社区功能
- 支持企业版定制
本项目采用 MIT 开源协议。
- 本项目仅供学习交流使用
- 使用本项目前请自行申请微信小程序AppID和支付商户号
- 请遵守微信小程序平台规则
- 商业使用请确保合规性
如有问题或建议,欢迎提Issue或Pull Request。
项目所有用的话,右上角请给一个 Star ⭐非常感谢
注意:
- 使用前请务必修改配置文件中的敏感信息(数据库密码、微信配置等)
- 生产环境部署请使用HTTPS协议
- 定期备份数据库数据
- 关注微信官方政策变化,及时更新相关功能
祝你使用愉快!










