feat(icon_manage): 支持根据图标类型筛选图标
This commit is contained in:
parent
0638c16837
commit
ece9bdf777
@ -5,8 +5,10 @@ import cn.axzo.oss.client.icon.vo.request.IconDetailAddReq;
|
|||||||
import cn.axzo.oss.client.icon.vo.request.IconDetailListReq;
|
import cn.axzo.oss.client.icon.vo.request.IconDetailListReq;
|
||||||
import cn.axzo.oss.client.icon.vo.request.IconDetailUpdateReq;
|
import cn.axzo.oss.client.icon.vo.request.IconDetailUpdateReq;
|
||||||
import cn.axzo.oss.client.icon.vo.request.IconDetailUpdateStatus;
|
import cn.axzo.oss.client.icon.vo.request.IconDetailUpdateStatus;
|
||||||
|
import cn.axzo.oss.client.icon.vo.request.IconTypeListReq;
|
||||||
import cn.axzo.oss.client.icon.vo.response.IconDetailListResp;
|
import cn.axzo.oss.client.icon.vo.response.IconDetailListResp;
|
||||||
import cn.azxo.framework.common.model.CommonResponse;
|
import cn.azxo.framework.common.model.CommonResponse;
|
||||||
|
import cn.hutool.json.JSONNull;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -92,6 +94,19 @@ public class IconDetailController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/list")
|
@PostMapping("/list")
|
||||||
public CommonResponse<List<IconDetailListResp>> list(@RequestBody IconDetailListReq req) {
|
public CommonResponse<List<IconDetailListResp>> list(@RequestBody IconDetailListReq req) {
|
||||||
|
log.info("图标列表:req = {}", JSONUtil.toJsonStr(req));
|
||||||
return CommonResponse.success(iconDetailService.list(req));
|
return CommonResponse.success(iconDetailService.list(req));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有图标文件格式
|
||||||
|
*
|
||||||
|
* @param req 图标信息 {@link IconTypeListReq}
|
||||||
|
* @return 图标文件格式列表
|
||||||
|
*/
|
||||||
|
@PostMapping("/getAllTypes")
|
||||||
|
public CommonResponse<List<String>> getAllTypes(@RequestBody IconTypeListReq req) {
|
||||||
|
log.info("获取所有图标文件格式:req = {}", JSONUtil.toJsonStr(req));
|
||||||
|
return CommonResponse.success(iconDetailService.getAllTypes(req));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,6 +45,12 @@ public class IconDetail extends Model<IconDetail> {
|
|||||||
@TableField("name")
|
@TableField("name")
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图标类型
|
||||||
|
*/
|
||||||
|
@TableField("type")
|
||||||
|
private String type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 图标地址
|
* 图标地址
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import cn.axzo.oss.client.icon.vo.request.IconDetailAddReq;
|
|||||||
import cn.axzo.oss.client.icon.vo.request.IconDetailListReq;
|
import cn.axzo.oss.client.icon.vo.request.IconDetailListReq;
|
||||||
import cn.axzo.oss.client.icon.vo.request.IconDetailUpdateReq;
|
import cn.axzo.oss.client.icon.vo.request.IconDetailUpdateReq;
|
||||||
import cn.axzo.oss.client.icon.vo.request.IconDetailUpdateStatus;
|
import cn.axzo.oss.client.icon.vo.request.IconDetailUpdateStatus;
|
||||||
|
import cn.axzo.oss.client.icon.vo.request.IconTypeListReq;
|
||||||
import cn.axzo.oss.client.icon.vo.response.IconDetailListResp;
|
import cn.axzo.oss.client.icon.vo.response.IconDetailListResp;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -55,4 +56,12 @@ public interface IconDetailService {
|
|||||||
* @return 图标详情
|
* @return 图标详情
|
||||||
*/
|
*/
|
||||||
IconDetailListResp detailById(Long id);
|
IconDetailListResp detailById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有图标类型
|
||||||
|
*
|
||||||
|
* @param req 图标类型请求 {@link IconTypeListReq}
|
||||||
|
* @return 图标类型
|
||||||
|
*/
|
||||||
|
List<String> getAllTypes(IconTypeListReq req);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package cn.axzo.oss.client.icon.service.impl;
|
package cn.axzo.oss.client.icon.service.impl;
|
||||||
|
|
||||||
import cn.axzo.basics.common.BeanMapper;
|
import cn.axzo.basics.common.BeanMapper;
|
||||||
|
import cn.axzo.basics.common.exception.ServiceException;
|
||||||
import cn.axzo.oss.client.icon.entity.IconDetail;
|
import cn.axzo.oss.client.icon.entity.IconDetail;
|
||||||
import cn.axzo.oss.client.icon.entity.IconGroup;
|
import cn.axzo.oss.client.icon.entity.IconGroup;
|
||||||
import cn.axzo.oss.client.icon.repository.IconDetailRepository;
|
import cn.axzo.oss.client.icon.repository.IconDetailRepository;
|
||||||
@ -9,9 +10,11 @@ import cn.axzo.oss.client.icon.service.IconDetailService;
|
|||||||
import cn.axzo.oss.client.icon.vo.request.IconDetailAddReq;
|
import cn.axzo.oss.client.icon.vo.request.IconDetailAddReq;
|
||||||
import cn.axzo.oss.client.icon.vo.request.IconDetailListReq;
|
import cn.axzo.oss.client.icon.vo.request.IconDetailListReq;
|
||||||
import cn.axzo.oss.client.icon.vo.request.IconDetailUpdateReq;
|
import cn.axzo.oss.client.icon.vo.request.IconDetailUpdateReq;
|
||||||
|
import cn.axzo.oss.client.icon.vo.request.IconTypeListReq;
|
||||||
import cn.axzo.oss.client.icon.vo.response.IconDetailListResp;
|
import cn.axzo.oss.client.icon.vo.response.IconDetailListResp;
|
||||||
import cn.axzo.oss.common.enums.CodeEnum;
|
import cn.axzo.oss.common.enums.CodeEnum;
|
||||||
import cn.axzo.oss.common.exception.BizException;
|
import cn.axzo.oss.common.exception.BizException;
|
||||||
|
import cn.hutool.core.util.ArrayUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -20,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -66,7 +70,15 @@ public class IconDetailServiceImpl implements IconDetailService {
|
|||||||
.one();
|
.one();
|
||||||
// 存在
|
// 存在
|
||||||
BizException.error(Objects.isNull(iconDetail), CodeEnum.ICON_EXIST);
|
BizException.error(Objects.isNull(iconDetail), CodeEnum.ICON_EXIST);
|
||||||
return iconDetailRepository.save(BeanMapper.copyBean(req, IconDetail.class, (r, i) -> i.setExt(JSONUtil.toJsonStr(r.getExt()))));
|
return iconDetailRepository.save(BeanMapper.copyBean(req, IconDetail.class, (r, i) -> {
|
||||||
|
i.setExt(JSONUtil.toJsonStr(r.getExt()));
|
||||||
|
// 获取图标格式
|
||||||
|
String[] split = r.getName().split("\\.");
|
||||||
|
if (ArrayUtil.isEmpty(split)){
|
||||||
|
throw new ServiceException(CodeEnum.FILE_FORMAT_MAY_ERROR.getMessage());
|
||||||
|
}
|
||||||
|
i.setType(split[split.length-1].toLowerCase());
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -140,6 +152,9 @@ public class IconDetailServiceImpl implements IconDetailService {
|
|||||||
.in(!CollectionUtils.isEmpty(req.getGroupIds()), IconDetail::getGroupId, req.getGroupIds())
|
.in(!CollectionUtils.isEmpty(req.getGroupIds()), IconDetail::getGroupId, req.getGroupIds())
|
||||||
.in(!CollectionUtils.isEmpty(req.getIds()), IconDetail::getId, req.getIds())
|
.in(!CollectionUtils.isEmpty(req.getIds()), IconDetail::getId, req.getIds())
|
||||||
.like(StringUtils.hasText(req.getName()), IconDetail::getName, req)
|
.like(StringUtils.hasText(req.getName()), IconDetail::getName, req)
|
||||||
|
.in(!CollectionUtils.isEmpty(req.getTypes()), IconDetail::getType, req.getTypes().stream()
|
||||||
|
.map(e -> e.trim().toLowerCase())
|
||||||
|
.collect(Collectors.toList()))
|
||||||
.in(!CollectionUtils.isEmpty(req.getStatuses()), IconDetail::getStatus, req.getStatuses())
|
.in(!CollectionUtils.isEmpty(req.getStatuses()), IconDetail::getStatus, req.getStatuses())
|
||||||
.list();
|
.list();
|
||||||
if (CollectionUtils.isEmpty(iconDetailList)) {
|
if (CollectionUtils.isEmpty(iconDetailList)) {
|
||||||
@ -183,4 +198,27 @@ public class IconDetailServiceImpl implements IconDetailService {
|
|||||||
r.setGroupName(iconGroup.getGroup());
|
r.setGroupName(iconGroup.getGroup());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取图标所有类型
|
||||||
|
*
|
||||||
|
* @param req 查询参数 {@link IconTypeListReq}
|
||||||
|
* @return 所有类型 {@link List<String>}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<String> getAllTypes(IconTypeListReq req) {
|
||||||
|
List<IconDetail> iconDetailList = iconDetailRepository.lambdaQuery()
|
||||||
|
.eq(IconDetail::getIsDelete, 0)
|
||||||
|
.in(!CollectionUtils.isEmpty(req.getGroupIds()), IconDetail::getGroupId, req.getGroupIds().stream()
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList()))
|
||||||
|
.list();
|
||||||
|
if (CollectionUtils.isEmpty(iconDetailList)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return iconDetailList.stream()
|
||||||
|
.map(IconDetail::getType)
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,6 +33,11 @@ public class IconDetailListReq {
|
|||||||
*/
|
*/
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类型,如:svg,png,多个用逗号分隔
|
||||||
|
*/
|
||||||
|
private List<String> types;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态,0:正常,1:禁用,多个用逗号分隔
|
* 状态,0:正常,1:禁用,多个用逗号分隔
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -0,0 +1,27 @@
|
|||||||
|
package cn.axzo.oss.client.icon.vo.request;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图标类型列表请求
|
||||||
|
* @author chenwenjian
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/3/11 10:39
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class IconTypeListReq {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分组ID,多个用逗号分隔
|
||||||
|
*/
|
||||||
|
private List<Long> groupIds;
|
||||||
|
|
||||||
|
}
|
||||||
@ -45,6 +45,11 @@ public class IconDetailListResp {
|
|||||||
*/
|
*/
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图标类型,如svg,png
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 图标地址
|
* 图标地址
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -50,7 +50,8 @@ public enum CodeEnum implements EnumBase<Integer> {
|
|||||||
|
|
||||||
ICON_GROUP_EXIST(116, "图标组已存在"),
|
ICON_GROUP_EXIST(116, "图标组已存在"),
|
||||||
ICON_GROUP_NOT_EXIST(117, "图标组不存在"),
|
ICON_GROUP_NOT_EXIST(117, "图标组不存在"),
|
||||||
ICON_EXIST(118, "图标已存在")
|
ICON_EXIST(118, "图标已存在"),
|
||||||
|
FILE_FORMAT_MAY_ERROR(119, "文件格式可能错误")
|
||||||
|
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user