跳转到内容

多元版 · 源码结构目录

为了让项目更加方便检测出代码规范的问题,我们在项目中使用的是阿里的规范(详细可以看https://github.com/alibaba/p3c 这里面的Java开发手册(嵩山版).pdf),同时使用 Alibaba Java Coding Guidelines 这款插件进行规约扫描

我们先来看下规范当中的目录结构

阿里应用分层

  • 开放 API 层:可直接封装 Service 接口暴露成 RPC 接口;通过 Web 封装成 http 接口;网关控制层等。
  • 终端显示层:各个端的模板渲染并执行显示的层。当前主要是 velocity 渲染,JS 渲染,JSP 渲染,移 动端展示等。
  • Web 层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。
  • Service 层:相对具体的业务逻辑服务层。
  • Manager 层:通用业务处理层,它有如下特征:
    • 1) 对第三方平台封装的层,预处理返回结果及转化异常信息,适配上层接口。
    • 2) 对 Service 层通用能力的下沉,如缓存方案、中间件通用处理。
    • 3) 与 DAO 层交互,对多个 DAO 的组合复用。
  • DAO 层:数据访问层,与底层 MySQL、Oracle、Hbase、OB 等进行数据交互。
  • 第三方服务:包括其它部门 RPC 服务接口,基础平台,其它公司的 HTTP 接口,如淘宝开放平台、支 付宝付款服务、高德地图服务等。
  • 外部数据接口:外部(应用)数据存储服务提供的接口,多见于数据迁移场景中。

以上是阿里规范当中的目录结构,我们也有自己的目录结构

