为避免新增与修改请求可以任意值的方法之一src/main/resources/vm/java/controller.java.vmpackage ${packageName}.controller; import java.util.List; import jakarta.servlet.http.HttpServletResponse; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import ${packageName}.domain.${ClassName}; import ${packageName}.service.I${ClassName}Service; import com.ruoyi.common.utils.poi.ExcelUtil; #if($table.crud || $table.sub) import com.ruoyi.common.core.page.TableDataInfo; #elseif($table.tree) #end /** * ${functionName}Controller * * author ${author} * date ${datetime} */ RestController RequestMapping(/${moduleName}/${businessName}) public class ${ClassName}Controller extends BaseController { Autowired private I${ClassName}Service ${className}Service; /** * 查询${functionName}列表 */ PreAuthorize(ss.hasPermi(${permissionPrefix}:list)) GetMapping(/list) #if($table.crud || $table.sub) public TableDataInfo list(${ClassName} ${className}) { startPage(); List${ClassName} list ${className}Service.select${ClassName}List(${className}); return getDataTable(list); } #elseif($table.tree) public AjaxResult list(${ClassName} ${className}) { List${ClassName} list ${className}Service.select${ClassName}List(${className}); return success(list); } #end /** * 导出${functionName}列表 */ PreAuthorize(ss.hasPermi(${permissionPrefix}:export)) Log(title ${functionName}, businessType BusinessType.EXPORT) PostMapping(/export) public void export(HttpServletResponse response, ${ClassName} ${className}) { List${ClassName} list ${className}Service.select${ClassName}List(${className}); ExcelUtil${ClassName} util new ExcelUtil${ClassName}(${ClassName}.class); util.exportExcel(response, list, ${functionName}数据); } /** * 获取${functionName}详细信息 */ PreAuthorize(ss.hasPermi(${permissionPrefix}:query)) GetMapping(value /{${pkColumn.javaField}}) public AjaxResult getInfo(PathVariable(${pkColumn.javaField}) ${pkColumn.javaType} ${pkColumn.javaField}) { return success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField})); } /** * 新增${functionName} */ PreAuthorize(ss.hasPermi(${permissionPrefix}:add)) Log(title ${functionName}, businessType BusinessType.INSERT) PostMapping public AjaxResult add(RequestBody ${ClassName} ${className}) { String username getUsername(); #foreach ($column in $columns) #if($column.javaField createBy || $column.javaField updateBy) ${className}.set${column.capJavaField}(username); #end #end return toAjax(${className}Service.insert${ClassName}(${className})); } /** * 修改${functionName} */ PreAuthorize(ss.hasPermi(${permissionPrefix}:edit)) Log(title ${functionName}, businessType BusinessType.UPDATE) PutMapping public AjaxResult edit(RequestBody ${ClassName} ${className}) { #foreach ($column in $columns) #if($column.javaField updateBy) ${className}.set${column.capJavaField}(getUsername()); #end #end return toAjax(${className}Service.update${ClassName}(${className})); } /** * 删除${functionName} */ PreAuthorize(ss.hasPermi(${permissionPrefix}:remove)) Log(title ${functionName}, businessType BusinessType.DELETE) DeleteMapping(/{${pkColumn.javaField}s}) public AjaxResult remove(PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) { return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s)); } }src/main/resources/vm/java/serviceImpl.java.vmpackage ${packageName}.service.impl; import java.util.List; #foreach ($column in $columns) #if($column.javaField createTime || $column.javaField updateTime) import com.ruoyi.common.utils.DateUtils; #break #end #end import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; #if($table.sub) import java.util.ArrayList; import com.ruoyi.common.utils.StringUtils; import org.springframework.transaction.annotation.Transactional; import ${packageName}.domain.${subClassName}; #end import ${packageName}.mapper.${ClassName}Mapper; import ${packageName}.domain.${ClassName}; import ${packageName}.service.I${ClassName}Service; /** * ${functionName}Service业务层处理 * * author ${author} * date ${datetime} */ Service public class ${ClassName}ServiceImpl implements I${ClassName}Service { Autowired private ${ClassName}Mapper ${className}Mapper; /** * 查询${functionName} * * param ${pkColumn.javaField} ${functionName}主键 * return ${functionName} */ Override public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) { return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); } /** * 查询${functionName}列表 * * param ${className} ${functionName} * return ${functionName} */ Override public List${ClassName} select${ClassName}List(${ClassName} ${className}) { return ${className}Mapper.select${ClassName}List(${className}); } /** * 新增${functionName} * * param ${className} ${functionName} * return 结果 */ #if($table.sub) Transactional #end Override public int insert${ClassName}(${ClassName} ${className}) { ${ClassName} row ${className}; #foreach ($column in $columns) #if($column.javaField createTime || $column.javaField updateTime) row.set${column.capJavaField}(DateUtils.getNowDate()); #elseif($column.javaField ! $pkColumn.javaField) row.set${column.capJavaField}(${className}.get${column.capJavaField}()); #end #end #if($table.sub) int rows ${className}Mapper.insert${ClassName}(row); insert${subClassName}(${className}); return rows; #else return ${className}Mapper.insert${ClassName}(${className}); #end } /** * 修改${functionName} * * param ${className} ${functionName} * return 结果 */ #if($table.sub) Transactional #end Override public int update${ClassName}(${ClassName} ${className}) { ${ClassName} row ${className}; #foreach ($column in $columns) #if($column.javaField updateTime) row.setUpdateTime(DateUtils.getNowDate()); #elseif($column.javaField ! createTime $column.javaField ! createBy $column.javaField ! $pkColumn.javaField) row.set${column.capJavaField}(${className}.get${column.capJavaField}()); #end #end #if($table.sub) ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}()); insert${subClassName}(${className}); #end return ${className}Mapper.update${ClassName}(row); } /** * 批量删除${functionName} * * param ${pkColumn.javaField}s 需要删除的${functionName}主键 * return 结果 */ #if($table.sub) Transactional #end Override public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s) { #if($table.sub) ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s); #end return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s); } /** * 删除${functionName}信息 * * param ${pkColumn.javaField} ${functionName}主键 * return 结果 */ #if($table.sub) Transactional #end Override public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) { #if($table.sub) ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField}); #end return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); } #if($table.sub) /** * 新增${subTable.functionName}信息 * * param ${className} ${functionName}对象 */ public void insert${subClassName}(${ClassName} ${className}) { List${subClassName} ${subclassName}List ${className}.get${subClassName}List(); ${pkColumn.javaType} ${pkColumn.javaField} ${className}.get${pkColumn.capJavaField}(); if (StringUtils.isNotNull(${subclassName}List)) { List${subClassName} list new ArrayList${subClassName}(); for (${subClassName} ${subclassName} : ${subclassName}List) { ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField}); list.add(${subclassName}); } if (list.size() 0) { ${className}Mapper.batch${subClassName}(list); } } } #end }