//package com.iailab.common.aspect;
|
//
|
//import com.alibaba.fastjson.JSONObject;
|
//import com.alibaba.fastjson.parser.Feature;
|
//import com.iailab.common.annotation.Dict;
|
//import com.iailab.framework.common.page.PageData;
|
//import com.iailab.framework.common.util.object.ConvertUtils;
|
//import com.iailab.framework.common.pojo.CommonResult;
|
//import com.iailab.entity.SysDictItem;
|
//import com.iailab.module.infra.api.config.ConfigApi;
|
//import lombok.extern.slf4j.Slf4j;
|
//import org.aspectj.lang.ProceedingJoinPoint;
|
//import org.aspectj.lang.annotation.Around;
|
//import org.aspectj.lang.annotation.Aspect;
|
//import org.aspectj.lang.annotation.Pointcut;
|
//import javax.annotation.Resource;
|
//import org.springframework.stereotype.Component;
|
//import org.springframework.util.CollectionUtils;
|
//
|
//import java.beans.IntrospectionException;
|
//import java.beans.PropertyDescriptor;
|
//import java.lang.reflect.Field;
|
//import java.lang.reflect.InvocationTargetException;
|
//import java.lang.reflect.Method;
|
//import java.util.HashMap;
|
//import java.util.List;
|
//import java.util.Map;
|
//
|
///**
|
// * @author PanZhibao
|
// * @Description
|
// * @createTime 2022年05月21日 09:57:00
|
// */
|
//@Aspect
|
//@Component
|
//@Slf4j
|
//public class DictAspect {
|
//
|
// private final String PAGE_CODE = "page";
|
//
|
// private final String DATA_CODE = "data";
|
//
|
// @Resource
|
// private ConfigApi configApi;
|
//
|
// /**
|
// * 定义切点Pointcut
|
// */
|
// @Pointcut("@annotation(com.iailab.common.annotation.AutoDict)")
|
// public void excudeService() {
|
// }
|
//
|
// @Around("excudeService()")
|
// public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
|
// Object result = pjp.proceed();
|
// try {
|
// this.parseDictText(result);
|
// } catch (Exception ex) {
|
// log.info(ex.getMessage());
|
// }
|
// return result;
|
// }
|
//
|
// /**
|
// * parseDictText
|
// *
|
// * @param result
|
// * @throws IntrospectionException
|
// * @throws InvocationTargetException
|
// * @throws IllegalAccessException
|
// */
|
// private void parseDictText(Object result) throws IntrospectionException, InvocationTargetException, IllegalAccessException {
|
// Map<String, List<SysDictItem>> mapList = configApi.queryAllDictItems();
|
// Map<String,Map<String, String>> map = new HashMap<>();
|
// if (!CollectionUtils.isEmpty(mapList)) {
|
// mapList.forEach((k , v) -> {
|
// Map<String, String> dictItems = new HashMap<>();
|
// if (!CollectionUtils.isEmpty(v)) {
|
// v.forEach(item -> {
|
// dictItems.put(item.getItemValue(), item.getItemText());
|
// });
|
// }
|
// map.put(k, dictItems);
|
// });
|
// }
|
//
|
// if(result instanceof CommonResult) {
|
// if(((CommonResult) result).getData() != null) {
|
// Object data = ((CommonResult) result).getData();
|
// if (data instanceof List) {
|
// for (Object record : (List)data) {
|
// this.setDictText(record, map);
|
// }
|
// } else if(data instanceof PageData) {
|
// Object list = ((PageData)data).getList();
|
// for (Object record : (List)list) {
|
// this.setDictText(record, map);
|
// }
|
// } else {
|
// this.setDictText(data, map);
|
// }
|
// }
|
// } else if (result instanceof List){
|
// for (Object record : (List)result) {
|
// this.setDictText(record, map);
|
// }
|
// }
|
// }
|
//
|
// /**
|
// * setDictText
|
// *
|
// * @param record
|
// * @param map
|
// * @throws IntrospectionException
|
// * @throws InvocationTargetException
|
// * @throws IllegalAccessException
|
// */
|
// private void setDictText(Object record, Map<String,Map<String, String>> map) throws IntrospectionException, InvocationTargetException, IllegalAccessException {
|
// JSONObject item = JSONObject.parseObject(JSONObject.toJSONString(record), Feature.OrderedField);
|
// for (Field field : ConvertUtils.getAllFields(record)) {
|
// if (!field.isAnnotationPresent(Dict.class)) {
|
// continue;
|
// }
|
// String dictCode = field.getAnnotation(Dict.class).dicCode();
|
// String itemValue = field.getAnnotation(Dict.class).itemValue();
|
// String value = item.getString(itemValue);
|
// Method method = new PropertyDescriptor(field.getName(), record.getClass()).getWriteMethod();
|
// method.invoke(record, this.getDictText(dictCode, value, map));
|
// }
|
// }
|
//
|
// /**
|
// * getDictText
|
// *
|
// * @param dictCode
|
// * @param itemValue
|
// * @param map
|
// * @return
|
// */
|
// private String getDictText(String dictCode, String itemValue, Map<String,Map<String, String>> map) {
|
// String dictText = "";
|
// try{
|
// if (map != null || map.containsKey(dictCode)) {
|
// dictText = map.get(dictCode).get(itemValue);
|
// }
|
// } catch (Exception ex) {
|
// log.info("字典异常:" + dictCode );
|
// }
|
// return dictText;
|
// }
|
//}
|