@Around("@annotation(com.vcloud.wsi.common.CardResetDetect)")
public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
MethodSignature signature = (MethodSignature) proceedingJoinPoint.getSignature();
CardResetDetect annotation = signature.getMethod().getAnnotation(CardResetDetect.class);
String sn = null;
Integer userCardId = null;
ResetTypeEnum resetTypeEnum = annotation.value();
switch (resetTypeEnum) {
case SN:
// 获取方法参数
sn = String.valueOf(proceedingJoinPoint.getArgs()[0]);
logger.info("安卓卡恢复出厂设置监听-------sn:{}", sn);
break;
case USER_CARD_ID:
// 获取方法参数
userCardId = Integer.valueOf(String.valueOf(proceedingJoinPoint.getArgs()[0]));
logger.info("安卓卡恢复出厂设置监听-------userCarid:{}", userCardId);
break;
}
// 执行注解修饰的方法
Object obj = proceedingJoinPoint.proceed();
logger.info("安卓卡恢复出厂设置监听-------result:{}", JSON.toJSONString(obj));
ResultVO result = (ResultVO) obj;
AlarmSetting alarmSetting = alarmSettingMapper.getAlarmThreshold(2005);
if (alarmSetting != null && alarmSetting.getReport()) {
if (userCardId != null) {
UserCardVO userCard = cardBootMapper.findUserCardById(userCardId);
if (userCard == null) {
return obj;
} else {
sn = userCard.getSn();
}
}
/bug处理:对接口拦截判null***/
if (StringUtils.isBlank(sn)) {
return obj;
}
//恢复出厂设置失败
if (result.getStatus().equals(1)) {
CardInfo cardInfo = cardInfoMapper.selectBySn(sn);
//将卡状态变更为“不可分配”
cardInfoMapper.updateRunStatusBySn(3, cardInfo.getSn());
String countStr = (String) redisTemplate.opsForHash().get(KEY, cardInfo.getSn());
Integer count = countStr == null ? 0 : Integer.valueOf(countStr);
++count;
}
return obj;
}