package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}; 
 | 
  
 | 
import org.springframework.web.bind.annotation.*; 
 | 
import ${jakartaPackage}.annotation.Resource; 
 | 
import org.springframework.validation.annotation.Validated; 
 | 
#if ($sceneEnum.scene == 1)import org.springframework.security.access.prepost.PreAuthorize;#end 
 | 
  
 | 
import io.swagger.v3.oas.annotations.tags.Tag; 
 | 
import io.swagger.v3.oas.annotations.Parameter; 
 | 
import io.swagger.v3.oas.annotations.Operation; 
 | 
  
 | 
import ${jakartaPackage}.validation.constraints.*; 
 | 
import ${jakartaPackage}.validation.*; 
 | 
import ${jakartaPackage}.servlet.http.*; 
 | 
import java.util.*; 
 | 
import java.io.IOException; 
 | 
  
 | 
import ${PageParamClassName}; 
 | 
import ${PageResultClassName}; 
 | 
import ${CommonResultClassName}; 
 | 
import ${BeanUtils}; 
 | 
import static ${CommonResultClassName}.success; 
 | 
  
 | 
import ${ExcelUtilsClassName}; 
 | 
  
 | 
import ${ApiAccessLogClassName}; 
 | 
import static ${OperateTypeEnumClassName}.*; 
 | 
  
 | 
import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; 
 | 
import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; 
 | 
## 特殊:主子表专属逻辑 
 | 
#foreach ($subTable in $subTables) 
 | 
import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO; 
 | 
#end 
 | 
import ${basePackage}.module.${table.moduleName}.service.${table.businessName}.${table.className}Service; 
 | 
  
 | 
@Tag(name = "${sceneEnum.name} - ${table.classComment}") 
 | 
@RestController 
 | 
##二级的 businessName 暂时不算在 HTTP 路径上,可以根据需要写 
 | 
@RequestMapping("/${table.moduleName}/${simpleClassName_strikeCase}") 
 | 
@Validated 
 | 
public class ${sceneEnum.prefixClass}${table.className}Controller { 
 | 
  
 | 
    @Resource 
 | 
    private ${table.className}Service ${classNameVar}Service; 
 | 
  
 | 
    @PostMapping("/create") 
 | 
    @Operation(summary = "创建${table.classComment}") 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')") 
 | 
#end 
 | 
    public CommonResult<${primaryColumn.javaType}> create${simpleClassName}(@Valid @RequestBody ${sceneEnum.prefixClass}${table.className}SaveReqVO createReqVO) { 
 | 
        return success(${classNameVar}Service.create${simpleClassName}(createReqVO)); 
 | 
    } 
 | 
  
 | 
    @PutMapping("/update") 
 | 
    @Operation(summary = "更新${table.classComment}") 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')") 
 | 
#end 
 | 
    public CommonResult<Boolean> update${simpleClassName}(@Valid @RequestBody ${sceneEnum.prefixClass}${table.className}SaveReqVO updateReqVO) { 
 | 
        ${classNameVar}Service.update${simpleClassName}(updateReqVO); 
 | 
        return success(true); 
 | 
    } 
 | 
  
 | 
    @DeleteMapping("/delete") 
 | 
    @Operation(summary = "删除${table.classComment}") 
 | 
    @Parameter(name = "id", description = "编号", required = true) 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')") 
 | 
#end 
 | 
    public CommonResult<Boolean> delete${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { 
 | 
        ${classNameVar}Service.delete${simpleClassName}(id); 
 | 
        return success(true); 
 | 
    } 
 | 
  
 | 
    @GetMapping("/get") 
 | 
    @Operation(summary = "获得${table.classComment}") 
 | 
    @Parameter(name = "id", description = "编号", required = true, example = "1024") 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") 
 | 
#end 
 | 
    public CommonResult<${sceneEnum.prefixClass}${table.className}RespVO> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { 
 | 
        ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id); 
 | 
        return success(BeanUtils.toBean(${classNameVar}, ${sceneEnum.prefixClass}${table.className}RespVO.class)); 
 | 
    } 
 | 
  
 | 
#if ( $table.templateType != 2 ) 
 | 
    @GetMapping("/page") 
 | 
    @Operation(summary = "获得${table.classComment}分页") 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") 
 | 
#end 
 | 
    public CommonResult<PageResult<${sceneEnum.prefixClass}${table.className}RespVO>> get${simpleClassName}Page(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO) { 
 | 
        PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(pageReqVO); 
 | 
        return success(BeanUtils.toBean(pageResult, ${sceneEnum.prefixClass}${table.className}RespVO.class)); 
 | 
    } 
 | 
  
 | 
## 特殊:树表专属逻辑(树不需要分页接口) 
 | 
#else 
 | 
    @GetMapping("/list") 
 | 
    @Operation(summary = "获得${table.classComment}列表") 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") 
 | 
#end 
 | 
    public CommonResult<List<${sceneEnum.prefixClass}${table.className}RespVO>> get${simpleClassName}List(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO) { 
 | 
        List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO); 
 | 
        return success(BeanUtils.toBean(list, ${sceneEnum.prefixClass}${table.className}RespVO.class)); 
 | 
    } 
 | 
  
 | 