应用分层

  • VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。
  • DTO(Data Transfer Object):数据传输对象,前端像后台进行传输的对象,类似于param。
  • BO(Business Object):业务对象,内部业务对象,只在内部传递,不对外进行传递。
  • Model:模型层,此对象与数据库表结构一一对应,通过 Mapper 层向上传输数据源对象。
  • Controller:主要是对外部访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。为了简单起见,一些与事务无关的代码也在这里编写。
  • FeignClient:由于微服务之间存在互相调用,这里是内部请求的接口。
  • Controller:主要是对内部访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。为了简单起见,一些与事务无关的代码也在这里编写。
  • Service 层:相对具体的业务逻辑服务层。
  • Manager 层:通用业务处理层,它有如下特征:
    • 1) 对第三方平台封装的层,预处理返回结果及转化异常信息,适配上层接口。
    • 2) 对 Service 层通用能力的下沉,如缓存方案、中间件通用处理。
    • 3) 与 DAO 层交互,对多个 DAO 的组合复用。
  • Mapper持久层:数据访问层,与底层 MySQL进行数据交互。
  • Task层:由于每个服务之间会存在定时任务,比如定时确认收货,定时将活动失效等情况,这里面的Task实际上连接的是xxl-job(具体可以查看 https://github.com/xuxueli/xxl-job )进行任务调度。
  • Listener:监听 RocketMQ 进行处理,有时候会监听easyexcel相关数据。

关于FeignClient,由于微服务之间存在互相调用,Feign 是http协议,理论上是为了解耦,而实际上提供方接口进行修改,调用方却没有进行修改的时候,会造成异常,所以我们抽取出来。还有就是对内暴露的接口,是很多地方都公用的,所以我们还将接口抽取了出了一个模块,方便引用。可以看到mall4cloud-api这个模块下是所有对内feign接口的信息。

mall4cloud
├── mall4cloud-gateway -- 网关服务
├── mall4cloud-auth -- 统一认证授权服务
├── mall4cloud-common -- 公共能力模块
│ ├── mall4cloud-common-ai -- AI 相关公共代码
│ ├── mall4cloud-common-cache -- 缓存相关公共代码
│ ├── mall4cloud-common-core -- 公共模块核心
│ ├── mall4cloud-common-dada -- 达达配送公共代码
│ ├── mall4cloud-common-database -- 数据库连接相关公共代码
│ ├── mall4cloud-common-jushuitan -- 聚水潭公共代码
│ ├── mall4cloud-common-leaf -- 基于美团 leaf 的生成 id 服务
│ ├── mall4cloud-common-mongodb -- mongodb 相关公共代码
│ ├── mall4cloud-common-order -- 订单相关公共代码
│ ├── mall4cloud-common-product -- 商品相关公共代码
│ ├── mall4cloud-common-rocketmq -- rocketmq 相关公共代码
│ ├── mall4cloud-common-security -- 安全相关公共代码
│ └── mall4cloud-common-sharding-proxy -- 分库分表(可选历史能力)
├── mall4cloud-api -- 对内 API 契约模块
│ ├── mall4cloud-api-admin -- 店铺、平台后台对内接口
│ ├── mall4cloud-api-auth -- 授权对内接口
│ ├── mall4cloud-api-biz -- biz,客服对内接口
│ ├── mall4cloud-api-flow -- 数据分析对内接口
│ ├── mall4cloud-api-group -- 拼团对内接口
│ ├── mall4cloud-api-marketing -- 营销活动对内接口
│ ├── mall4cloud-api-order -- 订单和配送对内接口
│ ├── mall4cloud-api-payment -- 支付对内接口
│ ├── mall4cloud-api-product -- 商品对内接口
│ ├── mall4cloud-api-search -- 搜索对内接口
│ ├── mall4cloud-api-seckill -- 秒杀对内接口
│ └── mall4cloud-api-user -- 用户对内接口
├── mall4cloud-admin -- 商家、平台、saas后台接口服务
├── mall4cloud-biz -- 通用业务服务(文件、通知、IM 等)
├── mall4cloud-product -- 商品服务
├── mall4cloud-search -- 搜索服务
├── mall4cloud-user -- 用户服务
├── mall4cloud-order -- 订单服务
├── mall4cloud-marketing -- 营销服务
├── mall4cloud-payment -- 支付服务
├── mall4cloud-group -- 拼团服务
├── mall4cloud-seckill -- 秒杀服务
├── mall4cloud-flow -- 数据分析服务
├── db -- MySQL 增量脚本
├── es -- Elasticsearch 增量脚本
└── system-test -- 测试目录
├── dist # 构建相关
├── src # 源代码
│ ├── components # 全局公用组件
│ ├── hybrid # webview本地页面
│ ├── js_sdk # 外部js
│ ├── lang # 国际化 language
│ ├── package-activities # 活动分包
│ ├── package-refund # 退款分包
│ ├── package-shop # 店铺分包
│ ├── package-user # 用户分包
│ ├── pages # 主包
│ ├── router # 路由配置
│ ├── static # 静态资源
│ ├── uni_modules # uni第三方组件
│ ├── utils # 全局公用方法
│ ├── wxs # wxs
│ ├── app.css # 全局样式
│ ├── App.vue # 入口页面
│ ├── main.js # 入口文件 加载组件 初始化等
│ ├── manifest.json # uniapp 项目配置
│ ├── pages.json # 页面配置文件
│ ├── manifest.json # uniapp 项目配置
│ ├── popup.scss # 全局弹窗样式
│ └── uni.scss # uni样式变量
├── .editorconfig # 编辑器配置
├── .env.xxx # 环境变量配置
├── .eslintxxx.xx # eslint 相关配置
├── .gitignore # git 忽略清单
├── .npmrc # npm 配置
├── Dockerfile # docker部署配置
├── index.html # html 模板
├── nginx.conf # nginx 配置
├── package.json # package.json
├── tsconfig.json # ts 编译配置
└── vite.config.js # vite 配置文件
├── dist # 构建相关
├── src # 源代码
│ ├── assets # 图片静态资源
│ ├── components # 全局公用组件
│ ├── lang # 国际化 language
│ ├── layout # 全局 layout
│ ├── login # 登录相关页面
│ ├── plugins # 全局公用方法、插件
│ ├── router # 路由
│ ├── stores # 全局 store管理
│ ├── styles # 全局样式
│ ├── views # views 所有页面
│ ├── App.vue # 入口页面
│ ├── main.js # 入口文件 加载组件 初始化等
│ └── style.scss # 全局样式
├── .editorconfig # 编辑器配置
├── .env.xxx # 环境变量配置
├── .eslintxxx.xx # eslint 相关配置
├── .gitignore # git 忽略清单
├── .npmrc # npm 配置
├── Dockerfile # docker部署配置
├── index.html # html 模板
├── nginx.conf # nginx 配置
├── package.json # package.json
├── tsconfig.json # ts 编译配置
└── vite.config.js # vite 配置文件

mall4cloud-admin saas 后台

mall4cloud-admin
├── public -- 静态资源
├── src -- 主目录
│ ├── api -- 接口
│ ├── assets -- 静态资源
│ ├── auto-import -- 自动导入
│ ├── components -- 组件
│ ├── directive -- 指令
│ ├── icons -- 图标
│ ├── lang -- 国际化
│ ├── layout -- 布局
│ ├── plugins -- 插件
│ ├── router -- 路由
│ ├── stores -- 状态管理
│ ├── styles -- 公共样式目录
│ ├── utils -- 工具类
│ ├── views -- 页面
│ ├── App.vue -- 入口文件
│ ├── main.js -- 入口文件
│ └── permission.js -- 权限管理
├── .editorconfig -- IDE编码风格配置文件
├── .env.development -- 环境配置文件
├── .env.production -- 环境配置文件
├── .gitignore -- git忽略清单
├── .npmrc -- npm配置
├── Dockerfile -- dockerfile
├── README.md -- 项目说明
├── index.html -- 入口文件
├── jsconfig.json -- jsconfig配置文件
├── nginx.conf -- nginx配置文件
├── package.json -- 项目依赖
└── vite.config.js -- vite配置文件

mall4cloud-multishop 商家端后台

mall4cloud-multishop
├── .husky -- git钩子
├── public -- 静态资源
├── src -- 主目录
│ ├── api -- 接口
│ ├── assets -- 静态资源
│ ├── auto-import -- 自动导入
│ ├── common -- 公共
│ ├── components -- 组件
│ ├── directive -- 指令
│ ├── hooks -- 钩子
│ ├── icons -- 图标
│ ├── lang -- 国际化
│ ├── layout -- 布局
│ ├── plugins -- 插件
│ ├── router -- 路由
│ ├── stores -- 状态管理
│ ├── styles -- 公共样式目录
│ ├── utils -- 工具类
│ ├── views -- 页面
│ ├── App.vue -- 入口文件
│ ├── main.js -- 入口文件
│ └── permission.js -- 权限管理
├── .editorconfig -- IDE编码风格配置文件
├── .env.development -- 环境配置文件
├── .env.production -- 环境配置文件
├── .eslintignore -- eslint忽略清单
├── .eslintrc.cjs -- eslint配置文件
├── .gitignore -- git忽略清单
├── .npmrc -- npm配置
├── Dockerfile -- dockerfile
├── README.md -- 项目说明
├── index.html -- 入口文件
├── nginx.conf -- nginx配置文件
├── package.json -- 项目依赖
├── tsconfig.json -- typescript配置文件
└── vite.config.js -- vite配置文件

mall4cloud-platform 平台端后台

mall4cloud-platform
├── .husky -- git钩子
├── public -- 静态资源
├── src -- 主目录
│ ├── api -- 接口
│ ├── assets -- 静态资源
│ ├── auto-import -- 自动导入
│ ├── common -- 公共
│ ├── components -- 组件
│ ├── directive -- 指令
│ ├── hooks -- 钩子
│ ├── icons -- 图标
│ ├── lang -- 国际化
│ ├── layout -- 布局
│ ├── plugins -- 插件
│ ├── router -- 路由
│ ├── stores -- 状态管理
│ ├── styles -- 公共样式目录
│ ├── utils -- 工具类
│ ├── views -- 页面
│ ├── App.vue -- 入口文件
│ ├── main.js -- 入口文件
│ └── permission.js -- 权限管理
├── .editorconfig -- IDE编码风格配置文件
├── .env.development -- 环境配置文件
├── .env.production -- 环境配置文件
├── .gitignore -- git忽略清单
├── .npmrc -- npm配置
├── Dockerfile -- dockerfile
├── README.md -- 项目说明
├── index.html -- 入口文件
├── jsconfig.json -- jsconfig配置文件
├── nginx.conf -- nginx配置文件
├── package.json -- 项目依赖
└── vite.config.js -- vite配置文件
├── .husky --git钩子
├── src --主目录
│ ├── components --组件
│ ├── package-order --订单分包
│ ├── package-prod --商品分包
│ ├── package-settings --店铺设置分包
│ ├── pages --主包
│ ├── static --静态资源
│ ├── stores --状态管理
│ ├── uni_modules --第三方组件
│ ├── utils --工具类
│ ├── wxs --wxs
│ ├── App.vue --入口文件
│ ├── app.scss --全局样式
│ ├── main.js --入口文件
│ ├── manifest.json --项目配置
│ ├── pages.json --页面配置
│ └── uni.scss --样式变量
├── .editorconfig --IDE编码风格配置文件
├── .env.development --环境配置文件
├── .env.production --环境配置文件
├── .env.testing --环境配置文件
├── .eslintignore --eslint忽略清单
├── .eslintrc.cjs --eslint配置
├── .gitignore --git忽略清单
├── .npmrc --npm配置
├── Dockerfile --dockerfile
├── README.md --项目说明
├── index.html --入口文件
├── jsconfig.json --jsconfig配置
├── nginx.conf --nginx配置
├── package.json --项目依赖
├── tsconfig.json --typescript配置
└── vite.config.js --vite配置文件