C ae6d465570 feat: 采购费用统一台账 + 资源续费(手动新到期日, 费用仅入历史) 2 mesiacov pred
..
src ae6d465570 feat: 采购费用统一台账 + 资源续费(手动新到期日, 费用仅入历史) 2 mesiacov pred
.gitignore 72cff05d6c feat(cost): 费用统计本月/本季/本年筛选生效(按资源开通日期过滤) 2 mesiacov pred
README.md c8bfac8376 init: 软件项目资源登记平台初始代码提交 2 mesiacov pred
build_v6.py ffab4b36d3 feat(project): 主项目详情资源列表增加「涉及的子系统」字段 2 mesiacov pred
build_v7.py 72cff05d6c feat(cost): 费用统计本月/本季/本年筛选生效(按资源开通日期过滤) 2 mesiacov pred
build_v8.py ae6d465570 feat: 采购费用统一台账 + 资源续费(手动新到期日, 费用仅入历史) 2 mesiacov pred
extract_deps.py ffab4b36d3 feat(project): 主项目详情资源列表增加「涉及的子系统」字段 2 mesiacov pred
pom.xml f6b79ba1cf fix(web): 修复简单类型入参缺参数名导致的接口500(系统繁忙) 2 mesiacov pred
repack.py 7894f8aaa0 feat(resource): 购买时长选项改为 1个月/2个月/3个月/6个月/1年/2年/3年 2 mesiacov pred
repack_v3.py 2b188b1d16 feat(resource): 购买时长新增「按量」选项(编码8) 2 mesiacov pred
repack_v5.py 6a0071702e feat(project): 项目管理支持两层结构(顶层项目/子项目) 2 mesiacov pred
start_v7.sh 72cff05d6c feat(cost): 费用统计本月/本季/本年筛选生效(按资源开通日期过滤) 2 mesiacov pred
start_v8.sh ae6d465570 feat: 采购费用统一台账 + 资源续费(手动新到期日, 费用仅入历史) 2 mesiacov pred

README.md

资源登记平台 - 后端

基于 Spring Boot 3 + MyBatis-Plus + MySQL + JWT 的内部资源台账系统后端。

启动步骤

  1. 初始化数据库 先执行根目录 sql/schema.sql,会创建数据库 resource_platform 及全部表,并插入初始管理员账号。

  2. 修改配置 编辑 src/main/resources/application.yml:

    • spring.datasource 改成你自己的 MySQL 账号密码
    • spring.mail 改成你们公司的SMTP服务器信息(到期提醒邮件依赖这个)
    • jwt.secret 生产环境务必换成自己的随机字符串
  3. 启动

    mvn clean package -DskipTests
    java -jar target/resource-platform.jar
    

    或者直接用IDE运行 ResourcePlatformApplication。

    1. 默认账号
    2. 账号:admin
    3. 密码:admin123
    4. 首次登录后请立即在"个人中心-修改密码"里改掉。

    模块说明

    模块 说明
    auth 登录、修改密码
    user 用户管理(仅管理员)
    resource-type / provider 资源类型、服务商字典,可自行扩展
    project 项目管理
    resource 资源管理(核心),含多对多项目关联、Excel导出
    dashboard 工作台概览
    operation-log 操作日志
    task.ResourceExpireTask 每天定时扫描,刷新到期状态 + 发送邮件提醒

    关于到期提醒

    notify.cron 控制扫描频率(默认每天8点),remind-days-far(默认30天)和 remind-days-near(默认7天) 控制提前多久开始提醒。同一个资源同一个阶段只会发一封邮件,记录在 expire_notify_log 表里,不会每天打扰负责人。

    待你补充/确认的点

    • 邮件SMTP配置是真实账号密码,不要把改好真实密码的yml提交到代码仓库,建议改成读环境变量。
    • 当前权限是最简单的二级(管理员/普通用户),如果后续需要"只能管自己负责的资源"这种更细粒度权限,可以在Controller层基于SecurityUtils.getCurrentUserId()再加过滤,目前还没做。