初始化项目

This commit is contained in:
2026-04-21 16:12:04 +08:00
parent 4541af2c63
commit f9d96473da
443 changed files with 36365 additions and 19 deletions

View File

@@ -0,0 +1,91 @@
package ${table.packageName}.${subPackageName};
import xtools.boot.api.model.dto.Result;
import xtools.boot.api.model.dto.page.PageReq;
import xtools.boot.api.model.dto.page.PageResp;
import xtools.boot.api.model.dto.req.IdListReq;
import ${table.packageName}.model.dto.req.${table.entityName}AddReq;
import ${table.packageName}.model.dto.req.${table.entityName}PageReq;
import ${table.packageName}.model.dto.req.${table.entityName}UpdateReq;
import ${table.packageName}.model.dto.resp.${table.entityName}Resp;
#if($api)
import ${table.packageName}.api.${table.entityName}Api;
#end
#if($exportExcel || $importExcel)
import ${table.packageName}.model.dto.excel.${table.entityName}Excel;
#end
#if($exportExcel)
import java.util.List;
#end
/**
* <p>Title : ${table.entityName}Service</p>
* <p>Description : $!{table.businessName} Service</p>
* <p>Company : org.xujun</p>
*
* @author : ${table.author}
* @version : ${version}
* @date : ${date}
*/
public interface ${table.entityName}Service #if($api)extends ${table.entityName}Api #end{
/**
* 分页查询
*
* @param pageReq 分页请求
* @return 分页结果
*/
Result<PageResp<${table.entityName}Resp>> page(PageReq<${table.entityName}PageReq> pageReq);
/**
* 根据 ID 查询
*
* @param id ID
* @return 结果
*/
Result<${table.entityName}Resp> getById(Long id);
/**
* 添加
*
* @param req 添加请求
* @return 添加结果
*/
Result<Boolean> add(${table.entityName}AddReq req);
/**
* 修改
*
* @param req 修改请求
* @return 修改结果
*/
Result<Boolean> update(${table.entityName}UpdateReq req);
/**
* 根据 ID 删除
*
* @param req ID 集合
* @return 删除结果
*/
Result<Boolean> delById(IdListReq req);
#if($exportExcel)
/**
* 导出 Excel
*
* @param req 请求参数
* @return Excel 数据
*/
List<${table.entityName}Excel> exportExcel(${table.entityName}PageReq req);
#end
#if($importExcel)
/**
* 导入 Excel
*
* @param dataList Excel 数据
*/
void importExcel(List<${table.entityName}Excel> dataList);
#end
}

View File

@@ -0,0 +1,20 @@
package ${table.packageName}.${subPackageName};
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Component;
import ${table.packageName}.mapper.${table.entityName}Mapper;
import ${table.packageName}.model.entity.${table.entityName};
/**
* <p>Title : ${table.entityName}BaseService</p>
* <p>Description : $!{table.businessName} BaseService</p>
* <p>Company : org.xujun</p>
*
* @author : ${table.author}
* @version : ${version}
* @date : ${date}
*/
@Component
public class ${table.entityName}BaseService extends ServiceImpl<${table.entityName}Mapper, ${table.entityName}> {
}

View File

