🎨 字典查询修改为支持批量查询,减少前后端通讯
This commit is contained in:
@@ -37,12 +37,12 @@ public class SysDictController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过字典标识查找对应字典项
|
* 通过字典标识查找对应字典项
|
||||||
* @param dictCode 字典标识
|
* @param dictCodes 字典标识列表
|
||||||
* @return 同类型字典
|
* @return 同类型字典
|
||||||
*/
|
*/
|
||||||
@GetMapping("/data-hash/{dictCode}")
|
@GetMapping("/data-hash")
|
||||||
public R<DictDataAndHashVO> getDictDataAndHash(@PathVariable String dictCode) {
|
public R<List<DictDataAndHashVO>> getDictDataAndHash(@RequestParam("dictCodes") String[] dictCodes) {
|
||||||
return R.ok(sysDictManager.queryDictDataAndHashVO(dictCode));
|
return R.ok(sysDictManager.queryDictDataAndHashVO(dictCodes));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -77,7 +77,7 @@ public class SysDictController {
|
|||||||
@CreateOperationLogging(msg = "新增字典表")
|
@CreateOperationLogging(msg = "新增字典表")
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@PreAuthorize("@per.hasPermission('sys:dict:add')")
|
@PreAuthorize("@per.hasPermission('sys:dict:add')")
|
||||||
public R save(@RequestBody SysDict sysDict) {
|
public R<?> save(@RequestBody SysDict sysDict) {
|
||||||
return sysDictManager.dictSave(sysDict) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "新增字典表失败");
|
return sysDictManager.dictSave(sysDict) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "新增字典表失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ public class SysDictController {
|
|||||||
@UpdateOperationLogging(msg = "修改字典表")
|
@UpdateOperationLogging(msg = "修改字典表")
|
||||||
@PutMapping
|
@PutMapping
|
||||||
@PreAuthorize("@per.hasPermission('sys:dict:edit')")
|
@PreAuthorize("@per.hasPermission('sys:dict:edit')")
|
||||||
public R updateById(@RequestBody SysDict sysDict) {
|
public R<?> updateById(@RequestBody SysDict sysDict) {
|
||||||
return sysDictManager.updateDictById(sysDict) ? R.ok()
|
return sysDictManager.updateDictById(sysDict) ? R.ok()
|
||||||
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改字典表失败");
|
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改字典表失败");
|
||||||
}
|
}
|
||||||
@@ -104,7 +104,7 @@ public class SysDictController {
|
|||||||
@DeleteOperationLogging(msg = "通过id删除字典表")
|
@DeleteOperationLogging(msg = "通过id删除字典表")
|
||||||
@DeleteMapping("/{id}")
|
@DeleteMapping("/{id}")
|
||||||
@PreAuthorize("@per.hasPermission('sys:dict:del')")
|
@PreAuthorize("@per.hasPermission('sys:dict:del')")
|
||||||
public R removeById(@PathVariable Integer id) {
|
public R<?> removeById(@PathVariable Integer id) {
|
||||||
return sysDictManager.removeDictById(id) ? R.ok()
|
return sysDictManager.removeDictById(id) ? R.ok()
|
||||||
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "通过id删除字典表失败");
|
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "通过id删除字典表失败");
|
||||||
}
|
}
|
||||||
@@ -131,7 +131,7 @@ public class SysDictController {
|
|||||||
@CreateOperationLogging(msg = "新增字典项")
|
@CreateOperationLogging(msg = "新增字典项")
|
||||||
@PostMapping("item")
|
@PostMapping("item")
|
||||||
@PreAuthorize("@per.hasPermission('sys:dict:add')")
|
@PreAuthorize("@per.hasPermission('sys:dict:add')")
|
||||||
public R saveItem(@RequestBody SysDictItem sysDictItem) {
|
public R<?> saveItem(@RequestBody SysDictItem sysDictItem) {
|
||||||
return sysDictManager.saveDictItem(sysDictItem) ? R.ok()
|
return sysDictManager.saveDictItem(sysDictItem) ? R.ok()
|
||||||
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "新增字典项失败");
|
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "新增字典项失败");
|
||||||
}
|
}
|
||||||
@@ -145,7 +145,7 @@ public class SysDictController {
|
|||||||
@UpdateOperationLogging(msg = "修改字典项")
|
@UpdateOperationLogging(msg = "修改字典项")
|
||||||
@PutMapping("item")
|
@PutMapping("item")
|
||||||
@PreAuthorize("@per.hasPermission('sys:dict:edit')")
|
@PreAuthorize("@per.hasPermission('sys:dict:edit')")
|
||||||
public R updateItemById(@RequestBody SysDictItem sysDictItem) {
|
public R<?> updateItemById(@RequestBody SysDictItem sysDictItem) {
|
||||||
return sysDictManager.updateDictItemById(sysDictItem) ? R.ok()
|
return sysDictManager.updateDictItemById(sysDictItem) ? R.ok()
|
||||||
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改字典项失败");
|
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改字典项失败");
|
||||||
}
|
}
|
||||||
@@ -159,7 +159,7 @@ public class SysDictController {
|
|||||||
@DeleteOperationLogging(msg = "通过id删除字典项")
|
@DeleteOperationLogging(msg = "通过id删除字典项")
|
||||||
@DeleteMapping("/item/{id}")
|
@DeleteMapping("/item/{id}")
|
||||||
@PreAuthorize("@per.hasPermission('sys:dict:del')")
|
@PreAuthorize("@per.hasPermission('sys:dict:del')")
|
||||||
public R removeItemById(@PathVariable Integer id) {
|
public R<?> removeItemById(@PathVariable Integer id) {
|
||||||
return sysDictManager.removeDictItemById(id) ? R.ok()
|
return sysDictManager.removeDictItemById(id) ? R.ok()
|
||||||
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "通过id删除字典项失败");
|
: R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "通过id删除字典项失败");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.hccake.ballcat.admin.modules.sys.manager;
|
package com.hccake.ballcat.admin.modules.sys.manager;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
@@ -19,6 +20,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -108,12 +110,13 @@ public class SysDictManager {
|
|||||||
* @param sysDictItem 字典项
|
* @param sysDictItem 字典项
|
||||||
* @return 执行是否成功
|
* @return 执行是否成功
|
||||||
*/
|
*/
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public boolean saveDictItem(SysDictItem sysDictItem) {
|
public boolean saveDictItem(SysDictItem sysDictItem) {
|
||||||
// 更新字典项Hash值
|
// 更新字典项Hash值
|
||||||
if (!sysDictService.updateHashCode(sysDictItem.getDictCode())) {
|
if (sysDictService.updateHashCode(sysDictItem.getDictCode())) {
|
||||||
return false;
|
return sysDictItemService.save(sysDictItem);
|
||||||
}
|
}
|
||||||
return sysDictItemService.save(sysDictItem);
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -154,31 +157,35 @@ public class SysDictManager {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询字典数据
|
* 查询字典数据
|
||||||
* @param dictCode
|
* @param dictCodes 字典标识
|
||||||
* @return
|
* @return DictDataAndHashVO
|
||||||
*/
|
*/
|
||||||
public DictDataAndHashVO queryDictDataAndHashVO(String dictCode) {
|
public List<DictDataAndHashVO> queryDictDataAndHashVO(String[] dictCodes) {
|
||||||
|
List<DictDataAndHashVO> list = new ArrayList<>();
|
||||||
// 查询对应hash值,以及字典项数据
|
// 查询对应hash值,以及字典项数据
|
||||||
SysDict sysDict = sysDictService.getByCode(dictCode);
|
List<SysDict> sysDictList = sysDictService.getByCode(dictCodes);
|
||||||
if (sysDict == null) {
|
if (CollectionUtil.isNotEmpty(sysDictList)) {
|
||||||
return null;
|
for (SysDict sysDict : sysDictList) {
|
||||||
}
|
List<SysDictItem> dictItems = sysDictItemService.getByDictCode(sysDict.getCode());
|
||||||
List<SysDictItem> dictItems = sysDictItemService.getByDictCode(dictCode);
|
// 排序并转换为VO
|
||||||
// 排序并转换为VO
|
List<DictItemVO> dictList = dictItems.stream().sorted(Comparator.comparingInt(SysDictItem::getSort))
|
||||||
List<DictItemVO> dictList = dictItems.stream().sorted(Comparator.comparingInt(SysDictItem::getSort))
|
.map(SysDictConverter.INSTANCE::itemPoToVo).collect(Collectors.toList());
|
||||||
.map(SysDictConverter.INSTANCE::itemPoToVo).collect(Collectors.toList());
|
// 组装DataVO
|
||||||
|
DictDataAndHashVO dictDataAndHashVO = new DictDataAndHashVO();
|
||||||
|
dictDataAndHashVO.setDictCode(sysDict.getCode());
|
||||||
|
dictDataAndHashVO.setHashCode(sysDict.getHashCode());
|
||||||
|
dictDataAndHashVO.setDictList(dictList);
|
||||||
|
|
||||||
// 组装DataVO
|
list.add(dictDataAndHashVO);
|
||||||
DictDataAndHashVO dictDataAndHashVO = new DictDataAndHashVO();
|
}
|
||||||
dictDataAndHashVO.setHashCode(sysDict.getHashCode());
|
}
|
||||||
dictDataAndHashVO.setDictList(dictList);
|
return list;
|
||||||
return dictDataAndHashVO;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回失效的Hash
|
* 返回失效的Hash
|
||||||
* @param dictHashCode 校验的hashCodeMap
|
* @param dictHashCode 校验的hashCodeMap
|
||||||
* @return
|
* @return List<String> 失效的字典标识集合
|
||||||
*/
|
*/
|
||||||
public List<String> invalidDictHash(Map<String, String> dictHashCode) {
|
public List<String> invalidDictHash(Map<String, String> dictHashCode) {
|
||||||
List<SysDict> byCode = sysDictService.getByCode(dictHashCode.keySet().toArray(new String[] {}));
|
List<SysDict> byCode = sysDictService.getByCode(dictHashCode.keySet().toArray(new String[] {}));
|
||||||
|
|||||||
@@ -15,6 +15,12 @@ import java.util.List;
|
|||||||
@ApiModel(value = "字典数据VO")
|
@ApiModel(value = "字典数据VO")
|
||||||
public class DictDataAndHashVO {
|
public class DictDataAndHashVO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 字典标识
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "字典标识")
|
||||||
|
private String dictCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字典Hash值
|
* 字典Hash值
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -39,8 +39,8 @@ public interface SysDictService extends IService<SysDict> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新字典HashCode
|
* 更新字典HashCode
|
||||||
* @param dictCode
|
* @param dictCode 字典标识
|
||||||
* @return
|
* @return 更新状态 成功(true) or 失败 (false)
|
||||||
*/
|
*/
|
||||||
boolean updateHashCode(String dictCode);
|
boolean updateHashCode(String dictCode);
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
||||||
|
import com.hccake.ballcat.admin.modules.sys.mapper.SysDictMapper;
|
||||||
import com.hccake.ballcat.admin.modules.sys.model.entity.SysDict;
|
import com.hccake.ballcat.admin.modules.sys.model.entity.SysDict;
|
||||||
import com.hccake.ballcat.admin.modules.sys.model.qo.SysDictQO;
|
import com.hccake.ballcat.admin.modules.sys.model.qo.SysDictQO;
|
||||||
import com.hccake.ballcat.admin.modules.sys.mapper.SysDictMapper;
|
|
||||||
import com.hccake.ballcat.admin.modules.sys.service.SysDictService;
|
import com.hccake.ballcat.admin.modules.sys.service.SysDictService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -63,8 +63,8 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新字典HashCode
|
* 更新字典HashCode
|
||||||
* @param dictCode
|
* @param dictCode 字典标识
|
||||||
* @return
|
* @return 更新状态: 成功(true) 失败(false)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean updateHashCode(String dictCode) {
|
public boolean updateHashCode(String dictCode) {
|
||||||
|
|||||||
Reference in New Issue
Block a user