/**
* 获取订单详情3003101009
*/
ResponseReport getOrderDetail(RequestReport requestReport);
@Override
@CheckUnfilled(value={"order_id"})
public ResponseReport getOrderDetail(RequestReport requestReport) {
ResponseReport responseReport = new ResponseReport();
Map<String, Object> reqParams = JSON.parseObject(requestReport.getBody().toString(), Map.class);
Object id = reqParams.get("order_id");
String orderId = id.toString();
OrderInfo orderInfo = orderInfoExtDao.selectByPrimaryKey(orderId);
OrderInfoExt orderInfoExt = new OrderInfoExt();
orderInfoExt.setAddress(orderInfo.getHospital() + " " + orderInfo.getBed());
BeanUtils.copyProperties(orderInfo, orderInfoExt);
return responseReport.returnSuccessResult(orderInfoExt, "获取订单详情成功", requestReport);
}
/**
* @author laoliangliang
* @date 2019/1/10 16:57
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CheckUnfilled {
String[] value() default {};
}
package com.zhiyis.framework.aop;
import com.alibaba.fastjson.JSON;
import com.zhiyis.common.report.RequestReport;
import com.zhiyis.common.report.ResponseReport;
import com.zhiyis.framework.annotation.CheckUnfilled;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.ReflectionUtils;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
* @author laoliangliang
* @date 2019/1/10 17:04
*/
@Slf4j
@Component
@Aspect
public class CheckUnfilledAspect {
@Around("execution(com.zhiyis.common.report.ResponseReport com.zhiyis.framework.service.impl..*.*(com.zhiyis.common.report.RequestReport))")
public Object checkUnfilled(ProceedingJoinPoint joinPoint) {
Object clazz = joinPoint.getTarget();
String methodName = joinPoint.getSignature().getName();
Object[] args = joinPoint.getArgs();
RequestReport requestReport = (RequestReport) args[0];
Map<String, Object> reqParams = JSON.parseObject(JSON.toJSONString(requestReport.getBody()), Map.class);
Method method = ReflectionUtils.findMethod(clazz.getClass(), methodName, RequestReport.class);
CheckUnfilled annotation = AnnotationUtils.findAnnotation(method, CheckUnfilled.class);
if(annotation != null){
String[] value = annotation.value();
Set<String> keys = reqParams.keySet();
Set<String> unfilledSet = new HashSet<>();
for (String key : value) {
if (!keys.contains(key)) {
unfilledSet.add(key);
}
}
if (unfilledSet.size() > 0) {
ResponseReport responseReport = new ResponseReport();
return responseReport.returnError("9999", JSON.toJSONString(unfilledSet) + "为必填参数");
}
}
try {
return joinPoint.proceed();
} catch (Throwable e) {
log.error("tradeCode接口错误", e);
}
return null;
}
}