@@ -0,0 +1,255 @@
package ${table.packageName}.${subPackageName};
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import xtools.boot.api.exection.BizError;
import xtools.boot.api.exection.BizWarning;
import xtools.boot.api.model.dto.Result;
import xtools.boot.api.model.dto.page.PageReq;
import xtools.boot.api.model.dto.page.PageResp;
import xtools.boot.api.model.dto.req.IdListReq;
import xtools.boot.db.mybatisplus.utils.QueryUtils;
#if($importMap.hasStringUtils)
import xtools.core.StringUtils;
#end
import ${table.packageName}.convert.${table.entityName}Convert;
import ${table.packageName}.model.dto.req.${table.entityName}AddReq;
import ${table.packageName}.model.dto.req.${table.entityName}PageReq;
import ${table.packageName}.model.dto.req.${table.entityName}UpdateReq;
import ${table.packageName}.model.dto.resp.${table.entityName}Resp;
import ${table.packageName}.model.entity.${table.entityName};
#if($exportExcel || $importExcel)
import ${table.packageName}.model.dto.excel.${table.entityName}Excel;
#end
import ${table.packageName}.service.${table.entityName}Service;
import ${table.packageName}.service.base.${table.entityName}BaseService;
import java.util.Objects;
#if($exportExcel)
import java.util.List;
#end
/**
* <p>Title : ${table.entityName}ServiceImpl</p>
* <p>Description : $!{table.businessName} ServiceImpl</p>
* <p>Company : org.xujun</p>
*
* @author : ${table.author}
* @version : ${version}
* @date : ${date}
*/
@Primary
@Service
@RequiredArgsConstructor
public class ${table.entityName}ServiceImpl implements ${table.entityName}Service {
private final ${table.entityName}BaseService ${table.propName}BaseService;
private final ${table.entityName}Convert ${table.propName}Convert;
/**
* 分页查询
*
* @param pageReq 分页请求
* @return 分页结果
*/
@Override
public Result<PageResp<${table.entityName}Resp>> page(PageReq<${table.entityName}PageReq> pageReq) {
// 分页查询
Page<${table.entityName}> page = getPageData(pageReq.getCurrentPage(), pageReq.getPageSize(), pageReq.getQuery());
// 分装结果
PageResp<${table.entityName}Resp> pageResp = new PageResp<>(pageReq, page.getTotal(), ${table.propName}Convert.entityToRespList(page.getRecords()));
return Result.ok(pageResp);
}
/**
* 根据 ID 查询
*
* @param id ID
* @return 结果
*/
@Override
public Result<${table.entityName}Resp> getById(Long id) {
${table.entityName} data = ${table.propName}BaseService.getById(id);
return Result.ok(${table.propName}Convert.entityToResp(data));
}
/**
* 添加
*
* @param req 添加请求
* @return 添加结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<Boolean> add(${table.entityName}AddReq req) {
${table.entityName} entity = ${table.propName}Convert.addReqToEntity(req);
if (Objects.nonNull(existsEntity(entity))) {
throw new BizWarning("数据已存在");
}
return Result.ok(${table.propName}BaseService.save(entity));
}
/**
* 修改
*
* @param req 修改请求
* @return 修改结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<Boolean> update(${table.entityName}UpdateReq req) {
${table.entityName} entity = ${table.propName}Convert.updateReqToEntity(req);
if (Objects.nonNull(existsEntity(entity))) {
throw new BizWarning("数据已存在");
}
return Result.ok(${table.propName}BaseService.updateById(entity));
}
/**
* 根据 ID 删除
*
* @param req ID 集合
* @return 删除结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<Boolean> delById(IdListReq req) {
boolean removed = ${table.propName}BaseService.removeByIds(req.getIdList());
if (!removed) {
throw new BizError("删除失败");
}
return Result.ok(true);
}
#if($exportExcel)
/**
* 导出 Excel
*
* @param req 请求参数
* @return Excel 数据
*/
@Override
public List<${table.entityName}Excel> exportExcel(${table.entityName}PageReq req) {
// 创建查询条件
LambdaQueryWrapper<${table.entityName}> query = new LambdaQueryWrapper<>();
// 查询字段
query.select(
#foreach($column in ${columnList})
#if($foreach.index.equals(0))
${table.entityName}::get${column.funName}
#else
, ${table.entityName}::get${column.funName}
#end
#end
);
// 设置查询条件
setQueryWrapper(query, req);
// 排序
query.orderByDesc(${table.entityName}::getGmtCreate);
List<${table.entityName}> dataList = ${table.propName}BaseService.list(query);
return dataList.stream().map(item -> ${table.propName}Convert.entityToExcel(item)).toList();
}
#end
#if($importExcel)
/**
* 导入 Excel
*
* @param dataList Excel 数据
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void importExcel(List<${table.entityName}Excel> dataList) {
for (${table.entityName}Excel excel : dataList) {
${table.entityName} item = ${table.propName}Convert.excelToEntity(excel);
${table.entityName} dbItem = existsEntity(item);
if (Objects.isNull(dbItem)) {
// 新增
${table.propName}BaseService.save(item);
} else {
// 修改
item.setId(dbItem.getId());
${table.propName}BaseService.updateById(item);
}
}
}
#end
/**
* 获取分页数据
*
* @param currentPage 当前页
* @param pageSize 每页数量
* @param req 请求参数
* @return 分页数据
*/
private Page<${table.entityName}> getPageData(Integer currentPage, Integer pageSize, ${table.entityName}PageReq req) {
// 创建查询条件
LambdaQueryWrapper<${table.entityName}> query = new LambdaQueryWrapper<>();
// 查询字段
query.select(
#foreach($column in ${columnList})
#if($foreach.index.equals(0))
${table.entityName}::get${column.funName}
#else
, ${table.entityName}::get${column.funName}
#end
#end
);
// 设置查询条件
setQueryWrapper(query, req);
// 排序
query.orderByDesc(${table.entityName}::getGmtCreate);
return ${table.propName}BaseService.page(QueryUtils.getPage(currentPage, pageSize), query);
}
/**
* 设置查询条件
*
* @param query 查询条件
* @param req 请求参数
*/
private void setQueryWrapper(LambdaQueryWrapper<${table.entityName}> query, ${table.entityName}PageReq req) {
if (Objects.isNull(req)) {
return;
}
// 查询条件
#foreach($column in ${columnList})
#if(!$column.fieldName.equals("gmtCreate") && !$column.fieldName.equals("gmtModified"))
#if($column.queryType.equals(1))
query.eq(Objects.nonNull(req.get${column.funName}()), ${table.entityName}::get${column.funName}, req.get${column.funName}());
#end
#if($column.queryType.equals(2))
query.like(StringUtils.isNotBlank(req.get${column.funName}()), ${table.entityName}::get${column.funName}, req.get${column.funName}());
#end
#if($column.queryType.equals(12))
QueryUtils.addTimeRange(query, req.get${column.funName}Range(), ${table.entityName}::get${column.funName});
#end
#end
#end
QueryUtils.addTimeRange(query, req.getGmtCreateRange(), ${table.entityName}::getGmtCreate);
QueryUtils.addTimeRange(query, req.getGmtModifiedRange(), ${table.entityName}::getGmtModified);
}
/**
* 判断实体是否存在
*
* @param entity 实体
* @return 是否存在
*/
private ${table.entityName} existsEntity(${table.entityName} entity) {
// 创建查询条件
LambdaQueryWrapper<${table.entityName}> query = new LambdaQueryWrapper<>();
// 查询字段
query.select(${table.entityName}::getId);
// 排除当前数据
query.ne(Objects.nonNull(entity.getId()), ${table.entityName}::getId, entity.getId());
// 校验数据时候存在的条件
return ${table.propName}BaseService.getOne(query);
}
}