package com.yunzhupaas.aop;

import com.yunzhupaas.util.RedisUtil;
import com.yunzhupaas.util.ServletUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.HashSet;
import java.util.Set;

/**
 * 可视化开发缓存数据处理
 * @author 云筑产品开发平台组
 * @version V3.1.0
 * @copyright 深圳市乐程软件有限公司
 * @date 2024/3/15 17:12
 */
@Slf4j
//@Aspect
//@Component
public class VisiualOpaAspect {

        @Autowired
        private RedisUtil redisUtil;
        @Pointcut("(execution(* com.yunzhupaas.onlinedev.controller.VisualdevModelDataController.*(..))) || execution(* com.yunzhupaas.onlinedev.controller.VisualdevModelAppController.*(..)))" +
                "|| execution(* com.yunzhupaas.generater.controller.VisualdevGenController.*(..)))")
        public void visiualOpa() {

        }

        @After("visiualOpa()")
        public void doAroundService(){
                String method=ServletUtil.getRequest().getMethod().toLowerCase();
                if("put".equals(method)||"delete".equals(method)||"post".equals(method)){
                    Set<String> allKey=new HashSet<>(16);
                    allKey.addAll(redisUtil.getAllVisiualKeys());
                    for(String key:allKey){
                        redisUtil.remove(key);
                    }
                }
        }
    }