#end 
 | 
    @GetMapping("/export-excel") 
 | 
    @Operation(summary = "导出${table.classComment} Excel") 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:export')") 
 | 
#end 
 | 
    @ApiAccessLog(operateType = EXPORT) 
 | 
#if ( $table.templateType != 2 ) 
 | 
    public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO, 
 | 
              HttpServletResponse response) throws IOException { 
 | 
        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); 
 | 
        List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}Page(pageReqVO).getList(); 
 | 
        // 导出 Excel 
 | 
        ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${sceneEnum.prefixClass}${table.className}RespVO.class, 
 | 
                        BeanUtils.toBean(list, ${sceneEnum.prefixClass}${table.className}RespVO.class)); 
 | 
    } 
 | 
## 特殊:树表专属逻辑(树不需要分页接口) 
 | 
#else 
 | 
    public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO, 
 | 
              HttpServletResponse response) throws IOException { 
 | 
        List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO); 
 | 
        // 导出 Excel 
 | 
        ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${table.className}RespVO.class, 
 | 
                        BeanUtils.toBean(list, ${table.className}RespVO.class)); 
 | 
    } 
 | 
#end 
 | 
  
 | 
## 特殊:主子表专属逻辑 
 | 
#foreach ($subTable in $subTables) 
 | 
#set ($index = $foreach.count - 1) 
 | 
#set ($subSimpleClassName = $subSimpleClassNames.get($index)) 
 | 
#set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 
 | 
#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 
 | 
#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 
 | 
#set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) 
 | 
#set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) 
 | 
#set ($subClassNameVar = $subClassNameVars.get($index)) 
 | 
    // ==================== 子表($subTable.classComment) ==================== 
 | 
  
 | 
## 情况一:MASTER_ERP 时,需要分查询页子表 
 | 
#if ( $table.templateType == 11 ) 
 | 
    @GetMapping("/${subSimpleClassName_strikeCase}/page") 
 | 
    @Operation(summary = "获得${subTable.classComment}分页") 
 | 
    @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}") 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") 
 | 
#end 
 | 
    public CommonResult<PageResult<${subTable.className}DO>> get${subSimpleClassName}Page(PageParam pageReqVO, 
 | 
                                                                                        @RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { 
 | 
        return success(${classNameVar}Service.get${subSimpleClassName}Page(pageReqVO, ${subJoinColumn.javaField})); 
 | 
    } 
 | 
  
 | 
## 情况二:非 MASTER_ERP 时,需要列表查询子表 
 | 
#else 
 | 
    #if ( $subTable.subJoinMany ) 
 | 
    @GetMapping("/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}") 
 | 
    @Operation(summary = "获得${subTable.classComment}列表") 
 | 
    @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}") 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") 
 | 
#end 
 | 
    public CommonResult<List<${subTable.className}DO>> get${subSimpleClassName}ListBy${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { 
 | 
        return success(${classNameVar}Service.get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField})); 
 | 
    } 
 | 
  
 | 
    #else 
 | 
    @GetMapping("/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}") 
 | 
    @Operation(summary = "获得${subTable.classComment}") 
 | 
    @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}") 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") 
 | 
#end 
 | 
    public CommonResult<${subTable.className}DO> get${subSimpleClassName}By${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { 
 | 
        return success(${classNameVar}Service.get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField})); 
 | 
    } 
 | 
  
 | 
    #end 
 | 
#end 
 | 
## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 
 | 
#if ( $table.templateType == 11 ) 
 | 
    @PostMapping("/${subSimpleClassName_strikeCase}/create") 
 | 
    @Operation(summary = "创建${subTable.classComment}") 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')") 
 | 
#end 
 | 
    public CommonResult<${subPrimaryColumn.javaType}> create${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) { 
 | 
        return success(${classNameVar}Service.create${subSimpleClassName}(${subClassNameVar})); 
 | 
    } 
 | 
  
 | 
    @PutMapping("/${subSimpleClassName_strikeCase}/update") 
 | 
    @Operation(summary = "更新${subTable.classComment}") 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')") 
 | 
#end 
 | 
    public CommonResult<Boolean> update${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) { 
 | 
        ${classNameVar}Service.update${subSimpleClassName}(${subClassNameVar}); 
 | 
        return success(true); 
 | 
    } 
 | 
  
 | 
    @DeleteMapping("/${subSimpleClassName_strikeCase}/delete") 
 | 
    @Parameter(name = "id", description = "编号", required = true) 
 | 
    @Operation(summary = "删除${subTable.classComment}") 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')") 
 | 
#end 
 | 
    public CommonResult<Boolean> delete${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) { 
 | 
        ${classNameVar}Service.delete${subSimpleClassName}(id); 
 | 
        return success(true); 
 | 
    } 
 | 
  
 | 
    @GetMapping("/${subSimpleClassName_strikeCase}/get") 
 | 
    @Operation(summary = "获得${subTable.classComment}") 
 | 
    @Parameter(name = "id", description = "编号", required = true) 
 | 
#if ($sceneEnum.scene == 1) 
 | 
    @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") 
 | 
#end 
 | 
    public CommonResult<${subTable.className}DO> get${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) { 
 | 
        return success(${classNameVar}Service.get${subSimpleClassName}(id)); 
 | 
    } 
 | 
  
 | 
#end 
 | 
#end 
 | 
} 
 |