Skip to content

Commit

Permalink
refactor: 优化枚举字典处理,增加颜色类型
Browse files Browse the repository at this point in the history
1.重构 useDict 方法,同时支持枚举和查询字典,对应后端接口增加缓存处理
2.优化 BaseEnum 处理,增加 color 字段可用于设置对应枚举背景颜色(同字典背景颜色)
  • Loading branch information
Charles7c committed Sep 17, 2023
1 parent 3a3a5d6 commit 1f73aa7
Show file tree
Hide file tree
Showing 33 changed files with 234 additions and 191 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,21 @@
* @author Charles7c
* @since 2023/2/5 20:44
*/
public interface BaseEnum<V extends Serializable, D extends Serializable> extends IEnum<V> {
public interface BaseEnum<V extends Serializable> extends IEnum<V> {

/**
* 枚举描述
*
* @return 枚举描述
*/
D getDescription();
String getDescription();

/**
* 颜色
*
* @return 颜色
*/
default String getColor() {
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
* @author Charles7c
* @since 2023/2/5 19:29
*/
public class ExcelBaseEnumConverter implements Converter<BaseEnum<Integer, String>> {
public class ExcelBaseEnumConverter implements Converter<BaseEnum<Integer>> {

@Override
public Class<BaseEnum> supportJavaTypeKey() {
Expand All @@ -60,8 +60,8 @@ public BaseEnum convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty
* 转换为 Excel 数据(写入 Excel)
*/
@Override
public WriteCellData<String> convertToExcelData(BaseEnum<Integer, String> value,
ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
public WriteCellData<String> convertToExcelData(BaseEnum<Integer> value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
if (null == value) {
return new WriteCellData<>(StringConsts.EMPTY);
}
Expand All @@ -77,11 +77,11 @@ public WriteCellData<String> convertToExcelData(BaseEnum<Integer, String> value,
* 描述
* @return 对应枚举 ,获取不到时为 {@code null}
*/
private BaseEnum<Integer, String> getEnum(Class<?> enumType, String description) {
private BaseEnum<Integer> getEnum(Class<?> enumType, String description) {
Object[] enumConstants = enumType.getEnumConstants();
for (Object enumConstant : enumConstants) {
if (ClassUtil.isAssignable(BaseEnum.class, enumType)) {
BaseEnum<Integer, String> baseEnum = (BaseEnum<Integer, String>)enumConstant;
BaseEnum<Integer> baseEnum = (BaseEnum<Integer>)enumConstant;
if (baseEnum.getDescription().equals(description)) {
return baseEnum;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@ public class CacheConsts {
*/
public static final String MENU_KEY_PREFIX = "MENU";

/**
* 字典缓存键前缀
*/
public static final String DICT_KEY_PREFIX = "DICT";

/**
* 仪表盘缓存键前缀
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
* Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package top.charles7c.cnadmin.common.constant;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;

/**
* UI 相关常量
*
* @author Charles7c
* @since 2023/9/17 14:12
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class UIConsts {

/**
* 主色(极致蓝)
*/
public static final String COLOR_PRIMARY = "arcoblue";

/**
* 成功色(仙野绿)
*/
public static final String COLOR_SUCCESS = "green";

/**
* 警告色(活力橙)
*/
public static final String COLOR_WARNING = "orangered";

/**
* 错误色(浪漫红)
*/
public static final String COLOR_ERROR = "red";

/**
* 默认色(中性灰)
*/
public static final String COLOR_DEFAULT = "gray";
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
*/
@Getter
@RequiredArgsConstructor
public enum DataScopeEnum implements BaseEnum<Integer, String> {
public enum DataScopeEnum implements BaseEnum<Integer> {

/** 全部数据权限 */
ALL(1, "全部数据权限"),
Expand All @@ -43,8 +43,8 @@ public enum DataScopeEnum implements BaseEnum<Integer, String> {
/** 仅本人数据权限 */
SELF(4, "仅本人数据权限"),

/** 自定数据权限 */
CUSTOM(5, "自定数据权限"),;
/** 自定义数据权限 */
CUSTOM(5, "自定义数据权限"),;

private final Integer value;
private final String description;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import lombok.RequiredArgsConstructor;

import top.charles7c.cnadmin.common.base.BaseEnum;
import top.charles7c.cnadmin.common.constant.UIConsts;

/**
* 数据类型枚举
Expand All @@ -29,14 +30,15 @@
*/
@Getter
@RequiredArgsConstructor
public enum DataTypeEnum implements BaseEnum<Integer, String> {
public enum DataTypeEnum implements BaseEnum<Integer> {

/** 系统内置 */
SYSTEM(1, "系统内置"),
SYSTEM(1, "系统内置", UIConsts.COLOR_ERROR),

/** 自定义 */
CUSTOM(2, "自定义"),;
CUSTOM(2, "自定义", UIConsts.COLOR_PRIMARY),;

private final Integer value;
private final String description;
private final String color;
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
*/
@Getter
@RequiredArgsConstructor
public enum DisEnableStatusEnum implements BaseEnum<Integer, String> {
public enum DisEnableStatusEnum implements BaseEnum<Integer> {

/** 启用 */
ENABLE(1, "启用"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
*/
@Getter
@RequiredArgsConstructor
public enum GenderEnum implements BaseEnum<Integer, String> {
public enum GenderEnum implements BaseEnum<Integer> {

/** 未知 */
UNKNOWN(0, "未知"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
*/
@Getter
@RequiredArgsConstructor
public enum MenuTypeEnum implements BaseEnum<Integer, String> {
public enum MenuTypeEnum implements BaseEnum<Integer> {

/** 目录 */
DIR(1, "目录"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
*/
@Getter
@RequiredArgsConstructor
public enum QueryTypeEnum implements BaseEnum<Integer, String> {
public enum QueryTypeEnum implements BaseEnum<Integer> {

/**
* 等值查询,例如:WHERE `age` = 18
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import lombok.RequiredArgsConstructor;

import top.charles7c.cnadmin.common.base.BaseEnum;
import top.charles7c.cnadmin.common.constant.UIConsts;

/**
* 成功/失败状态枚举
Expand All @@ -29,14 +30,15 @@
*/
@Getter
@RequiredArgsConstructor
public enum SuccessFailureStatusEnum implements BaseEnum<Integer, String> {
public enum SuccessFailureStatusEnum implements BaseEnum<Integer> {

/** 成功 */
SUCCESS(1, "成功"),
SUCCESS(1, "成功", UIConsts.COLOR_SUCCESS),

/** 失败 */
FAILURE(2, "失败"),;
FAILURE(2, "失败", UIConsts.COLOR_ERROR),;

private final Integer value;
private final String description;
private final String color;
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
*/
@Getter
@RequiredArgsConstructor
public enum LogStatusEnum implements BaseEnum<Integer, String> {
public enum LogStatusEnum implements BaseEnum<Integer> {

/** 成功 */
SUCCESS(1, "成功"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,28 @@
import lombok.RequiredArgsConstructor;

import top.charles7c.cnadmin.common.base.BaseEnum;
import top.charles7c.cnadmin.common.constant.UIConsts;

/**
* 公告类型枚举(计划 v1.2.0 增加字典管理,用于维护此类信息)
* 公告状态枚举
*
* @author Charles7c
* @since 2023/8/20 10:55
*/
@Getter
@RequiredArgsConstructor
public enum AnnouncementTypeEnum implements BaseEnum<Integer, String> {
public enum AnnouncementStatusEnum implements BaseEnum<Integer> {

/** 活动 */
ACTIVITY(1, "活动"),
/** 待发布 */
PENDING_RELEASE(1, "待发布", UIConsts.COLOR_PRIMARY),

/** 消息 */
MESSAGE(2, "消息"),
/** 已发布 */
PUBLISHED(2, "已发布", UIConsts.COLOR_SUCCESS),

/** 通知 */
NOTICE(3, "通知"),;
/** 已过期 */
EXPIRED(3, "已过期", UIConsts.COLOR_ERROR),;

private final Integer value;
private final String description;
private final String color;
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ public class AnnouncementQuery implements Serializable {
private String title;

/**
* 类型(1:活动,2:消息,3:通知)
* 类型
*/
@Schema(description = "类型(1:活动,2:消息,3:通知)", example = "1")
@Schema(description = "类型", example = "1")
@Query(type = QueryTypeEnum.EQUAL)
private Integer type;
private String type;
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import io.swagger.v3.oas.annotations.media.Schema;

import top.charles7c.cnadmin.common.base.BaseVO;
import top.charles7c.cnadmin.system.enums.AnnouncementStatusEnum;

/**
* 公告信息
Expand Down Expand Up @@ -65,15 +66,14 @@ public class AnnouncementVO extends BaseVO {
*
* @return 公告状态
*/
@Schema(description = "状态(1:待发布,2:已发布,3:已过期)", example = "1")
public Integer getStatus() {
int status = 2;
@Schema(description = "状态(1:待发布,2:已发布,3:已过期)", type = "Integer", allowableValues = {"1", "2", "3"}, example = "1")
public AnnouncementStatusEnum getStatus() {
if (null != this.effectiveTime && this.effectiveTime.isAfter(LocalDateTime.now())) {
status = 1;
return AnnouncementStatusEnum.PENDING_RELEASE;
}
if (null != this.terminateTime && this.terminateTime.isBefore(LocalDateTime.now())) {
status = 3;
return AnnouncementStatusEnum.EXPIRED;
}
return status;
return AnnouncementStatusEnum.PUBLISHED;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@

import io.swagger.v3.oas.annotations.media.Schema;

import top.charles7c.cnadmin.system.enums.AnnouncementTypeEnum;

/**
* 仪表盘-公告信息
*
Expand All @@ -49,8 +47,8 @@ public class DashboardAnnouncementVO implements Serializable {
private String title;

/**
* 类型
* 类型(取值于字典 announcement_type)
*/
@Schema(description = "类型", type = "Integer", allowableValues = {"1", "2", "3"}, example = "1")
private AnnouncementTypeEnum type;
@Schema(description = "类型(取值于字典 announcement_type)", example = "1")
private String type;
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,13 @@

import lombok.RequiredArgsConstructor;

import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import top.charles7c.cnadmin.common.base.BaseServiceImpl;
import top.charles7c.cnadmin.common.constant.CacheConsts;
import top.charles7c.cnadmin.common.model.query.SortQuery;
import top.charles7c.cnadmin.common.model.vo.LabelValueVO;
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
Expand All @@ -43,11 +46,13 @@
*/
@Service
@RequiredArgsConstructor
@CacheConfig(cacheNames = CacheConsts.DICT_KEY_PREFIX)
public class DictItemServiceImpl
extends BaseServiceImpl<DictItemMapper, DictItemDO, DictItemVO, DictItemDetailVO, DictItemQuery, DictItemRequest>
implements DictItemService {

@Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class)
public Long add(DictItemRequest request) {
String value = request.getValue();
Expand All @@ -56,6 +61,7 @@ public Long add(DictItemRequest request) {
}

@Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class)
public void update(DictItemRequest request, Long id) {
String value = request.getValue();
Expand All @@ -80,6 +86,7 @@ public List<LabelValueVO> listByDictCode(String dictCode) {
}

@Override
@CacheEvict(allEntries = true)
public void deleteByDictIds(List<Long> dictIds) {
baseMapper.lambdaUpdate().in(DictItemDO::getDictId, dictIds).remove();
}
Expand Down
Loading

0 comments on commit 1f73aa7

Please sign in to comment.