From a8c9152a05592d02dbb85203a8aec0d793f5b98f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E6=B0=B8=E6=98=A5?= Date: Fri, 5 Dec 2025 16:57:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A1=8C=E6=94=BF=E5=8C=BA=E5=88=92?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dolphin/common/mybatis/util/Pages.java | 10 ++- .../service/impl/DictionaryServiceImpl.java | 14 ++-- .../rbac/controller/RegionController.java | 20 +++++ .../module/rbac/mapper/RegionMapper.java | 6 ++ .../module/rbac/service/RegionService.java | 10 +++ .../rbac/service/impl/RegionServiceImpl.java | 84 ++++++++++++++++++- 6 files changed, 130 insertions(+), 14 deletions(-) diff --git a/dolphin-commons/dolphin-common-mybatis/src/main/java/day/gitlab/dolphin/common/mybatis/util/Pages.java b/dolphin-commons/dolphin-common-mybatis/src/main/java/day/gitlab/dolphin/common/mybatis/util/Pages.java index 85c66c2..1649566 100644 --- a/dolphin-commons/dolphin-common-mybatis/src/main/java/day/gitlab/dolphin/common/mybatis/util/Pages.java +++ b/dolphin-commons/dolphin-common-mybatis/src/main/java/day/gitlab/dolphin/common/mybatis/util/Pages.java @@ -1,5 +1,6 @@ package day.gitlab.dolphin.common.mybatis.util; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -12,12 +13,15 @@ import java.util.function.Function; public class Pages { - public static Page paginate(PageRequest pageRequest, BaseMapper mapper, BiFunction, QueryWrapper> biFunction) { + public static Page paginate(PageRequest pageRequest, BaseMapper mapper, BiFunction, LambdaQueryWrapper> biFunction) { Page page = new Page<>(pageRequest.getPageIndex(), pageRequest.getPageSize()); - QueryWrapper wrapper = new QueryWrapper<>(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper = biFunction.apply(pageRequest.getQuery(), wrapper); - return mapper.selectPage(page, wrapper); + Page ePage = mapper.selectPage(page, wrapper); + Long t = mapper.selectCount(wrapper); + page.setTotal(t); + return ePage; } public static PageResponse toPageResponse(Page page, Function mapFunction) { diff --git a/dolphin-modules/dolphin-module-core/src/main/java/day/gitlab/dolphin/module/core/service/impl/DictionaryServiceImpl.java b/dolphin-modules/dolphin-module-core/src/main/java/day/gitlab/dolphin/module/core/service/impl/DictionaryServiceImpl.java index 33d9e36..7e77bd5 100644 --- a/dolphin-modules/dolphin-module-core/src/main/java/day/gitlab/dolphin/module/core/service/impl/DictionaryServiceImpl.java +++ b/dolphin-modules/dolphin-module-core/src/main/java/day/gitlab/dolphin/module/core/service/impl/DictionaryServiceImpl.java @@ -30,13 +30,13 @@ public class DictionaryServiceImpl implements DictionaryService { public PageResponse paginate(PageRequest pageRequest) { Page paginate = Pages.paginate(pageRequest, dictionaryMapper, (dto, wrapper) -> { if (Strings.isNotBlank(dto.getName())) { - wrapper.like("name", dto.getName()); + wrapper.like(Dictionary::getName, dto.getName()); } if (Strings.isNotBlank(dto.getCode())) { - wrapper.eq("code", dto.getCode()); + wrapper.eq(Dictionary::getCode, dto.getCode()); } if (Strings.isNotBlank(dto.getType())) { - wrapper.eq("type", dto.getType()); + wrapper.eq(Dictionary::getType, dto.getType()); } return wrapper; @@ -53,16 +53,16 @@ public class DictionaryServiceImpl implements DictionaryService { public boolean update(DictionaryDTO record) { Dictionary dictionary = dictionaryMapper.selectById(record.getId()); if (dictionary != null) { - if (Strings.isNotBlank(dictionary.getName())) { + if (Strings.isNotBlank(record.getName())) { dictionary.setName(dictionary.getName()); } - if (Strings.isNotBlank(dictionary.getCode())) { + if (Strings.isNotBlank(record.getCode())) { dictionary.setCode(dictionary.getCode()); } - if (Strings.isNotBlank(dictionary.getType())) { + if (Strings.isNotBlank(record.getType())) { dictionary.setType(dictionary.getType()); } - dictionary.setDescription(dictionary.getDescription()); + dictionary.setDescription(record.getDescription()); dictionary.setUpdateTime(Timestamp.from(Instant.now())); return dictionaryMapper.updateById(dictionary) == 1; } diff --git a/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/controller/RegionController.java b/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/controller/RegionController.java index 360aacd..a75a842 100644 --- a/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/controller/RegionController.java +++ b/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/controller/RegionController.java @@ -23,4 +23,24 @@ public class RegionController { public ApiResponse> paginate(@RequestBody PageRequest pageRequest) { return ApiResponse.success(regionService.paginate(pageRequest)); } + @PostMapping("/update") + public ApiResponse update(@RequestBody RegionDTO record) { + return ApiResponse.success(regionService.update(record)); + } + + @PostMapping("/delete") + public ApiResponse delete(@RequestBody RegionDTO record) { + return ApiResponse.success(regionService.delete(record.getId())); + } + + @PostMapping("/deleteBatch") + public ApiResponse deleteBatch(@RequestBody RegionDTO record) { + return ApiResponse.success(regionService.deleteBatch(record.getIds())); + } + + @PostMapping("/insert") + public ApiResponse insert(@RequestBody RegionDTO record) { + return ApiResponse.success(regionService.insert(record)); + } + } diff --git a/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/mapper/RegionMapper.java b/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/mapper/RegionMapper.java index 7b4d642..dd21e87 100644 --- a/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/mapper/RegionMapper.java +++ b/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/mapper/RegionMapper.java @@ -1,5 +1,7 @@ package day.gitlab.dolphin.module.rbac.mapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import day.gitlab.dolphin.module.rbac.entity.Region; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @@ -10,6 +12,10 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface RegionMapper extends BaseMapper { + default Region findByCode(String code) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery().eq(Region::getCode, code); + return selectOne(wrapper); + } } diff --git a/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/service/RegionService.java b/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/service/RegionService.java index 2b5e7c0..c2f5333 100644 --- a/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/service/RegionService.java +++ b/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/service/RegionService.java @@ -5,10 +5,20 @@ import day.gitlab.dolphin.common.web.entity.PageResponse; import day.gitlab.dolphin.module.rbac.controller.dto.RegionDTO; import day.gitlab.dolphin.module.rbac.controller.vo.RegionVO; +import java.util.List; + /** * 针对表【sys_rbac_region(区划项)】的数据库操作Service */ public interface RegionService { PageResponse paginate(PageRequest pageRequest); + + boolean update(RegionDTO record); + + boolean delete(String id); + + int deleteBatch(List ids); + + boolean insert(RegionDTO record); } diff --git a/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/service/impl/RegionServiceImpl.java b/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/service/impl/RegionServiceImpl.java index 44c674f..17fea9d 100644 --- a/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/service/impl/RegionServiceImpl.java +++ b/dolphin-modules/dolphin-module-rbac/src/main/java/day/gitlab/dolphin/module/rbac/service/impl/RegionServiceImpl.java @@ -1,5 +1,6 @@ package day.gitlab.dolphin.module.rbac.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import day.gitlab.dolphin.common.core.util.Strings; import day.gitlab.dolphin.common.mybatis.util.Pages; @@ -14,6 +15,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import java.sql.Timestamp; +import java.time.Instant; import java.util.List; /** @@ -29,20 +32,93 @@ public class RegionServiceImpl implements RegionService { public PageResponse paginate(PageRequest pageRequest) { Page paginate = Pages.paginate(pageRequest, regionMapper, (dto, wrapper) -> { if (Strings.isNotBlank(dto.getName())) { - wrapper.like("name", dto.getName()); + wrapper.like(Region::getName, dto.getName()); } if (Strings.isNotBlank(dto.getCode())) { - wrapper.eq("code", dto.getCode()); + wrapper.eq(Region::getCode, dto.getCode()); } - + wrapper.isNull(Region::getParentId); return wrapper; }); - return Pages.toPageResponse(paginate, (record) -> { + PageResponse pageResponse = Pages.toPageResponse(paginate, (record) -> { RegionVO dictionaryVO = new RegionVO(); BeanUtils.copyProperties(record, dictionaryVO); return dictionaryVO; }); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + RegionDTO dto = pageRequest.getQuery(); + if (Strings.isNotBlank(dto.getName())) { + wrapper.like(Region::getName, dto.getName()); + } + if (Strings.isNotBlank(dto.getCode())) { + wrapper.eq(Region::getCode, dto.getCode()); + } + List regions = regionMapper.selectList(wrapper); + pageResponse.getRecords().forEach(record -> { + list2tree(record, regions); + }); + pageResponse.setTotal((long) regions.size()); + return pageResponse; + } + + @Override + public boolean update(RegionDTO record) { + Region region = regionMapper.selectById(record.getId()); + if (region != null) { + region.setParentId(record.getParentId()); + region.setParentCode(record.getParentCode()); + region.setRootId(record.getRootId()); + region.setRootCode(record.getRootCode()); + if (Strings.isNotBlank(record.getName())) { + region.setName(record.getName()); + } + if (Strings.isNotBlank(record.getCode())) { + region.setCode(record.getCode()); + } + region.setCode(record.getExtCode()); + region.setSort(record.getSort() == null ? 0 : record.getSort()); + region.setDescription(record.getDescription()); + region.setUpdateTime(Timestamp.from(Instant.now())); + return regionMapper.updateById(region) == 1; + } + return false; + } + + @Override + public boolean delete(String id) { + Region dictionary = regionMapper.selectById(id); + if (dictionary != null) { + return regionMapper.deleteById(dictionary.getId()) == 1; + } + return false; + } + + @Override + public int deleteBatch(List ids) { + return regionMapper.deleteByIds(ids); + } + + @Override + public boolean insert(RegionDTO record) { + Region region = new Region(); + BeanUtils.copyProperties(record, region); + region.setId(null); + region.setCreateTime(Timestamp.from(Instant.now())); + region.setUpdateTime(Timestamp.from(Instant.now())); + if (regionMapper.insert(region) != 1) { + return false; + } + + if (Strings.isBlank(region.getRootId()) && Strings.isBlank(region.getParentId())) { + Region dbRegion = regionMapper.findByCode(record.getCode()); + + dbRegion.setRootId(dbRegion.getId()); + dbRegion.setRootCode(dbRegion.getCode()); + return regionMapper.updateById(dbRegion) == 1; + } + return true; } private List list2tree(List records) {