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.IconDetailUpdateReq;
|
||||
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.azxo.framework.common.model.CommonResponse;
|
||||
import cn.hutool.json.JSONNull;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -92,6 +94,19 @@ public class IconDetailController {
|
||||
*/
|
||||
@PostMapping("/list")
|
||||
public CommonResponse<List<IconDetailListResp>> list(@RequestBody IconDetailListReq req) {
|
||||
log.info("图标列表:req = {}", JSONUtil.toJsonStr(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")
|
||||
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.IconDetailUpdateReq;
|
||||
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 java.util.List;
|
||||
@ -55,4 +56,12 @@ public interface IconDetailService {
|
||||
* @return 图标详情
|
||||
*/
|
||||
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;
|
||||
|
||||
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.IconGroup;
|
||||
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.IconDetailListReq;
|
||||
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.common.enums.CodeEnum;
|
||||
import cn.axzo.oss.common.exception.BizException;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -20,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -66,7 +70,15 @@ public class IconDetailServiceImpl implements IconDetailService {
|
||||
.one();
|
||||
// 存在
|
||||
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.getIds()), IconDetail::getId, req.getIds())
|
||||
.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())
|
||||
.list();
|
||||
if (CollectionUtils.isEmpty(iconDetailList)) {
|
||||
@ -183,4 +198,27 @@ public class IconDetailServiceImpl implements IconDetailService {
|
||||
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;
|
||||
|
||||
/**
|
||||
* 类型,如:svg,png,多个用逗号分隔
|
||||
*/
|
||||
private List<String> types;
|
||||
|
||||
/**
|
||||
* 状态,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;
|
||||
|
||||
/**
|
||||
* 图标类型,如svg,png
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 图标地址
|
||||
*/
|
||||
|
||||
@ -50,7 +50,8 @@ public enum CodeEnum implements EnumBase<Integer> {
|
||||
|
||||
ICON_GROUP_EXIST(116, "图标组已存在"),
|
||||
ICON_GROUP_NOT_EXIST(117, "图标组不存在"),
|
||||
ICON_EXIST(118, "图标已存在")
|
||||
ICON_EXIST(118, "图标已存在"),
|
||||
FILE_FORMAT_MAY_ERROR(119, "文件格式可能错误")
|
||||
|
||||
|
||||
;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user