# GeoPE_Server **Repository Path**: ycj211/GeoPE_Server ## Basic Information - **Project Name**: GeoPE_Server - **Description**: 生态处理服务端 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-03-26 - **Last Updated**: 2021-10-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # `geope` ## 项目介绍 `geope`项目致力于打造一个完整的软件生态系统。 ### 项目组织结构 ``` lua geope ├── geope- business -- geope后台业务代码。 ├ ├── feature -- 与项目管理对接的相关业务代码。 ├ ├── scm ├ ├ └──gitlab -- 与GitLab对接的相关业务代码。 ├ ├── build ├ ├ └──jenkins -- 与Jenkins对接的相关业务代码。 ├ ├── quality ├ ├── testmanage -- 与测试管理相关的业务代码。 ├ ├ └──sonarqube -- 与SonarQube对接的相关代码。 ├ └── deploy -- 与部署对接的相关业务代码。 ├── geope - common -- 通用工具类及代码。 ├── geope - demo -- geope框架搭建时的测试代码。 ├── geope - mbg -- MyBatisGenerator生成的数据库操作代码。 └── geope - security -- geope权限管理模块。 ``` ### 子模块内结构 ``` lua scm.gitlab ├── config -- 子模块配置类代码。 ├── constant -- 子模块常量代码。 ├── controller -- rest接口封装,主要是对访问控制进行转发,各类基本参数校验。 ├── dao -- 数据处理,数据库增删改查。 ├── model -- 基础模型对象。 ├── service -- 相对具体的业务逻辑服务层。业务逻辑实现层。 ├── utils -- 子模块工具类。 └── vo -- 显示层对象。 ``` ### 子模块内各层间调用关系 ![各层调用关系图](document/resource/RelationshipBetweenLevels.png) > `model`与`vo`解释 - `model`基础对象,可以是从开源工具获取的第一手数据封装而成的对象。也可以是与数据库字段一一对应的对象。 - `vo`(View Object)展示对象,可以是一张表里的某个字段,也可以是多张表里字段的整合,对象里的字段根据需求决定,前端展示什么,它就有什么。 - 例1:某个表有100个字段,那么`model`就是有100个属性的对象。如果前端只需要展示其中10个字段,我们将整个`model`返回给前端,不仅 浪费带宽、空间而且还不安全。这时候就需要创建一个包含10个字段的对象,用来返回给前端,这就是`vo`。 - 例2:用户表有name,sex,password字段,返回前端展示的时候不可能把密码也展示出来,所以`model`对象和`vo`对象的字段分别为: ``` model:name,sex,password vo:name, sex ``` - 例3:前端请求失败的提示,可以放在`vo`里。 ### 编码规约 > 通过Jetbrains官方仓库安装,安装alibaba p3c代码规范插件,当出现编码不规范情况插件会有提示,需参考提示修改。 - 首先,打开 Settings >> Plugins >> Browse repositories... ![插件安装图](document/resource/IDEAInstallPlugin.png) - 然后,在搜索框输入`alibaba`即可看到`Alibaba Java Code Guidelines`插件,点击`Install`进行安装。 ![插件安装图](document/resource/IDEAInstallPlugin1.png) - 最后,重启`IDE`生效。 ### 常用编码规约说明 > `package`名全部用小写。 > 类名使用 `UpperCamelCase` 风格,遵从驼峰形式,各单词首字母大写。 - 对于 `Service` 和 `DAO` 类,基于 `SOA` 的理念,暴露出来的服务一定是接口,内部的实现类用`Impl` 的后缀与接口区别。 - 例子:`CacheServiceImpl` 实现 `CacheService` 接口。 > 各层命名规约 - `Model`层数据对象:`xxxModel.java`。 - `Vo`层展示对象:`xxVo.java`,xx一般为网页模块名。 - `Service`层类命名:接口命名`xxxService.java`,实现类命名`xxxServiceImpl.java`。 - `Controller`层命名:`xxxController.java`。 > 方法名、参数名、成员变量、局部变量都统一使用 `lowerCamelCase` 风格,必须遵从驼峰形式。 - 例如:`localValue` / `getHttpMessage()` / `inputUserId` > 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。 > 注释规约 - 类、类属性、类方法的注释必须使用`Javadoc`规范,注明`类描述`、`创建者`、`创建时间`。`IDEA`等编辑器中可以设置`Javadoc`注释模板。 例如: ```java /** * @ClassName TestServiceImpl * @Description: 精简描述类功能 * @Author jstao * @Date 2020/3/27 * @Version V1.0 **/ @Service public class TestServiceImpl implements TestService { } ``` - 方法内部单行注释,在被注释语句上方另起一行,使用`//`注释;方法内部多行注释使用 ``` /* * 这是示例注释TODO */ ``` 注意与代码对齐。 - 注释的双斜线与注释内容之间有且仅有一个空格。 正例: ```html // 这是示例注释,请注意在双斜线之后有一个空格 String param = new String(); ``` > 代码格式 - 采用4个空格缩进,禁止使用`tab`字符。 ``` 说明:如果使用 tab 缩进,必须设置1 个tab 为4 个空格。IDEA 设置 tab 为4 个空格时,请勿勾选 Use tab character;而在 eclipse 中, 必须勾选 insert spaces for tabs。 ``` - 如果是大括号内为空,则简洁地写成`{}`即可,大括号中间无需换行和空格;如果是非 空代码块则: ```html 1) 左大括号前不换行。 2) 左大括号后换行。 3) 右大括号前换行。 4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行 ``` - `if/for/while/switch/do` 等保留字与括号之间加个空格。 - 二目、三目运算符的左右两边都需要加一个空格。 - 代码格式例子 ``` public static void main(String[] args) { // 缩进4个空格 String say = "hello"; // 运算符的左右必须有一个空格 int flag = 0; // 关键词if与括号之间必须有一个空格,括号内的f与左括号,0与右括号不需要空格 if (flag == 0) { System.out.println(say); } // 左大括号前加空格且不换行;左大括号后换行 if (flag == 1) { System.out.println("world"); // 右大括号前换行,右大括号后有else,不用换行 } else { System.out.println("ok"); // 在右大括号后直接结束,则必须换行 } } ```