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