From 867a45f1547dbb2c6552868d1e00aca4454ba90b Mon Sep 17 00:00:00 2001 From: wangff Date: Tue, 4 Nov 2025 13:22:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AD=97=E5=85=B8=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/common/InsertGroup.java | 12 + .../com/cool/store/common/UpdateGroup.java | 12 + .../cool/store/dao/dict/SysDictColumnDAO.java | 150 ++++++++++ .../cool/store/dao/dict/SysDictGroupDAO.java | 41 +++ .../cool/store/dao/dict/SysDictTableDAO.java | 129 +++++++++ .../mapper/dict/SysDictColumnMapper.java | 104 +++++++ .../store/mapper/dict/SysDictGroupMapper.java | 50 ++++ .../store/mapper/dict/SysDictTableMapper.java | 109 ++++++++ .../resources/dict/SysDictColumnMapper.xml | 259 ++++++++++++++++++ .../resources/dict/SysDictGroupMapper.xml | 122 +++++++++ .../resources/dict/SysDictTableMapper.xml | 237 ++++++++++++++++ .../store/entity/dict/SysDictColumnDO.java | 57 ++++ .../store/entity/dict/SysDictGroupDO.java | 45 +++ .../store/entity/dict/SysDictTableDO.java | 54 ++++ .../request/dict/DictColumnQueryRequest.java | 41 +++ .../request/dict/DictGroupQueryRequest.java | 25 ++ .../request/dict/DictTableQueryRequest.java | 31 +++ .../store/vo/dict/DictColumnSimpleVO.java | 24 ++ .../com/cool/store/vo/dict/DictColumnVO.java | 56 ++++ .../com/cool/store/vo/dict/DictGroupVO.java | 29 ++ .../com/cool/store/vo/dict/DictTableVO.java | 36 +++ .../store/service/dict/DictColumnService.java | 48 ++++ .../store/service/dict/DictGroupService.java | 31 +++ .../service/dict/DictTableInfoService.java | 31 +++ .../dict/impl/DictColumnServiceImpl.java | 83 ++++++ .../dict/impl/DictGroupServiceImpl.java | 61 +++++ .../dict/impl/DictTableInfoServiceImpl.java | 41 +++ .../webb/DictManagerController.java | 88 ++++++ 28 files changed, 2006 insertions(+) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/common/InsertGroup.java create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/common/UpdateGroup.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictGroupDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictTableDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictGroupMapper.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictTableMapper.java create mode 100644 coolstore-partner-dao/src/main/resources/dict/SysDictColumnMapper.xml create mode 100644 coolstore-partner-dao/src/main/resources/dict/SysDictGroupMapper.xml create mode 100644 coolstore-partner-dao/src/main/resources/dict/SysDictTableMapper.xml create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictColumnDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictGroupDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictTableDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/dict/DictColumnQueryRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/dict/DictGroupQueryRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/dict/DictTableQueryRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnSimpleVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictGroupVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictTableVO.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/dict/DictColumnService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/dict/DictGroupService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/dict/DictTableInfoService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictColumnServiceImpl.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictGroupServiceImpl.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictTableInfoServiceImpl.java create mode 100644 coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DictManagerController.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/common/InsertGroup.java b/coolstore-partner-common/src/main/java/com/cool/store/common/InsertGroup.java new file mode 100644 index 000000000..e97b4e698 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/common/InsertGroup.java @@ -0,0 +1,12 @@ +package com.cool.store.common; + +/** + *

+ * 新增分组 + *

+ * + * @author wangff + * @since 2025/11/4 + */ +public interface InsertGroup { +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/common/UpdateGroup.java b/coolstore-partner-common/src/main/java/com/cool/store/common/UpdateGroup.java new file mode 100644 index 000000000..ead1d3ded --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/common/UpdateGroup.java @@ -0,0 +1,12 @@ +package com.cool.store.common; + +/** + *

+ * 更新分组 + *

+ * + * @author wangff + * @since 2025/11/4 + */ +public interface UpdateGroup { +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java new file mode 100644 index 000000000..ab991bda6 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java @@ -0,0 +1,150 @@ +package com.cool.store.dao.dict; + +import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.excel.util.CollectionUtils; +import com.cool.store.entity.dict.SysDictColumnDO; +import com.cool.store.entity.dict.SysDictTableDO; +import com.cool.store.mapper.dict.SysDictColumnMapper; +import com.cool.store.request.dict.DictColumnQueryRequest; +import com.cool.store.utils.BeanUtil; +import com.cool.store.vo.dict.DictColumnSimpleVO; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.MapUtils; +import org.springframework.stereotype.Repository; + +import java.util.*; + +/** + *

+ * 字典项DAO + *

+ * + * @author wangff + * @since 2025/9/26 + */ +@Repository +@RequiredArgsConstructor +public class SysDictColumnDAO { + private final SysDictColumnMapper sysDictColumnMapper; + private final SysDictTableDAO sysDictTableDAO; + + + public List getList(DictColumnQueryRequest dto) { + return sysDictColumnMapper.selectList(dto); + } + + /** + * 根据id查询 + * + * @param id id + * @return 字典项信息表 + */ + public SysDictColumnDO getById(Long id) { + return sysDictColumnMapper.selectById(id); + } + + /** + * 根据字典表id查询字典项数量 + * + * @param tableIds 字典表id列表 + * @return <字典表id, 字典项数量> + */ + public Map getColumnNumMapByTableIds(List tableIds) { + if (CollectionUtil.isEmpty(tableIds)) { + return Collections.emptyMap(); + } + List> mapList = sysDictColumnMapper.selectColumnNumByTableIds(tableIds); + return CollStreamUtil.toMap(mapList, v -> MapUtils.getLong(v, "dict_table_id"), v -> MapUtils.getInteger(v, "num")); + } + + /** + * 过滤存在启用字典项的字典分组id + * @param groupIds 字典分组id列表 + * @return 字典分组id列表 + */ + public Set filterEnableColumnByGroupIds(List groupIds) { + if (CollectionUtil.isEmpty(groupIds)) { + return Collections.emptySet(); + } + List> list = sysDictColumnMapper.filterEnableColumnByGroupIds(groupIds); + return CollStreamUtil.toSet(list, v -> MapUtils.getLong(v, "dict_group_id")); + } + + /** + * 过滤存在启用字典项的字典表id + * @param tableIds 字典表id列表 + * @return 字典表id列表 + */ + public Set filterEnableColumnByTableIds(List tableIds) { + if (CollectionUtil.isEmpty(tableIds)) { + return Collections.emptySet(); + } + List> list = sysDictColumnMapper.filterEnableColumnByTableIds(tableIds); + return CollStreamUtil.toSet(list, v -> MapUtils.getLong(v, "dict_table_id")); + } + + /** + * 根据分组id删除 + * @param groupIds 分组id列表 + */ + public void deleteByGroupIds(List groupIds) { + if (CollectionUtil.isEmpty(groupIds)) { + return; + } + sysDictColumnMapper.deleteByGroupIds(groupIds); + } + + /** + * 根据字典表id删除 + * @param tableIds 字典表id列表 + */ + public void deleteByTableIds(List tableIds) { + if (CollectionUtil.isEmpty(tableIds)) { + return; + } + sysDictColumnMapper.deleteByTableIds(tableIds); + } + + /** + * 根据字典列编码查询已启用字典项信息 + * @param columnCode 字典列编码 + * @return 字典项信息 + */ + public SysDictColumnDO getOpenColumnByCode(String columnCode) { + return sysDictColumnMapper.selectOpenColumnByCode(columnCode); + } + + /** + * 根据字典列编码查询已启用字典名 + * @param columnCode 字典列编码 + * @return 字典名 + */ + public String getNameByCode(String columnCode) { + SysDictColumnDO sysDictColumnDO = sysDictColumnMapper.selectOpenColumnByCode(columnCode); + if (Objects.nonNull(sysDictColumnDO)) { + return sysDictColumnDO.getColumnName(); + } + return ""; + } + + /** + * 根据字典表编码查询启用状态的字典项 + * @param tableCodes 字典表编码列表 + * @return 字典项列表 + */ + public List getOpenColumnListByTableCode(List tableCodes) { + List tableList = sysDictTableDAO.getOpenTableListByTableCodes(tableCodes); + if (CollectionUtils.isEmpty(tableList)) { + return Collections.emptyList(); + } + List tableIds = CollStreamUtil.toList(tableList, SysDictTableDO::getId); + List columnList = sysDictColumnMapper.selectOpenColumnListByTableIds(tableIds); + Map tableCodeMap = CollStreamUtil.toMap(tableList, SysDictTableDO::getId, SysDictTableDO::getTableCode); + return CollStreamUtil.toList(columnList, v -> { + DictColumnSimpleVO vo = BeanUtil.toBean(v, DictColumnSimpleVO.class); + vo.setTableCode(tableCodeMap.get(v.getDictTableId())); + return vo; + }); + } +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictGroupDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictGroupDAO.java new file mode 100644 index 000000000..9592aa409 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictGroupDAO.java @@ -0,0 +1,41 @@ +package com.cool.store.dao.dict; + +import com.cool.store.entity.dict.SysDictGroupDO; +import com.cool.store.mapper.dict.SysDictGroupMapper; +import com.cool.store.request.dict.DictGroupQueryRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

+ * 字典分组DAO + *

+ * + * @author wangff + * @since 2025/9/26 + */ +@Repository +@RequiredArgsConstructor +public class SysDictGroupDAO { + private final SysDictGroupMapper sysDictGroupMapper; + + /** + * 根据id查询 + * @param id id + * @return 字典分组表 + */ + public SysDictGroupDO getById(Long id) { + return sysDictGroupMapper.selectById(id); + } + + /** + * 查询列表 + * @param dto 字典分组查询DTO + * @return 字典分组表列表 + */ + public List getList(DictGroupQueryRequest dto) { + return sysDictGroupMapper.selectList(dto); + } +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictTableDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictTableDAO.java new file mode 100644 index 000000000..64b25346b --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictTableDAO.java @@ -0,0 +1,129 @@ +package com.cool.store.dao.dict; + +import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.excel.util.CollectionUtils; +import com.cool.store.entity.dict.SysDictTableDO; +import com.cool.store.mapper.dict.SysDictTableMapper; +import com.cool.store.request.dict.DictTableQueryRequest; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.MapUtils; +import org.springframework.stereotype.Repository; + +import java.util.*; + +/** + *

+ * 字典表DAO + *

+ * + * @author wangff + * @since 2025/9/25 + */ +@Repository +@RequiredArgsConstructor +public class SysDictTableDAO { + + private final SysDictTableMapper dictTableMapper; + + + /** + * 列表查询 + * @param dto 字典表查询DTO + * @return 字典表信息表列表 + */ + public List getList(DictTableQueryRequest dto) { + return dictTableMapper.selectList(dto); + } + + /** + * 根据id查询 + * @param id id + * @return 字典表信息表 + */ + public SysDictTableDO getById(Long id) { + return dictTableMapper.selectById(id); + } + + /** + * 根据id查询 + * @param ids id列表 + * @return 字典表列表 + */ + public List getByIds(List ids) { + if (CollectionUtils.isEmpty(ids)) { + return Collections.emptyList(); + } + return dictTableMapper.selectByIds(ids); + } + + /** + * 根据字典表id查询所属字典分组id + * @param dictTableId 字典表id + * @return 字典分组id + */ + public Long getGroupIdByTableId(Long dictTableId) { + SysDictTableDO tableInfoDO = getById(dictTableId); + if (Objects.nonNull(tableInfoDO)) { + return tableInfoDO.getDictGroupId(); + } + return null; + } + + /** + * 根据分组id查询字典表 + * @param groupIds 字典分组id列表 + * @return 字典表VO对象列表 + */ + public List getListByGroupIds(List groupIds, Integer openStatus) { + if (CollectionUtil.isEmpty(groupIds)) { + return Collections.emptyList(); + } + return dictTableMapper.selectByGroupIds(groupIds, openStatus); + } + + /** + * 过滤存在启用字典表的字典分组id + * @param groupIds 字典分组id + * @return 字典分组id列表 + */ + public Set filterEnableTableByGroupIds(List groupIds) { + if (CollectionUtil.isEmpty(groupIds)) { + return Collections.emptySet(); + } + List> maps = dictTableMapper.filterEnableTableByGroupIds(groupIds); + return CollStreamUtil.toSet(maps, v -> MapUtils.getLong(v, "dict_group_id")); + } + + /** + * 根据分组id删除 + * @param groupIds 分组id列表 + */ + public void deleteByGroupIds(List groupIds) { + if (CollectionUtil.isEmpty(groupIds)) { + return; + } + dictTableMapper.deleteByGroupIds(groupIds); + } + + /** + * 根据字典表编码查询 + * @param tableCode 字典表编码 + * @return 字典表 + */ + public SysDictTableDO getByTableCode(String tableCode) { + return dictTableMapper.selectByTableCode(tableCode); + } + + /** + * 根据字典表编码查询启用状态的字典表 + * @param tableCodes 字典表编码 + * @return 字典表列表 + */ + public List getOpenTableListByTableCodes(List tableCodes) { + if (CollectionUtils.isEmpty(tableCodes)) { + return Collections.emptyList(); + } + return dictTableMapper.selectOpenTableListByTableCodes(tableCodes); + } +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java new file mode 100644 index 000000000..8f4fda280 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java @@ -0,0 +1,104 @@ +package com.cool.store.mapper.dict; + +import com.cool.store.entity.dict.SysDictColumnDO; +import com.cool.store.request.dict.DictColumnQueryRequest; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author zhangchenbiao + * @date 2025-09-25 06:34 + */ +public interface SysDictColumnMapper { + /** + * + * 默认插入方法,只会给有值的字段赋值 + * 会对传进来的字段做判空处理,如果字段为空,则使用数据库默认字段或者null + * dateTime:2025-09-25 06:34 + */ + int insertSelective(@Param("record") SysDictColumnDO record); + + /** + * + * 默认更新方法,根据主键更新,不会把null值更新到数据库,避免覆盖之前有值的 + * dateTime:2025-09-25 06:34 + */ + int updateByPrimaryKeySelective(@Param("record") SysDictColumnDO record); + + /** + * 查询已存在的字典项 + * @param columnCode 字典项编码 + * @return com.coolcollege.intelligent.model.dict.SysDictColumnDO + */ + SysDictColumnDO selectExistColumn(@Param("id") Long id, + @Param("columnCode") String columnCode); + + /** + * 根据id批量删除 + * @param ids id列表 + * @return int + */ + int deleteByIds(@Param("ids") List ids); + + /** + * 列表查询 + * @param dto 查询DTO + * @return 字典项列表 + */ + List selectList(@Param("dto") DictColumnQueryRequest dto); + + /** + * 根据id查询 + * @param id id + * @return 字典项 + */ + SysDictColumnDO selectById(@Param("id") Long id); + + /** + * 根据字典表id查询字典项数量 + * @param tableIds 字典表id列表 + */ + List> selectColumnNumByTableIds(@Param("tableIds") List tableIds); + + /** + * 过滤存在已启用字典项的字典表分组id + * @param groupIds 分组id列表 + */ + List> filterEnableColumnByGroupIds(@Param("groupIds") List groupIds); + + /** + * 过滤存在已启用字典项的字典表id + * @param tableIds 字典表id列表 + */ + List> filterEnableColumnByTableIds(@Param("tableIds") List tableIds); + + /** + * 根据分组id删除字典项 + * @param groupIds 分组id列表 + * @return int + */ + int deleteByGroupIds(@Param("groupIds") List groupIds); + + /** + * 根据字典表id删除字典项 + * @param tableIds 字典表id列表 + * @return int + */ + int deleteByTableIds(@Param("tableIds") List tableIds); + + /** + * 根据字典项编码查询字典项 + * @param columnCode 字典项编码 + * @return 字典项 + */ + SysDictColumnDO selectOpenColumnByCode(@Param("columnCode") String columnCode); + + /** + * 根据字典表id查询 + * @param tableIds 字典表id列表 + * @return 字典项列表 + */ + List selectOpenColumnListByTableIds(@Param("tableIds") List tableIds); +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictGroupMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictGroupMapper.java new file mode 100644 index 000000000..1febbce80 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictGroupMapper.java @@ -0,0 +1,50 @@ +package com.cool.store.mapper.dict; + +import com.cool.store.entity.dict.SysDictGroupDO; +import com.cool.store.request.dict.DictGroupQueryRequest; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author zhangchenbiao + * @date 2025-09-25 06:35 + */ +public interface SysDictGroupMapper { + /** + * 默认插入方法,只会给有值的字段赋值 + * 会对传进来的字段做判空处理,如果字段为空,则使用数据库默认字段或者null + * dateTime:2025-09-25 06:35 + */ + int insertSelective(@Param("record") SysDictGroupDO record); + + /** + * 默认更新方法,根据主键更新,不会把null值更新到数据库,避免覆盖之前有值的 + * dateTime:2025-09-25 06:35 + */ + int updateByPrimaryKeySelective(@Param("record") SysDictGroupDO record); + + /** + * 根据id批量删除 + * + * @param ids id列表 + * @return int + */ + int deleteByIds(@Param("ids") List ids); + + /** + * 根据id查询 + * + * @param id id + * @return 字典分组 + */ + SysDictGroupDO selectById(@Param("id") Long id); + + /** + * 列表查询 + * + * @param dto 查询DTO + * @return 字典分组列表 + */ + List selectList(@Param("dto") DictGroupQueryRequest dto); +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictTableMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictTableMapper.java new file mode 100644 index 000000000..29846bde5 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictTableMapper.java @@ -0,0 +1,109 @@ +package com.cool.store.mapper.dict; + +import com.cool.store.entity.dict.SysDictTableDO; +import com.cool.store.request.dict.DictTableQueryRequest; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author zhangchenbiao + * @date 2025-09-25 06:30 + */ +public interface SysDictTableMapper { + /** + * 默认插入方法,只会给有值的字段赋值 + * 会对传进来的字段做判空处理,如果字段为空,则使用数据库默认字段或者null + * dateTime:2025-09-25 06:30 + */ + int insertSelective(@Param("record") SysDictTableDO record, @Param("enterpriseId") String enterpriseId); + + /** + * 默认更新方法,根据主键更新,不会把null值更新到数据库,避免覆盖之前有值的 + * dateTime:2025-09-25 06:30 + */ + int updateByPrimaryKeySelective(@Param("record") SysDictTableDO record, @Param("enterpriseId") String enterpriseId); + + /** + * 查询重复的字典表 + * + * @param id id + * @param tableCode 字典表code + * @return 字典表 + */ + SysDictTableDO selectExistTable(@Param("id") Long id, + @Param("tableCode") String tableCode); + + /** + * 根据id删除 + * + * @param ids id列表 + */ + int deleteByIds(@Param("ids") List ids); + + /** + * 列表查询 + * + * @param dto 查询DTO + * @return 字典表列表 + */ + List selectList(@Param("dto") DictTableQueryRequest dto); + + /** + * 根据id查询 + * + * @param id id + * @return 字典表 + */ + SysDictTableDO selectById(@Param("id") Long id); + + /** + * 根据id查询 + * + * @param ids id列表 + * @return 字典表列表 + */ + List selectByIds(@Param("ids") List ids); + + /** + * 根据分组id查询 + * + * @param groupIds 分组id列表 + * @param openStatus 启用状态 + * @return 字典表列表 + */ + List selectByGroupIds(@Param("groupIds") List groupIds, + @Param("openStatus") Integer openStatus); + + /** + * 根据分组id查询已启用的字典表 + * + * @param groupIds 分组id列表 + */ + List> filterEnableTableByGroupIds(@Param("groupIds") List groupIds); + + /** + * 根据分组id删除 + * + * @param groupIds 分组id列表 + * @return int + */ + int deleteByGroupIds(@Param("groupIds") List groupIds); + + /** + * 根据字典表编码查询 + * + * @param tableCode 字典表编码 + * @return 字典表 + */ + SysDictTableDO selectByTableCode(@Param("tableCode") String tableCode); + + /** + * 根据字典表编码查询启用状态的字典表 + * + * @param tableCodes 字典表编码 + * @return 字典表列表 + */ + List selectOpenTableListByTableCodes(@Param("tableCodes") List tableCodes); +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/dict/SysDictColumnMapper.xml b/coolstore-partner-dao/src/main/resources/dict/SysDictColumnMapper.xml new file mode 100644 index 000000000..59975c23e --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/dict/SysDictColumnMapper.xml @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + id, dict_group_id, dict_table_id, column_name, column_code, open_status, remark, + deleted, create_user_id, update_user_id, create_time, update_time + + + insert into sys_dict_column_${enterpriseId} + + + dict_group_id, + + + dict_table_id, + + + column_name, + + + column_code, + + + open_status, + + + remark, + + + deleted, + + + create_user_id, + + + update_user_id, + + + create_time, + + + update_time, + + + + + #{record.dictGroupId}, + + + #{record.dictTableId}, + + + #{record.columnName}, + + + #{record.columnCode}, + + + #{record.openStatus}, + + + #{record.remark}, + + + #{record.deleted}, + + + #{record.createUserId}, + + + #{record.updateUserId}, + + + #{record.createTime}, + + + #{record.updateTime}, + + + + + update sys_dict_column_${enterpriseId} + + + dict_group_id = #{record.dictGroupId}, + + + dict_table_id = #{record.dictTableId}, + + + column_name = #{record.columnName}, + + + column_code = #{record.columnCode}, + + + open_status = #{record.openStatus}, + + + remark = #{record.remark}, + + + deleted = #{record.deleted}, + + + create_user_id = #{record.createUserId}, + + + update_user_id = #{record.updateUserId}, + + + create_time = #{record.createTime}, + + + update_time = #{record.updateTime}, + + + where id = #{record.id} + + + + + + UPDATE sys_dict_column_${enterpriseId} + SET deleted = 1 + WHERE id IN + + #{id} + + AND deleted = 0 + + + + + + + + + + + + + + UPDATE sys_dict_column_${enterpriseId} + SET deleted = 1 + WHERE dict_group_id IN + + #{groupId} + + AND deleted = 0 + + + + UPDATE sys_dict_column_${enterpriseId} + SET deleted = 1 + WHERE dict_table_id IN + + #{tableId} + + AND deleted = 0 + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/dict/SysDictGroupMapper.xml b/coolstore-partner-dao/src/main/resources/dict/SysDictGroupMapper.xml new file mode 100644 index 000000000..c15976c42 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/dict/SysDictGroupMapper.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + id, group_name, remark, deleted, create_user_id, update_user_id, create_time, update_time + + + insert into sys_dict_group_${enterpriseId} + + + group_name, + + + remark, + + + deleted, + + + create_user_id, + + + update_user_id, + + + create_time, + + + update_time, + + + + + #{record.groupName}, + + + #{record.remark}, + + + #{record.deleted}, + + + #{record.createUserId}, + + + #{record.updateUserId}, + + + #{record.createTime}, + + + #{record.updateTime}, + + + + + update sys_dict_group_${enterpriseId} + + + group_name = #{record.groupName}, + + + remark = #{record.remark}, + + + deleted = #{record.deleted}, + + + create_user_id = #{record.createUserId}, + + + update_user_id = #{record.updateUserId}, + + + create_time = #{record.createTime}, + + + update_time = #{record.updateTime}, + + + where id = #{record.id} + + + + UPDATE sys_dict_group_${enterpriseId} + SET deleted = 1 + WHERE id IN + + #{id} + + AND deleted = 0 + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/dict/SysDictTableMapper.xml b/coolstore-partner-dao/src/main/resources/dict/SysDictTableMapper.xml new file mode 100644 index 000000000..27c0cc3f8 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/dict/SysDictTableMapper.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + id, dict_group_id, table_name, table_code, open_status, remark, deleted, create_user_id, + update_user_id, create_time, update_time + + + insert into sys_dict_table_${enterpriseId} + + + dict_group_id, + + + table_name, + + + table_code, + + + open_status, + + + remark, + + + deleted, + + + create_user_id, + + + update_user_id, + + + create_time, + + + update_time, + + + + + #{record.dictGroupId}, + + + #{record.tableName}, + + + #{record.tableCode}, + + + #{record.openStatus}, + + + #{record.remark}, + + + #{record.deleted}, + + + #{record.createUserId}, + + + #{record.updateUserId}, + + + #{record.createTime}, + + + #{record.updateTime}, + + + + + update sys_dict_table_${enterpriseId} + + + dict_group_id = #{record.dictGroupId}, + + + table_name = #{record.tableName}, + + + table_code = #{record.tableCode}, + + + open_status = #{record.openStatus}, + + + remark = #{record.remark}, + + + deleted = #{record.deleted}, + + + create_user_id = #{record.createUserId}, + + + update_user_id = #{record.updateUserId}, + + + create_time = #{record.createTime}, + + + update_time = #{record.updateTime}, + + + where id = #{record.id} + + + + + + UPDATE sys_dict_table_${enterpriseId} + SET deleted = 1 + WHERE id IN + + #{id} + + AND deleted = 0 + + + + + + + + + + + + + + UPDATE sys_dict_table_${enterpriseId} + SET deleted = 1 + WHERE dict_group_id IN + + #{groupId} + + AND deleted = 0 + + + + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictColumnDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictColumnDO.java new file mode 100644 index 000000000..08b53d610 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictColumnDO.java @@ -0,0 +1,57 @@ +package com.cool.store.entity.dict; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 字典项 + * @author wangff + * @date 2025-09-25 06:34 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysDictColumnDO implements Serializable { + @ApiModelProperty("") + private Long id; + + @ApiModelProperty("merchant_dict_group.id 字典表分组id") + private Long dictGroupId; + + @ApiModelProperty("merchant_dict_table_info.id 字典表信息表id") + private Long dictTableId; + + @ApiModelProperty("字典项名称") + private String columnName; + + @ApiModelProperty("字典项编码") + private String columnCode; + + @ApiModelProperty("启用状态 0:不启用 1:启用") + private Integer openStatus; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("删除标识") + private Boolean deleted; + + @ApiModelProperty("创建人") + private String createUserId; + + @ApiModelProperty("更新人") + private String updateUserId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("更新时间") + private Date updateTime; +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictGroupDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictGroupDO.java new file mode 100644 index 000000000..21d6dc46c --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictGroupDO.java @@ -0,0 +1,45 @@ +package com.cool.store.entity.dict; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 字典分组 + * @author wangff + * @date 2025-09-25 06:35 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysDictGroupDO implements Serializable { + @ApiModelProperty("") + private Long id; + + @ApiModelProperty("分组名称") + private String groupName; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("删除标识") + private Boolean deleted; + + @ApiModelProperty("创建人") + private String createUserId; + + @ApiModelProperty("更新人") + private String updateUserId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("更新时间") + private Date updateTime; +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictTableDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictTableDO.java new file mode 100644 index 000000000..7b01b1baa --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictTableDO.java @@ -0,0 +1,54 @@ +package com.cool.store.entity.dict; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 字典表 + * @author wangff + * @date 2025-09-25 06:30 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysDictTableDO implements Serializable { + @ApiModelProperty("") + private Long id; + + @ApiModelProperty("merchant_dict_group.id 字典表分组id") + private Long dictGroupId; + + @ApiModelProperty("字典表名称") + private String tableName; + + @ApiModelProperty("字典表编码") + private String tableCode; + + @ApiModelProperty("启用状态 0:不启用 1:启用") + private Integer openStatus; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("删除标识") + private Boolean deleted; + + @ApiModelProperty("创建人") + private String createUserId; + + @ApiModelProperty("更新人") + private String updateUserId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("更新时间") + private Date updateTime; +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/dict/DictColumnQueryRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/dict/DictColumnQueryRequest.java new file mode 100644 index 000000000..34d98dd54 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/dict/DictColumnQueryRequest.java @@ -0,0 +1,41 @@ +package com.cool.store.request.dict; + +import com.cool.store.common.PageBasicInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + *

+ * 字典项查询DTO + *

+ * + * @author wangff + * @since 2025/2/20 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class DictColumnQueryRequest extends PageBasicInfo { + + @ApiModelProperty("字典表分组id") + private Long dictGroupId; + + @ApiModelProperty("字典表id") + private Long dictTableId; + + @ApiModelProperty("字典项名称") + private String columnName; + + @ApiModelProperty("字典项编码") + private String columnCode; + + @ApiModelProperty("启用状态 0:不启用 1:启用") + private Integer openStatus; + + @ApiModelProperty("备注") + private String remark; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/dict/DictGroupQueryRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/dict/DictGroupQueryRequest.java new file mode 100644 index 000000000..7b127357c --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/dict/DictGroupQueryRequest.java @@ -0,0 +1,25 @@ +package com.cool.store.request.dict; + +import com.cool.store.common.PageBasicInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 字典分组查询DTO + *

+ * + * @author wangff + * @since 2025/2/20 + */ +@Data +public class DictGroupQueryRequest extends PageBasicInfo { + @ApiModelProperty("字典分组名称") + private String groupName; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("字典表启用状态") + private Integer dictTableOpenStatus; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/dict/DictTableQueryRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/dict/DictTableQueryRequest.java new file mode 100644 index 000000000..010c8d675 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/dict/DictTableQueryRequest.java @@ -0,0 +1,31 @@ +package com.cool.store.request.dict; + +import com.cool.store.common.PageBasicInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 字典表查询DTO + *

+ * + * @author wangff + * @since 2025/2/20 + */ +@Data +public class DictTableQueryRequest extends PageBasicInfo { + @ApiModelProperty("字典分组id") + private Long dictGroupId; + + @ApiModelProperty("字典表名称") + private String tableName; + + @ApiModelProperty("字典表编码") + private String tableCode; + + @ApiModelProperty("启用状态 0:不启用 1:启用") + private Integer openStatus; + + @ApiModelProperty("备注") + private String remark; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnSimpleVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnSimpleVO.java new file mode 100644 index 000000000..6d26fe816 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnSimpleVO.java @@ -0,0 +1,24 @@ +package com.cool.store.vo.dict; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 字典项简单信息VO + *

+ * + * @author wangff + * @since 2025/9/26 + */ +@Data +public class DictColumnSimpleVO { + @ApiModelProperty("字典项名称") + private String columnName; + + @ApiModelProperty("字典项编码") + private String columnCode; + + @ApiModelProperty("字典表编码") + private String tableCode; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnVO.java new file mode 100644 index 000000000..b4ef6a9ff --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnVO.java @@ -0,0 +1,56 @@ +package com.cool.store.vo.dict; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * 字典项VO + *

+ * + * @author wangff + * @since 2025/2/20 + */ +@Data +public class DictColumnVO { + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("字典表分组id") + private Long dictGroupId; + + @ApiModelProperty("字典表id") + private Long dictTableId; + + @ApiModelProperty("字典项名称") + private String columnName; + + @ApiModelProperty("字典项编码") + private String columnCode; + + @ApiModelProperty("启用状态 0:不启用 1:启用") + private Integer openStatus; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("创建人") + private String createUserId; + + @ApiModelProperty("创建人姓名") + private String createUserName; + + @ApiModelProperty("更新人") + private String updateUserId; + + @ApiModelProperty("更新人姓名") + private String updateUserName; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("更新时间") + private Date updateTime; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictGroupVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictGroupVO.java new file mode 100644 index 000000000..f614f2176 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictGroupVO.java @@ -0,0 +1,29 @@ +package com.cool.store.vo.dict; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + *

+ * 字典分组VO + *

+ * + * @author wangff + * @since 2025/2/19 + */ +@Data +public class DictGroupVO { + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("分组名称") + private String groupName; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("字典表列表") + private List tableList; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictTableVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictTableVO.java new file mode 100644 index 000000000..ea72f0df2 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictTableVO.java @@ -0,0 +1,36 @@ +package com.cool.store.vo.dict; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 字典表信息表VO + *

+ * + * @author wangff + * @since 2025/2/19 + */ +@Data +public class DictTableVO { + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("字典表分组id") + private Long dictGroupId; + + @ApiModelProperty("字典表名称") + private String tableName; + + @ApiModelProperty("字典表编码") + private String tableCode; + + @ApiModelProperty("启用状态 0:不启用 1:启用") + private Integer openStatus; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("字典数量") + private Integer columnNum; +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/dict/DictColumnService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/DictColumnService.java new file mode 100644 index 000000000..5c086d87f --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/DictColumnService.java @@ -0,0 +1,48 @@ +package com.cool.store.service.dict; + +import com.cool.store.request.dict.DictColumnQueryRequest; +import com.cool.store.vo.dict.DictColumnSimpleVO; +import com.cool.store.vo.dict.DictColumnVO; +import com.github.pagehelper.PageInfo; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 字典项 + *

+ * + * @author wangff + * @since 2025/2/20 + */ +public interface DictColumnService { + + /** + * 根据id查询 + * @param id id + * @return 字典项VO + */ + DictColumnVO getById(Long id); + + /** + * 分页查询 + * @param dto 字典项查询DTO + * @return 字典项VO分页对象 + */ + PageInfo getPage(DictColumnQueryRequest dto); + + /** + * 根据编码查询已启用的字典项 + * @param columnCode 字典项编码 + * @return 字典项简单信息VO + */ + DictColumnSimpleVO getColumnByColumnCode(String columnCode); + + /** + * 根据表编码查询字典项 + * @param tableCodes 字典表编码列表 + * @return 字典项简单信息映射 + */ + Map> getMapListByTableCode(List tableCodes); +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/dict/DictGroupService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/DictGroupService.java new file mode 100644 index 000000000..64ae7dca6 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/DictGroupService.java @@ -0,0 +1,31 @@ +package com.cool.store.service.dict; + +import com.cool.store.request.dict.DictGroupQueryRequest; +import com.cool.store.vo.dict.DictGroupVO; + +import java.util.List; + +/** + *

+ * 字典分组 + *

+ * + * @author wangff + * @since 2025/2/20 + */ +public interface DictGroupService { + + /** + * 根据id查询 + * @param id id + * @return 字典分组VO + */ + DictGroupVO getById(Long id); + + /** + * 查询列表 + * @param queryDTO 字典分组查询DTO + * @return 字典分组实体列表 + */ + List getList(DictGroupQueryRequest queryDTO); +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/dict/DictTableInfoService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/DictTableInfoService.java new file mode 100644 index 000000000..c43438e71 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/DictTableInfoService.java @@ -0,0 +1,31 @@ +package com.cool.store.service.dict; + +import com.cool.store.request.dict.DictTableQueryRequest; +import com.cool.store.vo.dict.DictTableVO; + +import java.util.List; + +/** + *

+ * 字典表 + *

+ * + * @author wangff + * @since 2025/2/20 + */ +public interface DictTableInfoService { + + /** + * 根据id查询 + * @param id id + * @return 字典表信息表VO + */ + DictTableVO getById(Long id); + + /** + * VO列表查询 + * @param dto 字典表查询DTO + * @return 字典表信息表VO列表 + */ + List getList(DictTableQueryRequest dto); +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictColumnServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictColumnServiceImpl.java new file mode 100644 index 000000000..963e0ba64 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictColumnServiceImpl.java @@ -0,0 +1,83 @@ +package com.cool.store.service.dict.impl; + +import cn.hutool.core.collection.CollStreamUtil; +import com.cool.store.dao.EnterpriseUserDAO; +import com.cool.store.dao.dict.SysDictColumnDAO; +import com.cool.store.dao.dict.SysDictTableDAO; +import com.cool.store.entity.dict.SysDictColumnDO; +import com.cool.store.entity.dict.SysDictTableDO; +import com.cool.store.request.dict.DictColumnQueryRequest; +import com.cool.store.service.dict.DictColumnService; +import com.cool.store.utils.BeanUtil; +import com.cool.store.vo.dict.DictColumnSimpleVO; +import com.cool.store.vo.dict.DictColumnVO; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + *

+ * 字典项 实现类 + *

+ * + * @author wangff + * @since 2025/2/20 + */ +@Service +@RequiredArgsConstructor +public class DictColumnServiceImpl implements DictColumnService { + private final SysDictColumnDAO columnDAO; + private final SysDictTableDAO tableDAO; + private final EnterpriseUserDAO userDAO; + + @Override + public DictColumnVO getById(Long id) { + SysDictColumnDO column = columnDAO.getById(id); + return BeanUtil.toBean(column, DictColumnVO.class); + } + + @Override + public PageInfo getPage(DictColumnQueryRequest dto) { + PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + List list = columnDAO.getList(dto); + PageInfo page = new PageInfo<>(list); + PageInfo result = BeanUtil.toPage(page, DictColumnVO.class); + Set userIds = new HashSet<>(); + result.getList().forEach(item -> { + userIds.add(item.getCreateUserId()); + userIds.add(item.getUpdateUserId()); + }); + if (CollectionUtils.isNotEmpty(userIds)) { + Map userNameMap = userDAO.getUserNameMap(new ArrayList<>(userIds)); + result.getList().forEach(v -> { + v.setCreateUserName(userNameMap.get(v.getCreateUserId())); + v.setUpdateUserName(userNameMap.get(v.getUpdateUserId())); + }); + } + return result; + } + + @Override + public DictColumnSimpleVO getColumnByColumnCode(String columnCode) { + SysDictColumnDO column = columnDAO.getOpenColumnByCode(columnCode); + SysDictTableDO table = tableDAO.getById(column.getDictTableId()); + DictColumnSimpleVO vo = BeanUtil.toBean(column, DictColumnSimpleVO.class); + if (Objects.nonNull(table)) { + vo.setTableCode(table.getTableCode()); + } + return vo; + } + + @Override + public Map> getMapListByTableCode(List tableCodes) { + if (CollectionUtils.isEmpty(tableCodes)) { + return Collections.emptyMap(); + } + List list = columnDAO.getOpenColumnListByTableCode(tableCodes); + return CollStreamUtil.groupByKey(list, DictColumnSimpleVO::getTableCode); + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictGroupServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictGroupServiceImpl.java new file mode 100644 index 000000000..56ad3b1bc --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictGroupServiceImpl.java @@ -0,0 +1,61 @@ +package com.cool.store.service.dict.impl; + +import cn.hutool.core.collection.CollStreamUtil; +import com.cool.store.dao.dict.SysDictColumnDAO; +import com.cool.store.dao.dict.SysDictGroupDAO; +import com.cool.store.dao.dict.SysDictTableDAO; +import com.cool.store.entity.dict.SysDictGroupDO; +import com.cool.store.entity.dict.SysDictTableDO; +import com.cool.store.request.dict.DictGroupQueryRequest; +import com.cool.store.service.dict.DictGroupService; +import com.cool.store.utils.BeanUtil; +import com.cool.store.vo.dict.DictGroupVO; +import com.cool.store.vo.dict.DictTableVO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + *

+ * 字典分组 实现类 + *

+ * + * @author wangff + * @since 2025/2/20 + */ +@Service +@RequiredArgsConstructor +public class DictGroupServiceImpl implements DictGroupService { + private final SysDictGroupDAO groupDAO; + private final SysDictTableDAO tableDAO; + private final SysDictColumnDAO columnDAO; + + @Override + public DictGroupVO getById(Long id) { + SysDictGroupDO group = groupDAO.getById(id); + return BeanUtil.toBean(group, DictGroupVO.class); + } + + + @Override + public List getList(DictGroupQueryRequest queryDTO) { + List list = groupDAO.getList(queryDTO); + List result = BeanUtil.toList(list, DictGroupVO.class); + // 查询字典表 + List groupIds = CollStreamUtil.toList(result, DictGroupVO::getId); + List tableList = tableDAO.getListByGroupIds(groupIds, queryDTO.getDictTableOpenStatus()); + List tableVOList = BeanUtil.toList(tableList, DictTableVO.class); + // 查询字典项数量 + List tableIds = CollStreamUtil.toList(tableVOList, DictTableVO::getId); + Map columnNumMap = columnDAO.getColumnNumMapByTableIds(tableIds); + + tableVOList.forEach(v -> v.setColumnNum(columnNumMap.getOrDefault(v.getId(), 0))); + + Map> tableMap = CollStreamUtil.groupByKey(tableVOList, DictTableVO::getDictGroupId); + result.forEach(v -> v.setTableList(tableMap.getOrDefault(v.getId(), Collections.emptyList()))); + return result; + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictTableInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictTableInfoServiceImpl.java new file mode 100644 index 000000000..911855abf --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictTableInfoServiceImpl.java @@ -0,0 +1,41 @@ +package com.cool.store.service.dict.impl; + +import com.cool.store.dao.dict.SysDictColumnDAO; +import com.cool.store.dao.dict.SysDictTableDAO; +import com.cool.store.entity.dict.SysDictTableDO; +import com.cool.store.request.dict.DictTableQueryRequest; +import com.cool.store.service.dict.DictTableInfoService; +import com.cool.store.utils.BeanUtil; +import com.cool.store.vo.dict.DictTableVO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 字典表 实现类 + *

+ * + * @author wangff + * @since 2025/2/20 + */ +@Service +@RequiredArgsConstructor +public class DictTableInfoServiceImpl implements DictTableInfoService { + private final SysDictTableDAO dictTableInfoDAO; + private final SysDictColumnDAO columnInfoDAO; + + + @Override + public DictTableVO getById(Long id) { + SysDictTableDO table = dictTableInfoDAO.getById(id); + return BeanUtil.toBean(table, DictTableVO.class); + } + + @Override + public List getList(DictTableQueryRequest dto) { + List list = dictTableInfoDAO.getList(dto); + return BeanUtil.toList(list, DictTableVO.class); + } +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DictManagerController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DictManagerController.java new file mode 100644 index 000000000..280ba1548 --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DictManagerController.java @@ -0,0 +1,88 @@ +package com.cool.store.controller.webb; + +import com.cool.store.request.dict.DictColumnQueryRequest; +import com.cool.store.request.dict.DictGroupQueryRequest; +import com.cool.store.request.dict.DictTableQueryRequest; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.dict.DictColumnService; +import com.cool.store.service.dict.DictGroupService; +import com.cool.store.service.dict.DictTableInfoService; +import com.cool.store.vo.dict.DictColumnSimpleVO; +import com.cool.store.vo.dict.DictColumnVO; +import com.cool.store.vo.dict.DictGroupVO; +import com.cool.store.vo.dict.DictTableVO; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotBlank; +import java.util.List; +import java.util.Map; + +/** + *

+ * 字典管理 前端控制器 + *

+ * + * @author wangff + * @since 2025/2/20 + */ +@Api(tags = "字典管理") +@RestController +@RequestMapping("pc/sys/dict") +@RequiredArgsConstructor +public class DictManagerController { + private final DictGroupService groupService; + private final DictTableInfoService tableService; + private final DictColumnService columnService; + + @ApiOperation("字典分组-查询") + @GetMapping("/group/{groupId}") + public ResponseResult groupGet(@PathVariable("groupId") Long groupId) { + return ResponseResult.success(groupService.getById(groupId)); + } + + @ApiOperation("字典分组-列表") + @GetMapping("/group/list") + public ResponseResult> groupList(DictGroupQueryRequest dto) { + return ResponseResult.success(groupService.getList(dto)); + } + + @ApiOperation("字典表-查询") + @GetMapping("/table/{tableId}") + public ResponseResult tableGet(@PathVariable("tableId") Long tableId) { + return ResponseResult.success(tableService.getById(tableId)); + } + + @ApiOperation("字典表-列表") + @GetMapping("/table/list") + public ResponseResult> tableList(DictTableQueryRequest dto) { + return ResponseResult.success(tableService.getList(dto)); + } + + @ApiOperation("字典项-分页查询") + @GetMapping("/column/page") + public ResponseResult> columnPage(DictColumnQueryRequest dto) { + return ResponseResult.success(columnService.getPage(dto)); + } + + @ApiOperation("字典项-查询") + @GetMapping("/column/{columnId}") + public ResponseResult columnGet(@PathVariable("columnId") Long columnId) { + return ResponseResult.success(columnService.getById(columnId)); + } + + @ApiOperation("字典项-根据字典项code查询已启用的字典项") + @GetMapping("/column/getByColumnCode") + public ResponseResult getColumnByColumnCode(@NotBlank(message = "字典项编码不能为空") String columnCode) { + return ResponseResult.success(columnService.getColumnByColumnCode(columnCode)); + } + + @ApiOperation("字典项-根据字典表code查询已启用的字典项列表") + @PostMapping("/column/getMapByTableCodes") + public ResponseResult>> getColumnByTableCode(@RequestBody List tableCodes) { + return ResponseResult.success(columnService.getMapListByTableCode(tableCodes)); + } +}