|
@@ -0,0 +1,104 @@
|
|
|
+/*
|
|
|
+ * Copyright (c) 2025 GaoKunW
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
+package org.eco.vip.nexus.core.service.dict;
|
|
|
+
|
|
|
+
|
|
|
+import cn.hutool.core.lang.tree.Tree;
|
|
|
+import cn.hutool.core.lang.tree.TreeNode;
|
|
|
+import com.mybatisflex.core.paginate.Page;
|
|
|
+import com.mybatisflex.core.query.QueryWrapper;
|
|
|
+import jakarta.annotation.Resource;
|
|
|
+import org.eco.vip.nexus.core.domain.dict.Dict;
|
|
|
+import org.eco.vip.nexus.core.domain.dict.pojo.DictBO;
|
|
|
+import org.eco.vip.nexus.core.domain.dict.pojo.DictVO;
|
|
|
+import org.eco.vip.nexus.core.mapper.DictMapper;
|
|
|
+import org.eco.vip.orm.constant.Constants;
|
|
|
+import org.eco.vip.orm.domain.PageQuery;
|
|
|
+import org.eco.vip.orm.exception.BusinessException;
|
|
|
+import org.eco.vip.orm.pojo.PageResult;
|
|
|
+import org.eco.vip.orm.service.BaseService;
|
|
|
+import org.eco.vip.orm.utils.JsonUtils;
|
|
|
+import org.eco.vip.orm.utils.MapstructUtils;
|
|
|
+import org.eco.vip.orm.utils.ObjUtils;
|
|
|
+import org.eco.vip.orm.utils.StrUtils;
|
|
|
+import org.eco.vip.orm.utils.TreeUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import static org.eco.vip.nexus.core.domain.dict.table.DictTableDef.DICT;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @description DictService
|
|
|
+ *
|
|
|
+ * @author GaoKunW
|
|
|
+ * @date 2025/7/16 14:11
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class DictService extends BaseService<DictMapper, Dict> implements IDictService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private DictMapper dictMapper;
|
|
|
+
|
|
|
+ private QueryWrapper buildQueryWrapper(DictBO dictBO) {
|
|
|
+ return super.buildBaseQueryWrapper()
|
|
|
+ .and(DICT.DICT_ID.eq(dictBO.getDictId()))
|
|
|
+ .and(DICT.DICT_LABEL.eq(dictBO.getDictLabel()))
|
|
|
+ .and(DICT.DICT_VALUE.eq(dictBO.getDictValue()))
|
|
|
+ .and(DICT.STATUS.eq(dictBO.getStatus()))
|
|
|
+ .and(DICT.PARENT_ID.eq(dictBO.getParentId()).or(DICT.DICT_ID.eq(dictBO.getParentId())));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageResult<DictVO> selectPage(DictBO dictBO) {
|
|
|
+ QueryWrapper queryWrapper = buildQueryWrapper(dictBO);
|
|
|
+ Page<DictVO> page = dictMapper.paginateWithRelationsAs(PageQuery.build(), queryWrapper, DictVO.class);
|
|
|
+ return PageResult.build(page);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<DictVO> selectList(DictBO dictBO) {
|
|
|
+ QueryWrapper queryWrapper = buildQueryWrapper(dictBO);
|
|
|
+ return dictMapper.selectListWithRelationsByQueryAs(queryWrapper, DictVO.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Tree<String>> tree() {
|
|
|
+ QueryWrapper wrapper = QueryWrapper.create().orderBy(Dict::getOrderNum).asc();
|
|
|
+ List<Dict> list = this.list(wrapper);
|
|
|
+ return TreeUtils.build(list.stream().map(dict ->
|
|
|
+ new TreeNode<>(dict.getDictId(), dict.getParentId(), dict.getDictLabel(), dict.getOrderNum()).setExtra(JsonUtils.parseObj(dict))
|
|
|
+ ).collect(Collectors.toList()), "0");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean insert(DictBO dictBO) {
|
|
|
+ DictVO dictVO = selectById(dictBO.getParentId());
|
|
|
+ if (ObjUtils.isNotNull(dictVO) && !StrUtils.equals(Constants.NORMAL, dictVO.getStatus())) {
|
|
|
+ throw new BusinessException("父级停用,不允许新增");
|
|
|
+ }
|
|
|
+ Dict dict = MapstructUtils.convert(dictBO, Dict.class);
|
|
|
+ return this.save(dict);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean update(DictBO dictBO) {
|
|
|
+ Dict dict = MapstructUtils.convert(dictBO, Dict.class);
|
|
|
+ return this.updateById(dict);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean delete(List<String> ids) {
|
|
|
+ return this.removeByIds(ids);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public DictVO selectById(String id) {
|
|
|
+ QueryWrapper queryWrapper = query().where(DICT.DICT_ID.eq(id));
|
|
|
+ return this.getOneAs(queryWrapper, DictVO.class);
|
|
|
+ }
|
|
|
+}
|