diff --git a/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/TranslationApi.java b/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/TranslationApi.java index 344f635ee..fd0493f55 100644 --- a/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/TranslationApi.java +++ b/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/TranslationApi.java @@ -33,4 +33,23 @@ public interface TranslationApi { */ Map getTranslationDictByLanguage(TranslationEnum translationLanguages); + /** + * 添加一个翻译项到context + * + * @param translationDict 具体的翻译项 + * @author fengshuonan + * @date 2021/1/24 21:47 + */ + void addTranslationDict(TranslationDict translationDict); + + /** + * 删除某条翻译记录 + * + * @param translationLanguages 语种枚举 + * @param tranCode 具体翻译项编码 + * @author fengshuonan + * @date 2021/1/24 21:59 + */ + void deleteTranslationDict(TranslationEnum translationLanguages, String tranCode); + } diff --git a/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/context/TranslationContext.java b/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/context/TranslationContext.java index b7dc51369..e1ea29968 100644 --- a/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/context/TranslationContext.java +++ b/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/context/TranslationContext.java @@ -17,7 +17,7 @@ public class TranslationContext { * @author fengshuonan * @date 2021/1/24 19:06 */ - public TranslationApi me() { + public static TranslationApi me() { return SpringUtil.getBean(TranslationApi.class); } diff --git a/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/enums/TranslationEnum.java b/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/enums/TranslationEnum.java index dba67f2cf..f114fd4aa 100644 --- a/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/enums/TranslationEnum.java +++ b/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/enums/TranslationEnum.java @@ -60,16 +60,14 @@ public enum TranslationEnum { * @date 2019/10/18 10:33 */ public static TranslationEnum valueOf(Integer value) { - if (value == null) { - return null; - } else { + if (value != null) { for (TranslationEnum translationLanguages : TranslationEnum.values()) { if (translationLanguages.getCode().equals(value)) { return translationLanguages; } } - return null; } + return null; } } diff --git a/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/exception/enums/TranslationExceptionEnum.java b/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/exception/enums/TranslationExceptionEnum.java index fda71f1e6..839b677ee 100644 --- a/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/exception/enums/TranslationExceptionEnum.java +++ b/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/exception/enums/TranslationExceptionEnum.java @@ -15,9 +15,9 @@ import lombok.Getter; public enum TranslationExceptionEnum implements AbstractExceptionEnum { /** - * 多语言xx + * 多语言记录不存在 */ - JWT_PARSE_ERROR(RuleConstants.BUSINESS_ERROR_TYPE_CODE + TranslationConstants.I18N_EXCEPTION_STEP_CODE + "01", "jwt解析错误!jwt为:{}"); + NOT_EXISTED(RuleConstants.BUSINESS_ERROR_TYPE_CODE + TranslationConstants.I18N_EXCEPTION_STEP_CODE + "01", "多语言记录不存在,id为:{}"); /** * 错误编码 diff --git a/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/pojo/request/TranslationRequest.java b/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/pojo/request/TranslationRequest.java index a367bc84b..719cd750e 100644 --- a/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/pojo/request/TranslationRequest.java +++ b/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/pojo/request/TranslationRequest.java @@ -34,7 +34,7 @@ public class TranslationRequest extends BaseRequest { /** * 1:中文 2:英语 */ - private Integer languages; + private Integer language; /** * 翻译的值 diff --git a/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/entity/Translation.java b/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/entity/Translation.java index b2dacec12..3a0589dc4 100644 --- a/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/entity/Translation.java +++ b/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/entity/Translation.java @@ -42,8 +42,8 @@ public class Translation extends BaseEntity { /** * 1:中文 2:英语 */ - @TableField("languages") - private Integer languages; + @TableField("language") + private Integer language; /** * 翻译的值 diff --git a/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/factory/TranslationDictFactory.java b/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/factory/TranslationDictFactory.java new file mode 100644 index 000000000..c05a07352 --- /dev/null +++ b/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/factory/TranslationDictFactory.java @@ -0,0 +1,30 @@ +package cn.stylefeng.roses.kernel.i18n.modular.factory; + +import cn.stylefeng.roses.kernel.i18n.api.enums.TranslationEnum; +import cn.stylefeng.roses.kernel.i18n.api.pojo.TranslationDict; +import cn.stylefeng.roses.kernel.i18n.modular.entity.Translation; + +/** + * 创建翻译字典 + * + * @author fengshuonan + * @date 2021/1/24 21:50 + */ +public class TranslationDictFactory { + + /** + * 创建翻译字典 + * + * @author fengshuonan + * @date 2021/1/24 21:50 + */ + public static TranslationDict createTranslationDict(TranslationEnum translationEnum, Translation translation) { + TranslationDict translationDict = new TranslationDict(); + translationDict.setTranName(translation.getTranName()); + translationDict.setTranCode(translation.getTranCode()); + translationDict.setTranValue(translation.getTranValue()); + translationDict.setTranslationLanguages(translationEnum); + return translationDict; + } + +} diff --git a/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/service/impl/TranslationServiceImpl.java b/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/service/impl/TranslationServiceImpl.java index d9696dbba..c7cc494ac 100644 --- a/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/service/impl/TranslationServiceImpl.java +++ b/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/service/impl/TranslationServiceImpl.java @@ -1,14 +1,26 @@ package cn.stylefeng.roses.kernel.i18n.modular.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; +import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; +import cn.stylefeng.roses.kernel.i18n.api.context.TranslationContext; +import cn.stylefeng.roses.kernel.i18n.api.enums.TranslationEnum; +import cn.stylefeng.roses.kernel.i18n.api.exception.TranslationException; +import cn.stylefeng.roses.kernel.i18n.api.exception.enums.TranslationExceptionEnum; import cn.stylefeng.roses.kernel.i18n.api.pojo.TranslationDict; import cn.stylefeng.roses.kernel.i18n.api.pojo.request.TranslationRequest; import cn.stylefeng.roses.kernel.i18n.modular.entity.Translation; +import cn.stylefeng.roses.kernel.i18n.modular.factory.TranslationDictFactory; import cn.stylefeng.roses.kernel.i18n.modular.mapper.TranslationMapper; import cn.stylefeng.roses.kernel.i18n.modular.service.TranslationService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -23,31 +35,115 @@ public class TranslationServiceImpl extends ServiceImpl findPage(TranslationRequest param) { - return null; + LambdaQueryWrapper wrapper = createWrapper(param); + Page page = this.page(PageFactory.defaultPage(), wrapper); + return PageResultFactory.createPageResult(page); } @Override public List getAllTranslationDict() { - return null; + List list = this.list(); + ArrayList translationDictList = new ArrayList<>(); + for (Translation translation : list) { + TranslationEnum translationEnum = TranslationEnum.valueOf(translation.getLanguage()); + TranslationDict translationDict = TranslationDictFactory.createTranslationDict(translationEnum, translation); + translationDictList.add(translationDict); + } + return translationDictList; + } + + /** + * 获取字典项的对象 + * + * @author fengshuonan + * @date 2021/1/24 21:54 + */ + private Translation queryTranslation(TranslationRequest param) { + Translation translation = this.getById(param.getTranId()); + if (ObjectUtil.isEmpty(translation)) { + throw new TranslationException(TranslationExceptionEnum.NOT_EXISTED, param.getTranId()); + } + return translation; + } + + /** + * 创建多语言的wrapper + * + * @author fengshuonan + * @date 2021/1/24 22:03 + */ + private LambdaQueryWrapper createWrapper(TranslationRequest param) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + if (ObjectUtil.isNotNull(param)) { + + // 如果编码不为空,则带上名称搜素搜条件 + if (ObjectUtil.isNotEmpty(param.getTranCode())) { + queryWrapper.like(Translation::getTranCode, param.getTranCode()); + } + + // 如果翻译名称不为空,则带上翻译名称 + if (ObjectUtil.isNotEmpty(param.getTranName())) { + queryWrapper.eq(Translation::getTranName, param.getTranName()); + } + } + + // 按时间倒序 + queryWrapper.orderByDesc(Translation::getCreateTime); + + return queryWrapper; } } diff --git a/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/TranslationContainer.java b/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/TranslationContainer.java index 45355e2bd..5bedfdb56 100644 --- a/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/TranslationContainer.java +++ b/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/TranslationContainer.java @@ -46,4 +46,29 @@ public class TranslationContainer implements TranslationApi { return TRAN_DICT_CONTAINER.get(translationLanguages); } + @Override + public void addTranslationDict(TranslationDict translationDict) { + TranslationEnum translationLanguages = translationDict.getTranslationLanguages(); + + Map languageDict = TRAN_DICT_CONTAINER.get(translationLanguages); + if (languageDict == null) { + languageDict = new HashMap<>(); + } + languageDict.put(translationDict.getTranCode(), translationDict.getTranValue()); + + TRAN_DICT_CONTAINER.put(translationLanguages, languageDict); + } + + @Override + public void deleteTranslationDict(TranslationEnum translationLanguages, String tranCode) { + Map languageDict = TRAN_DICT_CONTAINER.get(translationLanguages); + + if (languageDict == null) { + return; + } + languageDict.remove(tranCode); + + TRAN_DICT_CONTAINER.put(translationLanguages, languageDict); + } + } diff --git a/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/listener/TranslationDictInitListener.java b/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/listener/TranslationDictInitListener.java index b7d3141c0..b336529fc 100644 --- a/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/listener/TranslationDictInitListener.java +++ b/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/listener/TranslationDictInitListener.java @@ -5,7 +5,7 @@ import cn.stylefeng.roses.kernel.i18n.api.TranslationApi; import cn.stylefeng.roses.kernel.i18n.api.TranslationPersistenceApi; import cn.stylefeng.roses.kernel.i18n.api.pojo.TranslationDict; import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.context.event.ApplicationContextInitializedEvent; +import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframework.context.ApplicationListener; import java.util.List; @@ -19,10 +19,10 @@ import java.util.List; * @date 2021/1/24 19:36 */ @Slf4j -public class TranslationDictInitListener implements ApplicationListener { +public class TranslationDictInitListener implements ApplicationListener { @Override - public void onApplicationEvent(ApplicationContextInitializedEvent applicationContextInitializedEvent) { + public void onApplicationEvent(ApplicationStartedEvent applicationStartedEvent) { TranslationPersistenceApi tanTranslationPersistenceApi = SpringUtil.getBean(TranslationPersistenceApi.class); TranslationApi translationApi = SpringUtil.getBean(TranslationApi.class); diff --git a/kernel-d-i18n/i18n-spring-boot-starter/pom.xml b/kernel-d-i18n/i18n-spring-boot-starter/pom.xml index cab3005fa..3bfc3f232 100644 --- a/kernel-d-i18n/i18n-spring-boot-starter/pom.xml +++ b/kernel-d-i18n/i18n-spring-boot-starter/pom.xml @@ -17,10 +17,10 @@ - + cn.stylefeng.roses - i18n-sdk + i18n-business 1.0.0 diff --git a/kernel-d-i18n/i18n-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/i18n/starter/GunsTranslationAutoConfiguration.java b/kernel-d-i18n/i18n-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/i18n/starter/GunsTranslationAutoConfiguration.java index c76f913e8..073ee3401 100644 --- a/kernel-d-i18n/i18n-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/i18n/starter/GunsTranslationAutoConfiguration.java +++ b/kernel-d-i18n/i18n-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/i18n/starter/GunsTranslationAutoConfiguration.java @@ -1,5 +1,8 @@ package cn.stylefeng.roses.kernel.i18n.starter; +import cn.stylefeng.roses.kernel.i18n.TranslationContainer; +import cn.stylefeng.roses.kernel.i18n.api.TranslationApi; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** @@ -11,4 +14,15 @@ import org.springframework.context.annotation.Configuration; @Configuration public class GunsTranslationAutoConfiguration { + /** + * 多语言翻译条目存放容器 + * + * @author fengshuonan + * @date 2021/1/24 19:42 + */ + @Bean + public TranslationApi translationApi() { + return new TranslationContainer(); + } + } diff --git a/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/constants/DictConstants.java b/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/constants/DictConstants.java index 3d423731e..7cc7fe871 100644 --- a/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/constants/DictConstants.java +++ b/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/constants/DictConstants.java @@ -23,4 +23,10 @@ public interface DictConstants { */ Long DEFAULT_DICT_PARENT_ID = -1L; + + /** + * 系统配置分组code + */ + String CONFIG_GROUP_DICT_TYPE_CODE = "config_group"; + } \ No newline at end of file diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictController.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictController.java index 590922154..385c98d55 100644 --- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictController.java +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictController.java @@ -20,6 +20,8 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; +import static cn.stylefeng.roses.kernel.dict.api.constants.DictConstants.CONFIG_GROUP_DICT_TYPE_CODE; + /** * 字典详情管理,具体管理某个字典类型下的条目 * @@ -131,6 +133,19 @@ public class DictController { return new SuccessResponseData(page); } + /** + * 获取系统配置分组字典列表(分页) + * + * @author chenjinlong + * @date 2021/1/25 11:47 + */ + @GetResource(name = "获取系统配置分组字典列表", path = "/dict/getConfigGroupPage", requiredPermission = false) + public ResponseData getConfigGroupPage(DictRequest dictRequest) { + dictRequest.setDictTypeCode(CONFIG_GROUP_DICT_TYPE_CODE); + PageResult page = this.dictService.findPageList(dictRequest); + return new SuccessResponseData(page); + } + /** * 获取树形字典列表 * diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictTypeController.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictTypeController.java index 62fb5563b..ccf242ad5 100644 --- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictTypeController.java +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictTypeController.java @@ -92,6 +92,19 @@ public class DictTypeController { return new SuccessResponseData(detail); } + + /** + * 获取字典类型详情 + * + * @author fengshuonan + * @date 2021/1/13 11:25 + */ + @GetResource(name = "获取字典类型详情", path = "/dictType/getConfigDictTypeDetail", requiredPermission = false) + public ResponseData getConfigDictTypeDetail() { + SysDictType detail = this.dictTypeService.getConfigDictTypeDetail(); + return new SuccessResponseData(detail); + } + /** * 获取字典类型列表 * diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictTypeService.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictTypeService.java index 472e255c8..506977b10 100644 --- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictTypeService.java +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictTypeService.java @@ -91,4 +91,11 @@ public interface DictTypeService extends IService { */ SysDictType findDetail(Long dictTypeId); + /** + * 获取字典详情 + * + * @author huangyao + * @date 2021/1/10 17:27 + */ + SysDictType getConfigDictTypeDetail(); } diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictTypeServiceImpl.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictTypeServiceImpl.java index b78afe79d..48d163489 100644 --- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictTypeServiceImpl.java +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictTypeServiceImpl.java @@ -28,6 +28,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; +import static cn.stylefeng.roses.kernel.dict.api.constants.DictConstants.CONFIG_GROUP_DICT_TYPE_CODE; + /** * 字典类型表 服务实现类 * @@ -175,6 +177,13 @@ public class DictTypeServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysDictType::getDictTypeCode, CONFIG_GROUP_DICT_TYPE_CODE); + return this.getOne(queryWrapper); + } + /** * 校验dictTypeClass是否是系统字典,如果是系统字典只能超级管理员操作 * diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserOrgServiceServiceImpl.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserOrgServiceServiceImpl.java index 98e643b5e..67352538c 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserOrgServiceServiceImpl.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserOrgServiceServiceImpl.java @@ -1,6 +1,7 @@ package cn.stylefeng.roses.kernel.system.modular.user.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; import cn.stylefeng.roses.kernel.system.exception.SystemModularException; import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserOrg; import cn.stylefeng.roses.kernel.system.modular.user.mapper.SysUserOrgMapper; @@ -68,14 +69,10 @@ public class SysUserOrgServiceServiceImpl extends ServiceImpl sysUserOrgLambdaQueryWrapper = new LambdaQueryWrapper<>(); - sysUserOrgLambdaQueryWrapper.eq(true, SysUserOrg::getOrgId, orgId); - sysUserOrgLambdaQueryWrapper.eq(true, SysUserOrg::getPositionId, positionId); - - List list = this.list(sysUserOrgLambdaQueryWrapper); - return list.size() > 0; + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotNull(orgId), SysUserOrg::getOrgId, orgId); + queryWrapper.eq(ObjectUtil.isNotNull(positionId), SysUserOrg::getPositionId, positionId); + return this.list(queryWrapper).size() > 0; } } \ No newline at end of file