这些术语是软件开发中常见的命名规范,表示不同的设计模式或代码风格。以下是它们的含义:

  1. PO:Persistent Object(永久对象),对应数据库的一列,Mapper查询出来的是PO,然后EXE会封装成BO
  2. BO:Business Object(业务对象),通常指封装业务逻辑的Java类
  3. DTO:Data Transfer Object(数据传输对象),调用其他项目的方法时使用
  4. VO:View Object(视图对象),后端Controller的输入输出都是VO
模块 功能 输入 输出 备注
infrastructure中
mplugs Mapper PO、平铺 PO 不用自己写
bizexe Exe Qry(读方法)、Cmd(写方法)、平铺 BO 可以直接使用LambdaQueryWarrper
app Service Qry(读方法)、Cmd(写方法)、平铺 BO 调用一个或者多个Exe
adapter Controller ArgVO ResultVO 调用一个或者多个Contoller
功能 作用
start 项目启动模块 项目的配置文件
infrastructure 基础设施模块 自动生成的PO、Mapper
demain 领域对象模块 定义BO
bizexe 基础查询模块 1. 通过LambdaQueryWapper查询基础的PO数据
  1. 转化成BO数据 | | app | 核心业务模块 | 调用一个或多个exe查询数据 | | adapter | 接口暴露模块 | 最上层的模块,用户可以用过HTTP访问
  2. 定义GET、POST请求
  3. 在argrst中定义入参VO
  4. 在entiry中定义出参VO |

注意事项:

  1. 出参VO每个字段可以添加注解方便Apifox生成文档
@Schema(description = "企业名称")    // 字段中文含义
@JsonProperty(value = "name")       // json中的key 
  1. push到test分支后,可以在apifox中同步一下,从而完成导入新接口,进行测试

Untitled

adapter(controller)

@PostMapping("/getPromoterById/{id}")
@Operation(summary = "根据ID查询推广员")
public GateWayResponse<newPromoterVO> getPromoterById(
    @YPHCurrentAdmin YPHAdminInfo adminInfo,
    @PathVariable Long id
) {
    PromoterItemBO promoterBO = promoterQueryService.getPromoterById(id);
    if(Objects.isNull(promoterBO)) {
        GateWayResponse<newPromoterVO> result = GateWayResponse.buildError(null);
        result.setMessage("用户不存在");
        return result;
    }
    newPromoterVO promoterVO = new newPromoterVO();
    promoterVO.setName(promoterBO.getName());
    promoterVO.setDescription(promoterBO.getDescription());
    return GateWayResponse.buildSuccess(promoterVO);
}

app**(service)**