字典序列化

master
lzq 2025-12-17 18:35:42 +08:00
parent 08cfaa9665
commit 9d1f8beac9
22 changed files with 279 additions and 58 deletions

View File

@ -1,14 +1,12 @@
package com.njzscloud.common.core.fastjson.serializer; package com.njzscloud.common.core.fastjson.serializer;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONReader; import com.alibaba.fastjson2.JSONReader;
import com.alibaba.fastjson2.reader.ObjectReader; import com.alibaba.fastjson2.reader.ObjectReader;
import com.alibaba.fastjson2.util.TypeUtils; import com.alibaba.fastjson2.util.TypeUtils;
import com.njzscloud.common.core.ex.Exceptions; import com.njzscloud.common.core.ex.Exceptions;
import com.njzscloud.common.core.ienum.Dict; import com.njzscloud.common.core.ienum.*;
import com.njzscloud.common.core.ienum.DictInt;
import com.njzscloud.common.core.ienum.DictStr;
import com.njzscloud.common.core.ienum.IEnum;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Type; import java.lang.reflect.Type;
@ -40,18 +38,28 @@ public class DictObjectDeserializer implements ObjectReader<Dict> {
Map<String, Object> map = jsonReader.readObject(); Map<String, Object> map = jsonReader.readObject();
String typeField = (String) map.get(IEnum.ENUM_TYPE); String typeField = (String) map.get(IEnum.ENUM_TYPE);
Object valField = map.get(Dict.ENUM_VAL); Object valField = map.get(Dict.ENUM_VAL);
Class<?> clazz;
if (typeField == null) {
clazz = TypeUtils.getClass(fieldType);
} else {
clazz = CLASSLOADER.loadClass(typeField);
}
if (valField instanceof String val) {
Class<?> clazz = CLASSLOADER.loadClass(typeField);
if (valField instanceof String) {
if (DictStr.class.isAssignableFrom(clazz)) { if (DictStr.class.isAssignableFrom(clazz)) {
DictStr[] constants = (DictStr[]) clazz.getEnumConstants(); if (clazz.isEnum()) {
return Dict.parse((String) valField, constants); DictStr[] constants = (DictStr[]) clazz.getEnumConstants();
return Dict.parse(val, constants);
} else {
if (StrUtil.isBlank(val)) return null;
String keyField = (String) map.get(Dict.ENUM_KEY);
return DictItem.get(keyField, val);
}
} else if (DictInt.class.isAssignableFrom(clazz)) { } else if (DictInt.class.isAssignableFrom(clazz)) {
DictInt[] constants = (DictInt[]) clazz.getEnumConstants(); DictInt[] constants = (DictInt[]) clazz.getEnumConstants();
return Dict.parse(Integer.parseInt((String) valField), constants); return Dict.parse(Integer.parseInt(val), constants);
} else { } else {
return null; return null;
} }
@ -71,12 +79,19 @@ public class DictObjectDeserializer implements ObjectReader<Dict> {
} else { } else {
if (jsonReader.isString()) { if (jsonReader.isString()) {
Class<?> clazz = TypeUtils.getClass(fieldType); Class<?> clazz = TypeUtils.getClass(fieldType);
String val = jsonReader.readString();
if (DictStr.class.isAssignableFrom(clazz)) { if (DictStr.class.isAssignableFrom(clazz)) {
String val = jsonReader.readString(); if (clazz.isEnum()) {
DictStr[] constants = (DictStr[]) clazz.getEnumConstants(); DictStr[] constants = (DictStr[]) clazz.getEnumConstants();
return Dict.parse(val, constants); return Dict.parse(val, constants);
} else {
if (StrUtil.isBlank(val)) return null;
DictKey annotation = clazz.getAnnotation(DictKey.class);
if (annotation == null) return null;
String value = annotation.value();
return DictItem.get(value, val);
}
} else if (DictInt.class.isAssignableFrom(clazz)) { } else if (DictInt.class.isAssignableFrom(clazz)) {
String val = jsonReader.readString();
DictInt[] constants = (DictInt[]) clazz.getEnumConstants(); DictInt[] constants = (DictInt[]) clazz.getEnumConstants();
return Dict.parse(Integer.parseInt(val), constants); return Dict.parse(Integer.parseInt(val), constants);
} else { } else {

View File

@ -56,13 +56,19 @@ public class DictObjectSerializer implements ObjectWriter<Dict> {
jsonWriter.writeColon(); jsonWriter.writeColon();
jsonWriter.writeString(dict.getClass().getName()); jsonWriter.writeString(dict.getClass().getName());
jsonWriter.writeName(IEnum.ENUM_NAME); if (dict.getClass().isEnum()) {
jsonWriter.writeColon(); jsonWriter.writeName(IEnum.ENUM_NAME);
jsonWriter.writeString(((Enum<?>) dict).name()); jsonWriter.writeColon();
jsonWriter.writeString(((Enum<?>) dict).name());
jsonWriter.writeName(IEnum.ENUM_ORDINAL); jsonWriter.writeName(IEnum.ENUM_ORDINAL);
jsonWriter.writeColon();
jsonWriter.writeInt32(((Enum<?>) dict).ordinal());
}
jsonWriter.writeName(Dict.ENUM_KEY);
jsonWriter.writeColon(); jsonWriter.writeColon();
jsonWriter.writeInt32(((Enum<?>) dict).ordinal()); jsonWriter.writeAny(dict.getKey());
jsonWriter.writeName(Dict.ENUM_VAL); jsonWriter.writeName(Dict.ENUM_VAL);
jsonWriter.writeColon(); jsonWriter.writeColon();
@ -83,12 +89,21 @@ public class DictObjectSerializer implements ObjectWriter<Dict> {
jsonWriter.writeName(fieldName + "Txt"); jsonWriter.writeName(fieldName + "Txt");
jsonWriter.writeColon(); jsonWriter.writeColon();
jsonWriter.writeString(dictInt.getTxt()); jsonWriter.writeString(dictInt.getTxt());
jsonWriter.writeName(fieldName + "Key");
jsonWriter.writeColon();
jsonWriter.writeString(dictInt.getKey());
} else if (DictStr.class.isAssignableFrom(clazz)) { } else if (DictStr.class.isAssignableFrom(clazz)) {
DictStr dictStr = (DictStr) object; DictStr dictStr = (DictStr) object;
jsonWriter.writeString(dictStr.getVal()); jsonWriter.writeString(dictStr.getVal());
jsonWriter.writeName(fieldName + "Txt"); jsonWriter.writeName(fieldName + "Txt");
jsonWriter.writeColon(); jsonWriter.writeColon();
jsonWriter.writeString(dictStr.getTxt()); jsonWriter.writeString(dictStr.getTxt());
jsonWriter.writeName(fieldName + "Key");
jsonWriter.writeColon();
jsonWriter.writeString(dictStr.getKey());
} else { } else {
jsonWriter.writeNull(); jsonWriter.writeNull();
} }

View File

@ -33,6 +33,11 @@ public interface Dict<T> extends IEnum {
* txt * txt
*/ */
String ENUM_TXT = "txt"; String ENUM_TXT = "txt";
/**
* <br/>
* key
*/
String ENUM_KEY = "key";
/** /**
* "值" * "值"
@ -52,6 +57,13 @@ public interface Dict<T> extends IEnum {
return null; return null;
} }
/**
*
*/
default String getKey() {
return "";
}
/** /**
* *
* *

View File

@ -0,0 +1,72 @@
package com.njzscloud.common.core.ienum;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson2.annotation.JSONType;
import com.njzscloud.common.core.fastjson.serializer.DictObjectDeserializer;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
@Getter
@Setter
@ToString
@Accessors(chain = true)
@JSONType(deserializer = DictObjectDeserializer.class)
public class DictItem implements DictStr {
private static final Map<String, List<DictItem>> cache = new ConcurrentHashMap<>();
private String key;
private String val;
private String txt;
public static void put(String key, DictItem dictItem) {
cache.compute(key, (k, v) -> {
if (v == null) v = new LinkedList<>();
v.add(dictItem);
return v;
});
}
public static void put(String key, List<DictItem> list) {
cache.put(key, new LinkedList<>(list));
}
public static DictItem get(String key, String val) {
DictItem dictItem = new DictItem();
cache.compute(key, (k, v) -> {
if (CollUtil.isNotEmpty(v)) {
Optional<DictItem> first = v.stream().filter(it -> it.val.equals(val)).findFirst();
if (first.isPresent()) {
DictItem data = first.get();
dictItem.key = data.key;
dictItem.val = data.val;
dictItem.txt = data.txt;
}
}
return v;
});
if (dictItem.key == null) return null;
return dictItem;
}
public static void clear() {
cache.clear();
}
public static void remove(String key, String val) {
cache.compute(key, (k, v) -> {
if (CollUtil.isNotEmpty(v)) v.removeIf(it -> it.val.equals(val));
return v;
});
}
public static void remove(String key) {
cache.remove(key);
}
}

View File

@ -0,0 +1,15 @@
package com.njzscloud.common.core.ienum;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.PARAMETER;
@Target({FIELD, PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface DictKey {
String value();
}

View File

@ -1,5 +1,6 @@
package com.njzscloud.common.core.jackson.serializer; package com.njzscloud.common.core.jackson.serializer;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonStreamContext; import com.fasterxml.jackson.core.JsonStreamContext;
import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.core.JsonToken;
@ -9,10 +10,7 @@ import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.node.IntNode; import com.fasterxml.jackson.databind.node.IntNode;
import com.fasterxml.jackson.databind.node.TextNode; import com.fasterxml.jackson.databind.node.TextNode;
import com.njzscloud.common.core.ex.Exceptions; import com.njzscloud.common.core.ex.Exceptions;
import com.njzscloud.common.core.ienum.Dict; import com.njzscloud.common.core.ienum.*;
import com.njzscloud.common.core.ienum.DictInt;
import com.njzscloud.common.core.ienum.DictStr;
import com.njzscloud.common.core.ienum.IEnum;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.io.IOException; import java.io.IOException;
@ -106,8 +104,16 @@ public class DictDeserializer extends JsonDeserializer<Dict> {
Class<?> clazz = field.getType(); Class<?> clazz = field.getType();
if (DictStr.class.isAssignableFrom(clazz)) { if (DictStr.class.isAssignableFrom(clazz)) {
String val = p.getValueAsString(); String val = p.getValueAsString();
DictStr[] constants = (DictStr[]) clazz.getEnumConstants(); if (clazz.isEnum()) {
return Dict.parse(val, constants); DictStr[] constants = (DictStr[]) clazz.getEnumConstants();
return Dict.parse(val, constants);
} else {
if (StrUtil.isBlank(val)) return null;
DictKey annotation = field.getAnnotation(DictKey.class);
if (annotation == null) return null;
String value = annotation.value();
return DictItem.get(value, val);
}
} else if (DictInt.class.isAssignableFrom(clazz)) { } else if (DictInt.class.isAssignableFrom(clazz)) {
int val = p.getValueAsInt(); int val = p.getValueAsInt();
DictInt[] constants = (DictInt[]) clazz.getEnumConstants(); DictInt[] constants = (DictInt[]) clazz.getEnumConstants();

View File

@ -46,8 +46,11 @@ public class DictSerializer extends JsonSerializer<Dict> {
if (ctx.inRoot()) { if (ctx.inRoot()) {
gen.writeStartObject(); gen.writeStartObject();
gen.writeStringField(IEnum.ENUM_TYPE, value.getClass().getName()); gen.writeStringField(IEnum.ENUM_TYPE, value.getClass().getName());
gen.writeStringField(IEnum.ENUM_NAME, ((Enum<?>) value).name()); if (value.getClass().isEnum()) {
gen.writeNumberField(IEnum.ENUM_ORDINAL, ((Enum<?>) value).ordinal()); gen.writeStringField(IEnum.ENUM_NAME, ((Enum<?>) value).name());
gen.writeNumberField(IEnum.ENUM_ORDINAL, ((Enum<?>) value).ordinal());
}
gen.writeObjectField(Dict.ENUM_KEY, value.getKey());
gen.writeObjectField(Dict.ENUM_VAL, value.getVal()); gen.writeObjectField(Dict.ENUM_VAL, value.getVal());
gen.writeStringField(Dict.ENUM_TXT, value.getTxt()); gen.writeStringField(Dict.ENUM_TXT, value.getTxt());
gen.writeEndObject(); gen.writeEndObject();
@ -55,6 +58,7 @@ public class DictSerializer extends JsonSerializer<Dict> {
gen.writeObject(value.getVal()); gen.writeObject(value.getVal());
String currentName = ctx.getCurrentName(); String currentName = ctx.getCurrentName();
gen.writeStringField(currentName + "Txt", value.getTxt()); gen.writeStringField(currentName + "Txt", value.getTxt());
gen.writeStringField(currentName + "Key", value.getKey());
} }
} }
} }

View File

@ -1,11 +1,10 @@
package com.njzscloud.common.mvc.support; package com.njzscloud.common.mvc.support;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.njzscloud.common.core.ienum.Dict; import com.njzscloud.common.core.ienum.*;
import com.njzscloud.common.core.ienum.DictInt;
import com.njzscloud.common.core.ienum.DictStr;
import org.springframework.core.MethodParameter; import org.springframework.core.MethodParameter;
import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.support.WebDataBinderFactory; import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.HandlerMethodArgumentResolver;
@ -16,6 +15,13 @@ import org.springframework.web.method.support.ModelAndViewContainer;
*/ */
@SuppressWarnings({"ConstantConditions"}) @SuppressWarnings({"ConstantConditions"})
public class DictHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { public class DictHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
{
DictItem dictItem = new DictItem()
.setKey("key")
.setVal("val")
.setTxt("txt");
DictItem.put("key", dictItem);
}
/** /**
* {@link DictInt} {@link DictStr} * {@link DictInt} {@link DictStr}
@ -25,7 +31,8 @@ public class DictHandlerMethodArgumentResolver implements HandlerMethodArgumentR
*/ */
@Override @Override
public boolean supportsParameter(MethodParameter parameter) { public boolean supportsParameter(MethodParameter parameter) {
return DictInt.class.isAssignableFrom(parameter.getParameterType()) || DictStr.class.isAssignableFrom(parameter.getParameterType()); Class<?> parameterType = parameter.getParameterType();
return DictInt.class.isAssignableFrom(parameterType) || DictStr.class.isAssignableFrom(parameterType);
} }
/** /**
@ -40,8 +47,14 @@ public class DictHandlerMethodArgumentResolver implements HandlerMethodArgumentR
@Override @Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container, NativeWebRequest request, WebDataBinderFactory factory) throws Exception { public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container, NativeWebRequest request, WebDataBinderFactory factory) throws Exception {
String parameterName = parameter.getParameterName(); String parameterName = parameter.getParameterName();
String param = request.getParameter(parameterName);
if (parameterName == null) {
RequestParam parameterAnnotation = parameter.getParameterAnnotation(RequestParam.class);
if (parameterAnnotation == null) return null;
parameterName = parameterAnnotation.value();
}
String param = request.getParameter(parameterName);
if (StrUtil.isBlank(param)) return null; if (StrUtil.isBlank(param)) return null;
Class<?> type = parameter.getParameterType(); Class<?> type = parameter.getParameterType();
@ -51,8 +64,16 @@ public class DictHandlerMethodArgumentResolver implements HandlerMethodArgumentR
DictInt[] constants = (DictInt[]) type.getEnumConstants(); DictInt[] constants = (DictInt[]) type.getEnumConstants();
return Dict.parse(val, constants); return Dict.parse(val, constants);
} else if (DictStr.class.isAssignableFrom(type)) { } else if (DictStr.class.isAssignableFrom(type)) {
DictStr[] constants = (DictStr[]) type.getEnumConstants(); if (type.isEnum()) {
return Dict.parse(param, constants); DictStr[] constants = (DictStr[]) type.getEnumConstants();
return Dict.parse(param, constants);
} else {
if (StrUtil.isBlank(param)) return null;
DictKey annotation = parameter.getParameterAnnotation(DictKey.class);
if (annotation == null) return null;
String value = annotation.value();
return DictItem.get(value, param);
}
} else { } else {
return null; return null;
} }

View File

@ -60,7 +60,9 @@ public class SecurityUtil {
* @param userDetail * @param userDetail
*/ */
public static UserDetail registrationUser(UserDetail userDetail) { public static UserDetail registrationUser(UserDetail userDetail) {
SpringUtil.getBean(ITokenService.class).updateToken(userDetail); Token token = Token.of(userDetail.getUserId(), userDetail.getAccountId(), userDetail.getAuthWay());
userDetail.setToken(token);
saveToken(userDetail);
return userDetail; return userDetail;
} }
@ -69,11 +71,9 @@ public class SecurityUtil {
* *
* @param userDetail * @param userDetail
*/ */
public static UserDetail updateUser(UserDetail userDetail) {
Token token = Token.of(userDetail.getUserId(), userDetail.getAccountId(), userDetail.getAuthWay()); public static void updateUser(UserDetail userDetail) {
userDetail.setToken(token); SpringUtil.getBean(ITokenService.class).updateToken(userDetail);
saveToken(userDetail);
return userDetail;
} }
/** /**

View File

@ -93,6 +93,7 @@ public class AuthService implements IAuthService {
.setMenus(menuResources) .setMenus(menuResources)
.setEndpoints(endpointResources) .setEndpoints(endpointResources)
.setRoles(roles) .setRoles(roles)
.setClient(client)
; ;
} }

View File

@ -0,0 +1,20 @@
package com.njzscloud.dispose.sys.dict.controller;
import com.njzscloud.common.core.ienum.DictItem;
import com.njzscloud.common.core.ienum.DictKey;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class Data {
@DictKey("key")
DictItem dictItem;
String a;
String b;
String e;
}

View File

@ -1,10 +1,12 @@
package com.njzscloud.dispose.sys.dict.controller; package com.njzscloud.dispose.sys.dict.controller;
import com.njzscloud.common.core.ienum.DictItem;
import com.njzscloud.common.core.ienum.DictKey;
import com.njzscloud.common.core.utils.R; import com.njzscloud.common.core.utils.R;
import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.dispose.sys.dict.pojo.DictEntity; import com.njzscloud.dispose.sys.dict.pojo.entity.DictEntity;
import com.njzscloud.dispose.sys.dict.pojo.ObtainDictDataResult; import com.njzscloud.dispose.sys.dict.pojo.result.ObtainDictDataResult;
import com.njzscloud.dispose.sys.dict.service.DictService; import com.njzscloud.dispose.sys.dict.service.DictService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -77,4 +79,22 @@ public class DictController {
} }
/**
*
*/
@GetMapping("/a")
public R<?> a(@DictKey("key") @RequestParam("dictItem") DictItem dictItem) {
return R.success(dictItem);
}
/**
*
*/
@PostMapping("/b")
public R<?> b(@RequestBody Data data) {
return R.success(data);
}
} }

View File

@ -3,7 +3,7 @@ package com.njzscloud.dispose.sys.dict.controller;
import com.njzscloud.common.core.utils.R; import com.njzscloud.common.core.utils.R;
import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.dispose.sys.dict.pojo.DictItemEntity; import com.njzscloud.dispose.sys.dict.pojo.entity.DictItemEntity;
import com.njzscloud.dispose.sys.dict.service.DictItemService; import com.njzscloud.dispose.sys.dict.service.DictItemService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@ -1,7 +1,7 @@
package com.njzscloud.dispose.sys.dict.mapper; package com.njzscloud.dispose.sys.dict.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njzscloud.dispose.sys.dict.pojo.DictItemEntity; import com.njzscloud.dispose.sys.dict.pojo.entity.DictItemEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**

View File

@ -1,7 +1,7 @@
package com.njzscloud.dispose.sys.dict.mapper; package com.njzscloud.dispose.sys.dict.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njzscloud.dispose.sys.dict.pojo.DictEntity; import com.njzscloud.dispose.sys.dict.pojo.entity.DictEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**

View File

@ -1,4 +1,4 @@
package com.njzscloud.dispose.sys.dict.pojo; package com.njzscloud.dispose.sys.dict.pojo.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;

View File

@ -1,4 +1,4 @@
package com.njzscloud.dispose.sys.dict.pojo; package com.njzscloud.dispose.sys.dict.pojo.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;

View File

@ -1,4 +1,4 @@
package com.njzscloud.dispose.sys.dict.pojo; package com.njzscloud.dispose.sys.dict.pojo.result;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@ -10,7 +10,7 @@ import com.njzscloud.common.core.ex.Exceptions;
import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.dispose.sys.dict.mapper.DictItemMapper; import com.njzscloud.dispose.sys.dict.mapper.DictItemMapper;
import com.njzscloud.dispose.sys.dict.pojo.DictItemEntity; import com.njzscloud.dispose.sys.dict.pojo.entity.DictItemEntity;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;

View File

@ -10,11 +10,11 @@ import com.njzscloud.common.core.ex.Exceptions;
import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.dispose.sys.dict.mapper.DictMapper; import com.njzscloud.dispose.sys.dict.mapper.DictMapper;
import com.njzscloud.dispose.sys.dict.pojo.DictEntity; import com.njzscloud.dispose.sys.dict.pojo.entity.DictEntity;
import com.njzscloud.dispose.sys.dict.pojo.DictItemEntity; import com.njzscloud.dispose.sys.dict.pojo.entity.DictItemEntity;
import com.njzscloud.dispose.sys.dict.pojo.ObtainDictDataResult; import com.njzscloud.dispose.sys.dict.pojo.result.ObtainDictDataResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -26,9 +26,9 @@ import java.util.stream.Collectors;
*/ */
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor
public class DictService extends ServiceImpl<DictMapper, DictEntity> implements IService<DictEntity> { public class DictService extends ServiceImpl<DictMapper, DictEntity> implements IService<DictEntity> {
@Autowired private final DictItemService dictItemService;
private DictItemService dictItemService;
/** /**
* *
@ -84,7 +84,7 @@ public class DictService extends ServiceImpl<DictMapper, DictEntity> implements
.or().like(DictItemEntity::getVal, keywords) .or().like(DictItemEntity::getVal, keywords)
.or().like(DictItemEntity::getMemo, keywords) .or().like(DictItemEntity::getMemo, keywords)
) )
.orderByAsc(DictItemEntity::getSort, DictItemEntity::getVal) .orderByAsc(DictItemEntity::getSort, DictItemEntity::getVal, DictItemEntity::getId)
) )
.stream().map(it -> BeanUtil.copyProperties(it, ObtainDictDataResult.class)) .stream().map(it -> BeanUtil.copyProperties(it, ObtainDictDataResult.class))
.collect(Collectors.toList()); .collect(Collectors.toList());

View File

@ -55,6 +55,7 @@ public class UserService extends ServiceImpl<UserMapper, UserEntity> implements
private final UserAccountService userAccountService; private final UserAccountService userAccountService;
private final UserRoleService userRoleService; private final UserRoleService userRoleService;
private final CustomerService customerService; private final CustomerService customerService;
private final AuthService authService;
/** /**
* *
@ -139,7 +140,6 @@ public class UserService extends ServiceImpl<UserMapper, UserEntity> implements
return PageResult.of(baseMapper.paging(pageParam.toPage(), ew)); return PageResult.of(baseMapper.paging(pageParam.toPage(), ew));
} }
AuthService authService;
/** /**
* *

View File

@ -0,0 +1,20 @@
package a;
import com.njzscloud.common.core.ienum.DictItem;
import com.njzscloud.common.core.ienum.DictKey;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class Data {
@DictKey("key")
DictItem dictItem;
String a;
String b;
String e;
}