2 Star 0 Fork 1

Ray / cqrs-tpl

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

cqrs-tpl

介绍

基于 CQRS 思想的微服务项目模版

软件架构

  1. Java-v17
  2. Gradle-v8
  3. SpringBoot-v3
  4. BeetlSQL-v3
  5. Jedis-v4

软件分包

  1. application(应用层): 组织业务场景, 编排业务, 隔离场景对领域层的差异
  2. domain(领域层): 实现具体的业务逻辑和规则
  3. infrastructure(基础设施层): 提供具体的技术实现, 比如存储, 基础设施对业务保持透明
  4. interfaces(用户界面层): 向用户显示信息, 处理用户输入
  5. 以模块划分微服务, 便于添加或修改代码
  6. 此项目只是做了一些简单的分层, 完整分层可根据下面的文档进行调整
  7. 可在 GenerateJavaFileUtils.java 文件中的 main 方法修改自动生成的表名和包名

测试SQL

-- 导出 fresh-test 的数据库结构
DROP DATABASE IF EXISTS `fresh-test`;
CREATE DATABASE IF NOT EXISTS `fresh-test` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
USE `fresh-test`;
-- 导出  表 fresh-test.area 结构
DROP TABLE IF EXISTS `area`;
CREATE TABLE IF NOT EXISTS `area`
(
    `code`         mediumint(8) unsigned NOT NULL COMMENT '编码',
    `name`         varchar(10)           DEFAULT NULL COMMENT '名称',
    `parent_code`  mediumint(8) unsigned DEFAULT NULL COMMENT '父编码(0:省 其他:市县)',
    `full_name`    varchar(20)           DEFAULT NULL COMMENT '完整名称',
    `type`         tinyint(1) unsigned   DEFAULT NULL COMMENT '类型(1:省 2:市 3:县)',
    `lon`          decimal(9, 6)         DEFAULT NULL COMMENT '经度',
    `lat`          decimal(8, 6)         DEFAULT NULL COMMENT '纬度',
    `sort`         tinyint(3) unsigned   DEFAULT NULL COMMENT '排序',
    `weather_code` int(10) unsigned      DEFAULT NULL COMMENT '天气网编码',
    PRIMARY KEY (`code`) USING BTREE
) ENGINE = Aria
  DEFAULT CHARSET = utf8 PAGE_CHECKSUM=1 COMMENT='行政区划表';
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (110000, '北京', 0, '北京', 1, 0.000000, 0.000000, 1, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (120000, '天津', 0, '天津', 1, 0.000000, 0.000000, 3, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (130000, '河北', 0, '河北', 1, 0.000000, 0.000000, 9, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (140000, '山西', 0, '山西', 1, 0.000000, 0.000000, 10, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (150000, '内蒙古', 0, '内蒙古', 1, 0.000000, 0.000000, 8, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (210000, '辽宁', 0, '辽宁', 1, 0.000000, 0.000000, 7, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (220000, '吉林', 0, '吉林', 1, 0.000000, 0.000000, 6, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (230000, '黑龙江', 0, '黑龙江', 1, 0.000000, 0.000000, 5, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (310000, '上海', 0, '上海', 1, 0.000000, 0.000000, 2, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (320000, '江苏', 0, '江苏', 1, 0.000000, 0.000000, 19, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (330000, '浙江', 0, '浙江', 1, 0.000000, 0.000000, 21, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (340000, '安徽', 0, '安徽', 1, 0.000000, 0.000000, 22, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (350000, '福建', 0, '福建', 1, 0.000000, 0.000000, 23, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (360000, '江西', 0, '江西', 1, 0.000000, 0.000000, 24, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (370000, '山东', 0, '山东', 1, 0.000000, 0.000000, 12, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (410000, '河南', 0, '河南', 1, 0.000000, 0.000000, 18, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (420000, '湖北', 0, '湖北', 1, 0.000000, 0.000000, 20, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (430000, '湖南', 0, '湖南', 1, 0.000000, 0.000000, 25, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (440000, '广东', 0, '广东', 1, 0.000000, 0.000000, 28, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (450000, '广西', 0, '广西', 1, 0.000000, 0.000000, 30, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (460000, '海南', 0, '海南', 1, 0.000000, 0.000000, 31, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (500000, '重庆', 0, '重庆', 1, 0.000000, 0.000000, 4, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (510000, '四川', 0, '四川', 1, 0.000000, 0.000000, 27, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (520000, '贵州', 0, '贵州', 1, 0.000000, 0.000000, 26, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (530000, '云南', 0, '云南', 1, 0.000000, 0.000000, 29, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (540000, '西藏', 0, '西藏', 1, 0.000000, 0.000000, 14, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (610000, '陕西', 0, '陕西', 1, 0.000000, 0.000000, 11, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (620000, '甘肃', 0, '甘肃', 1, 0.000000, 0.000000, 16, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (630000, '青海', 0, '青海', 1, 0.000000, 0.000000, 15, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (640000, '宁夏', 0, '宁夏', 1, 0.000000, 0.000000, 17, 0);
INSERT INTO `area` (`code`, `name`, `parent_code`, `full_name`, `type`, `lon`, `lat`, `sort`, `weather_code`)
VALUES (650000, '新疆', 0, '新疆', 1, 0.000000, 0.000000, 13, 0);

打包命令

gradle build -Dfile=test

参考文档

  1. 聊一聊 DDD 应用的代码结构
  2. DDD 目录结构
  3. SOFA 应用架构详解
  4. SpringBoot 工程分层实战
  5. 凤凰架构
  6. Java 全栈知识体系
  7. SpringBoot 内置工具类
  8. Redis 命令补充
  9. 请求日志组件
  10. 通过注解自动生成 Spring 配置文件
  11. 如何做一个好的程序员
  12. Java知识
  13. 推荐程序员必知的四大神级学习网站
  14. 高级Java面试题
  15. 常用框架源码分析
MIT License Copyright (c) 2023 Ray Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

基于CQRS思想的微服务项目模版 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/853103174/cqrs-tpl.git
git@gitee.com:853103174/cqrs-tpl.git
853103174
cqrs-tpl
cqrs-tpl
master

搜索帮助