{"repo":"cooker/wxHm","free":true,"listed":false,"github":"https://github.com/cooker/wxHm","clone":"git clone https://github.com/cooker/wxHm.git","description":"微信群二维码活码工具，生成微信群活码，随时可以切换二维码！","language":"Java","stars":66,"topics":["chat","python","vue","wechat","weixin"],"license":null,"category":"chat-messaging","readme_excerpt":"wxHm (Java + NutUI-Vue) 微信群活码管理系统，后端基于 Spring Boot + SQLite，前端基于 Vue3 + NutUI，支持群码轮转、数据看板、文件托管与后台风控。 --- 项目现状（重要） - 已完成从旧模板页向 SPA 迁移，主入口为： /app/ - 根路径自定义文件访问仍保留： /{filename} - 旧链接兼容： - / 会跳转到 /app/ - /group/{groupName} 会跳转到 /app/group/{groupName} --- 核心功能 - 活码访问与轮转：固定群入口，后台上传新码即可替换 - 群码访问统计：7 日 PV/UV 趋势 + 设备分布（ECharts） - 未创建群码访问监控：统计访问不存在群码链接的请求（3 天保留） - 自定义文件托管：上传、批量创建、预览、删除，支持 /{filename} 直链 - 后台登录与会话鉴权：Session + X-Admin-Token - 登录风控与审计： - 记录登录失败的 IP、设备、输入错误密码、时间 - 同 IP 30 分钟内输错 5 次，锁定 30 分钟 - 后台提供“登录监控”页面查看最近记录 - 公众号模板消息：配置、发送测试、维护多套配置 --- 技术栈 后端（ wxhm-java ） - Java 21 - Spring Boot 3.2.5 - Spring MVC + Spring Data JPA - SQLite + Hibernate SQLite Dialect - Thymeleaf（保留少量兼容入口） 前端（ wxhm-web ） - Vue 3 + Vue Router - NutUI - ECharts - Vite（ base=/app/ ，构建产物输出到 Java static/app ） --- 目录结构 - wxhm-java/ ：后端工程 - src/main/java/com/wxhm/controller/ ：页面跳转与 API 控制器 - src/main/java/com/wxhm/service/ ：业务服务（统计、风控、群码、通知） - src/main/java/com/wxhm/entity/ ：JPA 实体 - src/main/java/com/wxhm/repository/ ：数据仓储 - src/main/resources/static/app/ ：前端打包产物（由 wxhm-web 构建同步） - src/main/resources/application.yml ：配置 - wxhm-web/ ：NutUI-Vue 前端工程 - cf-workers/ ：Cloudflare Workers 反向代理示例 --- 快速启动 1) 构建前端（同步到 Java static） 2) 构建后端 3) 运行 默认端口： 8092 常用地址： - 前端首页： http://127.0.0.1:8092/app/ - 管理登录： http://127.0.0.1:8092/app/admin/login - 兼容群链接： http://127.0.0.1:8092/group/你的群名 --- 一键脚本 根目录提供： - start.sh ：启动（按执行时当前目录写 run/app.pid 与 logs/app.out.log ） - stop.sh ：停止（优雅停止，超时强制结束） --- 配置说明 配置文件： wxhm-java/src/main/reso","default_branch":null,"files":null,"tree":[],"storefront":"/r/cooker","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/cooker/wxHm/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}