第三方交互服务
    第三方交互服务
    • 首页
    • 优惠券管理
      • 优惠券发行
        POST
      • 优惠券发行1.0
        POST
    • 数据模型
      • Schemas
        • CouponAttach
        • CouponPublishDTO
        • ResultObject
        • SimpleCouponDTO

    首页

    效果图

    大统一Java服务端monorepo单体式仓库 单仓多包 (下一代架构考虑基于原生Quarkus或Spring Native与GraalVM做基石)#

    项目介绍#

    项目代号: athena(雅典娜 智慧女神) 愿景: 使项目更易于复用迭代维护扩展、关注点分离并避免代码重复、并具有生生不息的软件生命力
    基于Spring Boot 3.x与JDK 21引擎的多级模块项目
    一级模块为基础通用模块 可不断增强优化一级基础通用模块
    二级模块为项目业务模块 可无限新增扩展二级项目业务模块
    单体式仓库使项目更易于复用迭代维护扩展、分离关注点并避免代码重复

    模块目录结构#

    athena-* : 一级模块为基础通用模块 可不断增强优化一级基础通用模块
    athena-core : 核心模块 (与业务无关,绝大部分模块依赖需要)
    athena-common: 公共通用模块 (与业务无关,大部分模块项目依赖需要)
    athena-dao : 数据库通用配置层模块
    athena-util : 工具模块
    athena-constant : 项目常量 枚举和通用yaml配置模块
    athena-test : 测试 、实验性功能等模块 (与生产环境无关 可随便折腾😅)
    athena-generator : CRUD代码与Maven多模块骨架自动生成等模块
    business-common-service : 业务通用服务模块组模块
    single-module-projects : 单模块项目集合 不需要依赖其他MonoRepo通用模块

    特征&提供#

    最佳实践的项目结构、配置文件、精简的POM
    统一响应结果封装及生成工具
    统一异常处理
    JWT的接口签名认证
    常用基础方法抽象封装
    集成MyBatis、通用Mapper插件、PageHelper分页插件,实现单表业务零SQL
    提供代码生成器根据表名生成对应的Model、Mapper、MapperXML、Service、ServiceImpl、Controller等基础代码,
    其中Controller模板默认提供RESTFul,根据需求在CodeGenerator.genCode(tableName)方法中自己选择, 代码模板可根据实际项目的需求来扩展,所以只提供了一些比较基础、通用的模板,
    主要是提供一个思路**来减少重复代码的编写,使用模板也有助于保持团队代码风格的统一

    开发建议#

    表名,建议使用小写,多个单词使用下划线拼接
    Model内成员变量建议与表字段数量对应,如需扩展成员变量(比如连表查询)建议创建请求参数DTO类,响应数据VO类,否则需在扩展的成员变量上加@Transient注解
    建议业务失败直接使用ServiceException("message")抛出,由统一异常处理器来封装业务失败的响应结果,比如throw new ServiceException("该手机号已被注册")
    ,会直接被封装为{"code":400, "msg":"该手机号已被注册"}返回,无需自己处理,尽情抛出
    需要工具类的话建议先从apache-commons-*和guava中找,实在没有再造轮子或引入类库,尽量精简项目
    开发规范建议遵循阿里巴巴Java开发手册(最新版下载)

    技术选型&文档#

    Spring Boot(Spring Boot使用指南)
    MyBatis(官方中文文档)
    MyBatis通用Mapper插件(官方中文文档)
    新版MyBatis通用Mapper(官方中文文档)
    MyBatis PageHelper分页插件(官方中文文档)
    ShardingSphere零侵入性的分库分表、读写分离、分布式事务方案(官方中文文档)
    (参考文章)

    Git Commit Message格式说明一般包括三部分:Header、Body和Footer#

    message信息格式采用目前主流的Angular规范,是目前使用最广的写法,比较合理和系统化,并且有配套的工具 在IDEA 可安装Git Commit Message插件 自动生成规范提交信息
    Header#
    type(scope): subject
    type: 用于说明commit的类别,规定为如下几种
    feat: 新增功能
    fix: 修复 bug
    docs: 修改文档 比如 README, CHANGELOG, CONTRIBUTE等
    refactor: 代码重构,未新增任何功能和修复任何 bug
    build: 改变构建流程,新增依赖库、工具等(例如 webpack,maven等修改)
    style: 仅仅修改了空格、缩进、逗号等,不改变代码逻辑
    perf: 改善性能和体验的修改
    chore: 非源码和测试文件修改的杂项处理
    test: 测试用例的修改 包括单元测试、集成测试等
    ci: 持续集成相关
    release: 自动化触发CI/CD流水线
    revert: 回滚到上一个版本
    scope: 【可选】用于说明 commit 的影响范围
    subject: commit 的简要说明,尽量简短
    Body#
    对本次commit的详细描述,可分多行
    Footer#
    不兼容变动:需要描述相关信息 关闭指定Issue:输入Issue信息
    示例 英文:冒号后加单空格 再加提交说明#
    feat(app): 用户登录功能

    IDEA工具内File->Settings->File and Code Templates->Includes标签->File Header 添加如下注释信息,之后创建类会自动生成注释信息#

    /**
    @author 潘维吉
    @date DATE{TIME}
    @description 功能描述
    */

    统一CRUD方法名称前缀规范和注解#

    @GetMapping 获取 get**
    @PostMapping 分页 getPage
    @PostMapping 新增 save**
    @PutMapping 修改 update**
    @PostMapping 新增或修改 saveOrUpdate
    @DeleteMapping 删除 delete**

    RESTFul API规范#

    URL中不能有动词 宾语必须是名词 URL路径中首选小写字母 反例: /getAllCars /createNewCar /deleteAllRedCars等
    URL使用连字符中划线”-” 尽量使用单单词 提高URL的可读性 符合谷歌规范
    集合使用复数 URL 如: /articles(读取所有文章)
    避免多级 URL 正例: /users/1?schools=2 反例: /users/1/schools/2

    API版本控制#

    将API的版本号放入URL
    https://api.example.com/v{n}/
    采用多版本并存,增量发布的方式 v{n} n代表版本号,分为整形和浮点型 整形的版本号: 大功能版本发布形式 ,例如:v1,v2 浮点型:为小版本号,只具备补充api的功能 例如:v1.1 v2.2
    已上线接口,不允许修改方法和URL等,避免对接口调用产生影响。接口过时必须加@Deprecated 注解,并清晰地说明采用的新接口

    Jenkins自动触发发布 实现全自动GitOps#

    release 前缀格式的Git提交记录会自动触发Jenkins发布任务
    release 关键字代表部署发布 根据Jenkins job配置的分支匹配
    (根据Jenkins job配置项目类型) 适用于单仓库多模块 无需手动执行
    在Git仓库配置WebHooks触发Jenkins发布任务
    多仓库多模块的情况 release(项目模块名称) 后期支持自动判断Git变更代码文件模块部署 支持同时部署多个应用
    修改于 2025-11-30 10:22:30
    下一页
    优惠券发行
    Built with