日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

用aspect在springboot中记录操作日志至数据库的详细过程

發(fā)布時間:2024/9/30 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用aspect在springboot中记录操作日志至数据库的详细过程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

代碼來自若依管理系統(tǒng)的后臺,我截取的其中用于記錄操作日志的部分

    • 1.切面
    • 2.操作日志表
    • 3.spring工具類
    • 4.客戶端工具類
    • 異步工廠(產(chǎn)生任務(wù)用)
    • 異步任務(wù)管理器
    • 5.服務(wù)層
    • 6.控制層

1.切面

/*** 操作日志記錄處理* * @author ruoyi*/ @Aspect @Component public class LogAspect {private static final Logger log = LoggerFactory.getLogger(LogAspect.class);/** 排除敏感屬性字段 */public static final String[] EXCLUDE_PROPERTIES = { "password", "oldPassword", "newPassword", "confirmPassword" };// 配置織入點@Pointcut("@annotation(com.ruoyi.common.annotation.Log)")public void logPointCut(){System.out.println("yes999");}/*** 處理完請求后執(zhí)行** @param joinPoint 切點*/@AfterReturning(pointcut = "logPointCut()", returning = "jsonResult")public void doAfterReturning(JoinPoint joinPoint, Object jsonResult){handleLog(joinPoint, null, jsonResult);}/*** 攔截異常操作* * @param joinPoint 切點* @param e 異常*/@AfterThrowing(value = "logPointCut()", throwing = "e")public void doAfterThrowing(JoinPoint joinPoint, Exception e){handleLog(joinPoint, e, null);}protected void handleLog(final JoinPoint joinPoint, final Exception e, Object jsonResult){try{// 獲得注解Log controllerLog = getAnnotationLog(joinPoint);if (controllerLog == null){return;}// 獲取當(dāng)前的用戶SysUser currentUser = ShiroUtils.getSysUser();// *========數(shù)據(jù)庫日志=========*//SysOperLog operLog = new SysOperLog();operLog.setStatus(BusinessStatus.SUCCESS.ordinal());// 請求的地址String ip = ShiroUtils.getIp();operLog.setOperIp(ip);// 返回參數(shù)if (StringUtils.isNotNull(jsonResult)){operLog.setJsonResult(StringUtils.substring(JSON.marshal(jsonResult), 0, 2000));}operLog.setOperUrl(ServletUtils.getRequest().getRequestURI());if (currentUser != null){operLog.setOperName(currentUser.getLoginName());if (StringUtils.isNotNull(currentUser.getDept())&& StringUtils.isNotEmpty(currentUser.getDept().getDeptName())){operLog.setDeptName(currentUser.getDept().getDeptName());}}if (e != null){operLog.setStatus(BusinessStatus.FAIL.ordinal());operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000));}// 設(shè)置方法名稱String className = joinPoint.getTarget().getClass().getName();String methodName = joinPoint.getSignature().getName();operLog.setMethod(className + "." + methodName + "()");// 設(shè)置請求方式operLog.setRequestMethod(ServletUtils.getRequest().getMethod());// 處理設(shè)置注解上的參數(shù)getControllerMethodDescription(joinPoint, controllerLog, operLog);// 保存數(shù)據(jù)庫AsyncManager.me().execute(AsyncFactory.recordOper(operLog));}catch (Exception exp){// 記錄本地異常日志log.error("==前置通知異常==");log.error("異常信息:{}", exp.getMessage());exp.printStackTrace();}}/*** 獲取注解中對方法的描述信息 用于Controller層注解* * @param log 日志* @param operLog 操作日志* @throws Exception*/public void getControllerMethodDescription(JoinPoint joinPoint, Log log, SysOperLog operLog) throws Exception{// 設(shè)置action動作operLog.setBusinessType(log.businessType().ordinal());// 設(shè)置標(biāo)題operLog.setTitle(log.title());// 設(shè)置操作人類別operLog.setOperatorType(log.operatorType().ordinal());// 是否需要保存request,參數(shù)和值if (log.isSaveRequestData()){// 獲取參數(shù)的信息,傳入到數(shù)據(jù)庫中。setRequestValue(joinPoint, operLog);}}/*** 獲取請求的參數(shù),放到log中* * @param operLog 操作日志* @throws Exception 異常*/private void setRequestValue(JoinPoint joinPoint, SysOperLog operLog) throws Exception{Map<String, String[]> map = ServletUtils.getRequest().getParameterMap();if (StringUtils.isNotEmpty(map)){String params = JSONObject.toJSONString(map, excludePropertyPreFilter());operLog.setOperParam(StringUtils.substring(params, 0, 2000));}else{Object args = joinPoint.getArgs();if (StringUtils.isNotNull(args)){String params = argsArrayToString(joinPoint.getArgs());operLog.setOperParam(StringUtils.substring(params, 0, 2000));}}}/*** 是否存在注解,如果存在就獲取*/private Log getAnnotationLog(JoinPoint joinPoint) throws Exception{Signature signature = joinPoint.getSignature();MethodSignature methodSignature = (MethodSignature) signature;Method method = methodSignature.getMethod();if (method != null){return method.getAnnotation(Log.class);}return null;}/*** 忽略敏感屬性*/public PropertyPreFilters.MySimplePropertyPreFilter excludePropertyPreFilter(){return new PropertyPreFilters().addFilter().addExcludes(EXCLUDE_PROPERTIES);}/*** 參數(shù)拼裝*/private String argsArrayToString(Object[] paramsArray){String params = "";if (paramsArray != null && paramsArray.length > 0){for (int i = 0; i < paramsArray.length; i++){if (StringUtils.isNotNull(paramsArray[i]) && !isFilterObject(paramsArray[i])){Object jsonObj = JSONObject.toJSONString(paramsArray[i], excludePropertyPreFilter());params += jsonObj.toString() + " ";}}}return params.trim();}/*** 判斷是否需要過濾的對象。* * @param o 對象信息。* @return 如果是需要過濾的對象,則返回true;否則返回false。*/@SuppressWarnings("rawtypes")public boolean isFilterObject(final Object o){Class<?> clazz = o.getClass();if (clazz.isArray()){return clazz.getComponentType().isAssignableFrom(MultipartFile.class);}else if (Collection.class.isAssignableFrom(clazz)){Collection collection = (Collection) o;for (Iterator iter = collection.iterator(); iter.hasNext();){return iter.next() instanceof MultipartFile;}}else if (Map.class.isAssignableFrom(clazz)){Map map = (Map) o;for (Iterator iter = map.entrySet().iterator(); iter.hasNext();){Map.Entry entry = (Map.Entry) iter.next();return entry.getValue() instanceof MultipartFile;}}return o instanceof MultipartFile || o instanceof HttpServletRequest || o instanceof HttpServletResponse|| o instanceof BindingResult;} }

2.操作日志表

/*** 操作日志記錄表 oper_log* * @author ruoyi*/ public class SysOperLog extends BaseEntity {private static final long serialVersionUID = 1L;/** 日志主鍵 */@Excel(name = "操作序號", cellType = ColumnType.NUMERIC)private Long operId;/** 操作模塊 */@Excel(name = "操作模塊")private String title;/** 業(yè)務(wù)類型(0其它 1新增 2修改 3刪除) */@Excel(name = "業(yè)務(wù)類型", readConverterExp = "0=其它,1=新增,2=修改,3=刪除,4=授權(quán),5=導(dǎo)出,6=導(dǎo)入,7=強退,8=生成代碼,9=清空數(shù)據(jù)")private Integer businessType;/** 業(yè)務(wù)類型數(shù)組 */private Integer[] businessTypes;/** 請求方法 */@Excel(name = "請求方法")private String method;/** 請求方式 */@Excel(name = "請求方式")private String requestMethod;/** 操作類別(0其它 1后臺用戶 2手機端用戶) */@Excel(name = "操作類別", readConverterExp = "0=其它,1=后臺用戶,2=手機端用戶")private Integer operatorType;/** 操作人員 */@Excel(name = "操作人員")private String operName;/** 部門名稱 */@Excel(name = "部門名稱")private String deptName;/** 請求url */@Excel(name = "請求地址")private String operUrl;/** 操作地址 */@Excel(name = "操作地址")private String operIp;/** 操作地點 */@Excel(name = "操作地點")private String operLocation;/** 請求參數(shù) */@Excel(name = "請求參數(shù)")private String operParam;/** 返回參數(shù) */@Excel(name = "返回參數(shù)")private String jsonResult;/** 操作狀態(tài)(0正常 1異常) */@Excel(name = "狀態(tài)", readConverterExp = "0=正常,1=異常")private Integer status;/** 錯誤消息 */@Excel(name = "錯誤消息")private String errorMsg;/** 操作時間 */@Excel(name = "操作時間", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")private Date operTime;public Long getOperId(){return operId;}public void setOperId(Long operId){this.operId = operId;}public String getTitle(){return title;}public void setTitle(String title){this.title = title;}public Integer getBusinessType(){return businessType;}public void setBusinessType(Integer businessType){this.businessType = businessType;}public Integer[] getBusinessTypes(){return businessTypes;}public void setBusinessTypes(Integer[] businessTypes){this.businessTypes = businessTypes;}public String getMethod(){return method;}public void setMethod(String method){this.method = method;}public String getRequestMethod(){return requestMethod;}public void setRequestMethod(String requestMethod){this.requestMethod = requestMethod;}public Integer getOperatorType(){return operatorType;}public void setOperatorType(Integer operatorType){this.operatorType = operatorType;}public String getOperName(){return operName;}public void setOperName(String operName){this.operName = operName;}public String getDeptName(){return deptName;}public void setDeptName(String deptName){this.deptName = deptName;}public String getOperUrl(){return operUrl;}public void setOperUrl(String operUrl){this.operUrl = operUrl;}public String getOperIp(){return operIp;}public void setOperIp(String operIp){this.operIp = operIp;}public String getOperLocation(){return operLocation;}public void setOperLocation(String operLocation){this.operLocation = operLocation;}public String getOperParam(){return operParam;}public void setOperParam(String operParam){this.operParam = operParam;}public String getJsonResult(){return jsonResult;}public void setJsonResult(String jsonResult){this.jsonResult = jsonResult;}public Integer getStatus(){return status;}public void setStatus(Integer status){this.status = status;}public String getErrorMsg(){return errorMsg;}public void setErrorMsg(String errorMsg){this.errorMsg = errorMsg;}public Date getOperTime(){return operTime;}public void setOperTime(Date operTime){this.operTime = operTime;}@Overridepublic String toString() {return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE).append("operId", getOperId()).append("title", getTitle()).append("businessType", getBusinessType()).append("businessTypes", getBusinessTypes()).append("method", getMethod()).append("requestMethod", getRequestMethod()).append("operatorType", getOperatorType()).append("operName", getOperName()).append("deptName", getDeptName()).append("operUrl", getOperUrl()).append("operIp", getOperIp()).append("operLocation", getOperLocation()).append("operParam", getOperParam()).append("status", getStatus()).append("errorMsg", getErrorMsg()).append("operTime", getOperTime()).toString();} } /*** 異步任務(wù)管理器* * @author liuhulu*/ public class AsyncManager {/*** 操作延遲10毫秒*/private final int OPERATE_DELAY_TIME = 10;/*** 異步操作任務(wù)調(diào)度線程池*/private ScheduledExecutorService executor = SpringUtils.getBean("scheduledExecutorService");/*** 單例模式*/private AsyncManager(){}private static AsyncManager me = new AsyncManager();public static AsyncManager me(){return me;}/*** 執(zhí)行任務(wù)* * @param task 任務(wù)*/public void execute(TimerTask task){executor.schedule(task, OPERATE_DELAY_TIME, TimeUnit.MILLISECONDS);}/*** 停止任務(wù)線程池*/public void shutdown(){Threads.shutdownAndAwaitTermination(executor);} }

3.spring工具類

/*** spring工具類 方便在非spring管理環(huán)境中獲取bean* * @author ruoyi*/ @Component public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationContextAware {/** Spring應(yīng)用上下文環(huán)境 */private static ConfigurableListableBeanFactory beanFactory;private static ApplicationContext applicationContext;@Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException{SpringUtils.beanFactory = beanFactory;}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException{SpringUtils.applicationContext = applicationContext;}/*** 獲取對象** @param name* @return Object 一個以所給名字注冊的bean的實例* @throws org.springframework.beans.BeansException**/@SuppressWarnings("unchecked")public static <T> T getBean(String name) throws BeansException{return (T) beanFactory.getBean(name);}/*** 獲取類型為requiredType的對象** @param clz* @return* @throws org.springframework.beans.BeansException**/public static <T> T getBean(Class<T> clz) throws BeansException{T result = (T) beanFactory.getBean(clz);return result;}/*** 如果BeanFactory包含一個與所給名稱匹配的bean定義,則返回true** @param name* @return boolean*/public static boolean containsBean(String name){return beanFactory.containsBean(name);}/*** 判斷以給定名字注冊的bean定義是一個singleton還是一個prototype。 如果與給定名字相應(yīng)的bean定義沒有被找到,將會拋出一個異常(NoSuchBeanDefinitionException)** @param name* @return boolean* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException**/public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException{return beanFactory.isSingleton(name);}/*** @param name* @return Class 注冊對象的類型* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException**/public static Class<?> getType(String name) throws NoSuchBeanDefinitionException{return beanFactory.getType(name);}/*** 如果給定的bean名字在bean定義中有別名,則返回這些別名** @param name* @return* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException**/public static String[] getAliases(String name) throws NoSuchBeanDefinitionException{return beanFactory.getAliases(name);}/*** 獲取aop代理對象* * @param invoker* @return*/@SuppressWarnings("unchecked")public static <T> T getAopProxy(T invoker){return (T) AopContext.currentProxy();}/*** 獲取當(dāng)前的環(huán)境配置,無配置返回null** @return 當(dāng)前的環(huán)境配置*/public static String[] getActiveProfiles(){return applicationContext.getEnvironment().getActiveProfiles();}/*** 獲取當(dāng)前的環(huán)境配置,當(dāng)有多個環(huán)境配置時,只獲取第一個** @return 當(dāng)前的環(huán)境配置*/public static String getActiveProfile(){final String[] activeProfiles = getActiveProfiles();return StringUtils.isNotEmpty(activeProfiles) ? activeProfiles[0] : null;} }

4.客戶端工具類

/*** 客戶端工具類* * @author ruoyi*/ public class ServletUtils {/*** 定義移動端請求的所有可能類型*/private final static String[] agent = { "Android", "iPhone", "iPod", "iPad", "Windows Phone", "MQQBrowser" };/*** 獲取String參數(shù)*/public static String getParameter(String name){return getRequest().getParameter(name);}/*** 獲取String參數(shù)*/public static String getParameter(String name, String defaultValue){return Convert.toStr(getRequest().getParameter(name), defaultValue);}/*** 獲取Integer參數(shù)*/public static Integer getParameterToInt(String name){return Convert.toInt(getRequest().getParameter(name));}/*** 獲取Integer參數(shù)*/public static Integer getParameterToInt(String name, Integer defaultValue){return Convert.toInt(getRequest().getParameter(name), defaultValue);}/*** 獲取request*/public static HttpServletRequest getRequest(){return getRequestAttributes().getRequest();}/*** 獲取response*/public static HttpServletResponse getResponse(){return getRequestAttributes().getResponse();}/*** 獲取session*/public static HttpSession getSession(){return getRequest().getSession();}public static ServletRequestAttributes getRequestAttributes(){RequestAttributes attributes = RequestContextHolder.getRequestAttributes();return (ServletRequestAttributes) attributes;}/*** 將字符串渲染到客戶端* * @param response 渲染對象* @param string 待渲染的字符串* @return null*/public static String renderString(HttpServletResponse response, String string){try{response.setContentType("application/json");response.setCharacterEncoding("utf-8");response.getWriter().print(string);}catch (IOException e){e.printStackTrace();}return null;}/*** 是否是Ajax異步請求* * @param request*/public static boolean isAjaxRequest(HttpServletRequest request){String accept = request.getHeader("accept");if (accept != null && accept.indexOf("application/json") != -1){return true;}String xRequestedWith = request.getHeader("X-Requested-With");if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1){return true;}String uri = request.getRequestURI();if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml")){return true;}String ajax = request.getParameter("__ajax");if (StringUtils.inStringIgnoreCase(ajax, "json", "xml")){return true;}return false;}/*** 判斷User-Agent 是不是來自于手機*/public static boolean checkAgentIsMobile(String ua){boolean flag = false;if (!ua.contains("Windows NT") || (ua.contains("Windows NT") && ua.contains("compatible; MSIE 9.0;"))){// 排除 蘋果桌面系統(tǒng)if (!ua.contains("Windows NT") && !ua.contains("Macintosh")){for (String item : agent){if (ua.contains(item)){flag = true;break;}}}}return flag;} }

異步工廠(產(chǎn)生任務(wù)用)

/*** 異步工廠(產(chǎn)生任務(wù)用)* * @author liuhulu**/ public class AsyncFactory {private static final Logger sys_user_logger = LoggerFactory.getLogger("sys-user");/*** 同步session到數(shù)據(jù)庫* * @param session 在線用戶會話* @return 任務(wù)task*/public static TimerTask syncSessionToDb(final OnlineSession session){return new TimerTask(){@Overridepublic void run(){SysUserOnline online = new SysUserOnline();online.setSessionId(String.valueOf(session.getId()));online.setDeptName(session.getDeptName());online.setLoginName(session.getLoginName());online.setStartTimestamp(session.getStartTimestamp());online.setLastAccessTime(session.getLastAccessTime());online.setExpireTime(session.getTimeout());online.setIpaddr(session.getHost());online.setLoginLocation(AddressUtils.getRealAddressByIP(session.getHost()));online.setBrowser(session.getBrowser());online.setOs(session.getOs());online.setStatus(session.getStatus());SpringUtils.getBean(ISysUserOnlineService.class).saveOnline(online);}};}/*** 操作日志記錄* * @param operLog 操作日志信息* @return 任務(wù)task*/public static TimerTask recordOper(final SysOperLog operLog){return new TimerTask(){@Overridepublic void run(){// 遠(yuǎn)程查詢操作地點operLog.setOperLocation(AddressUtils.getRealAddressByIP(operLog.getOperIp()));SpringUtils.getBean(ISysOperLogService.class).insertOperlog(operLog);}};}/*** 記錄登錄信息* * @param username 用戶名* @param status 狀態(tài)* @param message 消息* @param args 列表* @return 任務(wù)task*/public static TimerTask recordLogininfor(final String username, final String status, final String message, final Object... args){final UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent"));final String ip = ShiroUtils.getIp();return new TimerTask(){@Overridepublic void run(){String address = AddressUtils.getRealAddressByIP(ip);StringBuilder s = new StringBuilder();s.append(LogUtils.getBlock(ip));s.append(address);s.append(LogUtils.getBlock(username));s.append(LogUtils.getBlock(status));s.append(LogUtils.getBlock(message));// 打印信息到日志sys_user_logger.info(s.toString(), args);// 獲取客戶端操作系統(tǒng)String os = userAgent.getOperatingSystem().getName();// 獲取客戶端瀏覽器String browser = userAgent.getBrowser().getName();// 封裝對象SysLogininfor logininfor = new SysLogininfor();logininfor.setLoginName(username);logininfor.setIpaddr(ip);logininfor.setLoginLocation(address);logininfor.setBrowser(browser);logininfor.setOs(os);logininfor.setMsg(message);// 日志狀態(tài)if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)){logininfor.setStatus(Constants.SUCCESS);}else if (Constants.LOGIN_FAIL.equals(status)){logininfor.setStatus(Constants.FAIL);}// 插入數(shù)據(jù)SpringUtils.getBean(SysLogininforServiceImpl.class).insertLogininfor(logininfor);}};} }

異步任務(wù)管理器

/*** 異步任務(wù)管理器* * @author liuhulu*/ public class AsyncManager {/*** 操作延遲10毫秒*/private final int OPERATE_DELAY_TIME = 10;/*** 異步操作任務(wù)調(diào)度線程池*/private ScheduledExecutorService executor = SpringUtils.getBean("scheduledExecutorService");/*** 單例模式*/private AsyncManager(){}private static AsyncManager me = new AsyncManager();public static AsyncManager me(){return me;}/*** 執(zhí)行任務(wù)* * @param task 任務(wù)*/public void execute(TimerTask task){executor.schedule(task, OPERATE_DELAY_TIME, TimeUnit.MILLISECONDS);}/*** 停止任務(wù)線程池*/public void shutdown(){Threads.shutdownAndAwaitTermination(executor);} }

SpringUtils.getBean(ISysOperLogService.class).insertOperlog(operLog);
操作日志服務(wù)層

/*** 操作日志 服務(wù)層* * @author ruoyi*/ public interface ISysOperLogService {/*** 新增操作日志* * @param operLog 操作日志對象*/public void insertOperlog(SysOperLog operLog);/*** 查詢系統(tǒng)操作日志集合* * @param operLog 操作日志對象* @return 操作日志集合*/public List<SysOperLog> selectOperLogList(SysOperLog operLog);/*** 批量刪除系統(tǒng)操作日志* * @param ids 需要刪除的數(shù)據(jù)* @return 結(jié)果*/public int deleteOperLogByIds(String ids);/*** 查詢操作日志詳細(xì)* * @param operId 操作ID* @return 操作日志對象*/public SysOperLog selectOperLogById(Long operId);/*** 清空操作日志*/public void cleanOperLog(); }

插入日志

@Overridepublic void insertOperlog(SysOperLog operLog){operLogMapper.insertOperlog(operLog);} <insert id="insertOperlog" parameterType="SysOperLog">insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time)values (#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName}, #{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{jsonResult}, #{status}, #{errorMsg}, sysdate())</insert>

3.注解

/*** 自定義操作日志記錄注解* * @author ruoyi*/ @Target({ ElementType.PARAMETER, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Log {/*** 模塊 */public String title() default "";/*** 功能*/public BusinessType businessType() default BusinessType.OTHER;/*** 操作人類別*/public OperatorType operatorType() default OperatorType.MANAGE;/*** 是否保存請求的參數(shù)*/public boolean isSaveRequestData() default true; }

5.服務(wù)層

public interface ISysOperLogService {/*** 新增操作日志* * @param operLog 操作日志對象*/public void insertOperlog(SysOperLog operLog);/*** 查詢系統(tǒng)操作日志集合* * @param operLog 操作日志對象* @return 操作日志集合*/public List<SysOperLog> selectOperLogList(SysOperLog operLog);/*** 批量刪除系統(tǒng)操作日志* * @param ids 需要刪除的數(shù)據(jù)* @return 結(jié)果*/public int deleteOperLogByIds(String ids);/*** 查詢操作日志詳細(xì)* * @param operId 操作ID* @return 操作日志對象*/public SysOperLog selectOperLogById(Long operId);/*** 清空操作日志*/public void cleanOperLog(); } /*** 操作日志 服務(wù)層處理* * @author ruoyi*/ @Service public class SysOperLogServiceImpl implements ISysOperLogService {@Autowiredprivate SysOperLogMapper operLogMapper;/*** 新增操作日志* * @param operLog 操作日志對象*/@Overridepublic void insertOperlog(SysOperLog operLog){operLogMapper.insertOperlog(operLog);}/*** 查詢系統(tǒng)操作日志集合* * @param operLog 操作日志對象* @return 操作日志集合*/@Overridepublic List<SysOperLog> selectOperLogList(SysOperLog operLog){return operLogMapper.selectOperLogList(operLog);}/*** 批量刪除系統(tǒng)操作日志* * @param ids 需要刪除的數(shù)據(jù)* @return*/@Overridepublic int deleteOperLogByIds(String ids){return operLogMapper.deleteOperLogByIds(Convert.toStrArray(ids));}/*** 查詢操作日志詳細(xì)* * @param operId 操作ID* @return 操作日志對象*/@Overridepublic SysOperLog selectOperLogById(Long operId){return operLogMapper.selectOperLogById(operId);}/*** 清空操作日志*/@Overridepublic void cleanOperLog(){operLogMapper.cleanOperLog();} }

6.控制層

/*** 操作日志記錄* * @author ruoyi*/ @Controller @RequestMapping("/monitor/operlog") public class SysOperlogController extends BaseController {private String prefix = "monitor/operlog";@Autowiredprivate ISysOperLogService operLogService;@RequiresPermissions("monitor:operlog:view")@GetMapping()public String operlog(){return prefix + "/operlog";}@RequiresPermissions("monitor:operlog:list")@PostMapping("/list")@ResponseBodypublic TableDataInfo list(SysOperLog operLog){startPage();List<SysOperLog> list = operLogService.selectOperLogList(operLog);return getDataTable(list);}@Log(title = "操作日志", businessType = BusinessType.EXPORT)@RequiresPermissions("monitor:operlog:export")@PostMapping("/export")@ResponseBodypublic AjaxResult export(SysOperLog operLog){List<SysOperLog> list = operLogService.selectOperLogList(operLog);ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);return util.exportExcel(list, "操作日志");}@Log(title = "操作日志", businessType = BusinessType.DELETE)@RequiresPermissions("monitor:operlog:remove")@PostMapping("/remove")@ResponseBodypublic AjaxResult remove(String ids){return toAjax(operLogService.deleteOperLogByIds(ids));}@RequiresPermissions("monitor:operlog:detail")@GetMapping("/detail/{operId}")public String detail(@PathVariable("operId") Long operId, ModelMap mmap){mmap.put("operLog", operLogService.selectOperLogById(operId));return prefix + "/detail";}@Log(title = "操作日志", businessType = BusinessType.CLEAN)@RequiresPermissions("monitor:operlog:remove")@PostMapping("/clean")@ResponseBodypublic AjaxResult clean(){operLogService.cleanOperLog();return success();} }

總結(jié)

以上是生活随笔為你收集整理的用aspect在springboot中记录操作日志至数据库的详细过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产五月婷 | 青春草免费在线视频 | 最新av免费在线观看 | 91精品久久久久久综合乱菊 | 国产亚洲精品精品精品 | 精品视频123区在线观看 | 91九色国产| 精品一区二区三区电影 | 久久精品国产一区二区 | 久久久国产影视 | 久久99精品国产麻豆宅宅 | 五月婷影院 | 视频在线观看99 | 国产精品日韩久久久久 | 国产自产在线视频 | 免费av观看网站 | 亚洲精色| 91av在线视频播放 | 亚洲国产精品成人va在线观看 | www狠狠操 | 国产黄影院色大全免费 | 偷拍视频一区 | 九九涩涩av台湾日本热热 | 国产最新网站 | 成人免费在线观看av | 日韩二三区 | a级国产毛片 | 久久九九久久精品 | 99精品视频在线播放免费 | 亚洲人在线 | 精精国产xxxx视频在线播放 | 91精品免费看 | 在线观看911视频 | 久久精品视频观看 | 久久久免费国产 | 免费污片 | 97人人看 | 国产亚洲精品久久久网站好莱 | 超碰在线最新 | 日日摸日日添日日躁av | 国产午夜精品一区二区三区四区 | 欧美精品久久久久久久久久久 | 在线中文字幕观看 | 精品国产乱码久久久久 | 日本久久高清视频 | 五月开心婷婷网 | av电影不卡 | 色视频国产直接看 | 国产精品区一区 | 在线导航福利 | 激情丁香综合五月 | 国产在线观看免 | 成人久久18免费 | 国产精品2018| 摸阴视频 | 国产精品不卡av | 国产v欧美 | 99久久精品费精品 | 久久免费一级片 | 操操操日日日干干干 | 亚洲综合激情五月 | 久久亚洲电影 | 国产精品99久久免费观看 | 日韩午夜电影院 | 亚洲日日射 | 欧美日韩免费在线观看视频 | 欧美最新大片在线看 | 国产一区二区观看 | av大片网址 | 91久久久久久久 | 亚洲欧美在线观看视频 | 国产日韩欧美视频在线观看 | 日本老少交 | 日韩在线观看高清 | 草久久久久久久 | 色综合久久中文字幕综合网 | 精品国产午夜 | 在线免费中文字幕 | 国产区久久 | 国产精品淫 | 色偷偷88欧美精品久久久 | 国产录像在线观看 | 久久人人爽爽人人爽人人片av | 欧美激情精品久久久久久免费印度 | 亚洲国产精品人久久电影 | 久久天天躁狠狠躁亚洲综合公司 | 日韩精品免费在线观看 | 国产福利一区二区三区视频 | 7777xxxx| 最新色站| 午夜精品视频免费在线观看 | 18岁免费看片 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 黄色片视频在线观看 | 国产91精品久久久久久 | 国产男女爽爽爽免费视频 | 国内精品久久久久久中文字幕 | 国产精品国产三级国产不产一地 | 亚洲高清视频在线 | 色综合久久久久综合体桃花网 | 婷婷激情综合五月天 | 欧美天天射 | 伊人日日干 | 欧美综合色在线图区 | 亚洲精品久久久蜜桃直播 | 黄色av网站在线观看 | 天天做日日做天天爽视频免费 | 成人国产精品电影 | 久久精品免费看 | 国产一级一级国产 | 夜夜操夜夜干 | 国产精品扒开做爽爽的视频 | 色视频在线免费观看 | 在线播放第一页 | 国产一区视频在线 | 精品在线99 | 成人一区二区三区在线观看 | 国产精品一区二区精品视频免费看 | 91精品黄色| 亚洲女裸体 | 黄色的网站免费看 | a在线免费 | 国产精华国产精品 | 成人av观看 | 99久久精品免费看国产四区 | 国产免费亚洲高清 | 99久久精品久久久久久清纯 | 国产精品免费久久久久久久久久中文 | 中文字幕一区二区三区乱码不卡 | 欧美日韩国产在线一区 | 99视频精品全部免费 在线 | 中文字幕在线观看第三页 | 欧美 日韩 视频 | 国产综合精品一区二区三区 | 少妇高潮冒白浆 | 精品国产三级 | 国语久久 | 日韩影片在线观看 | 国产精品网站一区二区三区 | 玖草影院 | 国产视频在线观看一区 | 97精品久久人人爽人人爽 | 丝袜美腿在线播放 | 国产在线精品一区二区 | 在线观看理论 | 亚洲激情网站免费观看 | 成人性生爱a∨ | 成人在线中文字幕 | 91av免费在线观看 | 亚洲综合网 | 久久国内精品99久久6app | 久久免费福利视频 | 日韩在线理论 | 中文字幕黄色网址 | 天天草天天插 | 成人97视频 | 亚洲午夜久久久久久久久电影网 | 93久久精品日日躁夜夜躁欧美 | 最新免费av在线 | 欧美日韩精品在线观看 | 91精品国自产在线观看欧美 | 精品av在线播放 | 婷婷激情网站 | 亚洲最新视频在线播放 | 久久久噜噜噜久久久 | 午夜狠狠干 | a级成人毛片 | 日韩免费电影网 | 亚洲干 | 97超碰资源网 | 国产精品2区 | 97色综合 | 婷婷网五月天 | 国产精品视频久久 | 人人爽人人爽 | 天天综合入口 | 成人免费看片网址 | 91在线一区二区 | 国内久久久久久 | 国产视频 亚洲视频 | 亚洲黄色在线播放 | 91麻豆看国产在线紧急地址 | 99热.com| 中文字幕在线观看91 | 爱爱av在线 | 久久免费看视频 | 在线观看视频一区二区 | 中中文字幕av | 久久av免费电影 | 最新亚洲视频 | 国产美女在线免费观看 | 不卡的av在线 | 成人一级片在线观看 | 国产精品美女久久久网av | 伊人色**天天综合婷婷 | 日韩aⅴ视频 | 日韩欧美精品一区二区三区经典 | 大荫蒂欧美视频另类xxxx | 国产精品123| 欧美视频日韩 | 亚洲欧洲精品久久 | 欧美色久| 在线观看成人av | 国产精品久久久久永久免费 | 91成人在线观看喷潮 | 国产免费xvideos视频入口 | 国产精品久久久久久久久久免费看 | 欧美日韩高清在线观看 | 日韩精品一区二区三区不卡 | 成年人免费观看在线视频 | 中文字幕久久久精品 | 天天干,夜夜操 | 天天操天天干天天操天天干 | 久久久久久久18 | 丁香九月激情综合 | 欧美动漫一区二区三区 | 999热视频| 国产精品免费大片视频 | 正在播放日韩 | 亚洲视频综合在线 | 九九免费观看全部免费视频 | 99久久精品无免国产免费 | 久久字幕网 | 欧美日韩精品在线视频 | 日韩欧美在线观看一区二区 | 人人澡av | 五月婷婷一区 | 韩日精品在线 | 五月婷香蕉久色在线看 | 亚洲国产精品电影 | 精品久久久久久久久久 | 欧美极品少妇xbxb性爽爽视频 | www.黄色在线| 国产精品久久一卡二卡 | 九九视频免费在线观看 | 国产精品欧美一区二区 | 国产亚洲精品久久久久秋 | 青青河边草观看完整版高清 | 国产精品 中文字幕 亚洲 欧美 | 中文永久免费观看 | 国产激情电影综合在线看 | 免费三及片| 精品在线二区 | 国产精品成人免费 | 久久国产系列 | 狠狠干狠狠久久 | 成人午夜电影免费在线观看 | 亚洲九九精品 | 黄色小说免费在线观看 | 九九九视频在线 | 日本高清免费中文字幕 | 日韩在线一二三区 | 久久精品5| 国产中文字幕在线观看 | 欧美日韩亚洲在线观看 | 99精品视频播放 | 看av免费| 91成人免费视频 | 亚洲国产三级在线观看 | 久久99久久99精品免费看小说 | 日日夜夜精品网站 | 91成熟丰满女人少妇 | 国产精品久久久久永久免费 | 亚洲欧美怡红院 | 亚洲综合丁香 | 国产午夜精品一区二区三区 | 在线视频 国产 日韩 | 91网站免费观看 | 丁香六月网 | 日韩国产在线观看 | 在线观看av免费观看 | 国产在线观看xxx | 国产免费不卡 | 日韩欧美综合在线视频 | 一区二区三区在线不卡 | 中文av不卡 | 亚洲视频分类 | 亚洲精品国产综合久久 | 久久久私人影院 | 99视频久久 | 探花视频免费在线观看 | 国产精品理论片在线播放 | 超黄视频网站 | www.夜色.com | 免费视频三区 | 久久久久久高清 | 免费三级网 | 日韩1页 | 国产经典 欧美精品 | 日韩av片无码一区二区不卡电影 | 在线观看岛国片 | 狠狠的操 | 亚洲激情视频在线观看 | 婷婷网站天天婷婷网站 | 国产一级黄色电影 | 国产综合视频在线观看 | 亚洲男人天堂2018 | 色偷偷97 | 免费高清在线观看电视网站 | 日韩天天综合 | 99久久精品国产欧美主题曲 | 亚洲人在线 | 91麻豆精品国产91 | 丁香六月网 | 免费在线激情电影 | 日本女人在线观看 | 日韩中文在线观看 | 日韩在线视频看看 | 色婷婷88av视频一二三区 | 草久久久| 免费在线激情电影 | 日本公妇色中文字幕 | 久久综合五月天婷婷伊人 | 91免费视频黄 | 99视频在线精品国自产拍免费观看 | 国产精品久久久久亚洲影视 | 久久久精品久久日韩一区综合 | 嫩小bbbb摸bbb摸bbb| 日韩视频一区二区在线观看 | 久久国产影视 | 黄色网免费| 国产精品久久电影网 | 免费av在线 | 99久精品| 精品91在线| 午夜性福利 | 精品久久一二三区 | 在线日韩视频 | 免费一级片在线 | 欧美性黑人| 粉嫩一二三区 | 日韩在线免费不卡 | 久久精品99北条麻妃 | 国产一区二区高清不卡 | 色偷偷人人澡久久超碰69 | 97精产国品一二三产区在线 | 96久久欧美麻豆网站 | 一级欧美黄 | 亚洲久草在线视频 | a极黄色片 | 奇米网444 | 亚洲无吗av| 女人久久久久 | 日韩欧美精品一区二区 | 一区二区丝袜 | 亚洲精品国产免费 | 91女人18片女毛片60分钟 | 国产九九九视频 | 丁香婷婷色综合亚洲电影 | 欧美日韩在线观看一区二区三区 | 欧美一级性视频 | 亚洲精品综合一区二区 | 日韩欧美高清不卡 | 中文字幕一区二区三区乱码在线 | 成人欧美一区二区三区黑人麻豆 | av一级一片 | 久精品视频在线 | 日韩在线观看视频网站 | 九九国产视频 | 少妇高潮流白浆在线观看 | 国产美女在线观看 | 探花视频在线版播放免费观看 | 91精品在线观看视频 | 超碰在线人人艹 | 欧美狠狠操| 亚洲最大成人免费网站 | 国产精品亚洲综合久久 | 大片网站久久 | 国产一级片视频 | 91精品在线视频观看 | 999电影免费在线观看 | 人人精久 | 国产不卡在线视频 | 日韩亚洲精品电影 | 精品久久久久国产 | 久久综合爱 | 69精品久久 | 国产精品久久久久久久久久免费看 | 中文字幕在线观看视频网站 | 麻豆视频国产在线观看 | 欧美日韩伦理一区 | 日韩精品黄 | 久久高清片 | 九九爱免费视频 | 天堂v中文 | 中文字幕你懂的 | 91成人网在线 | 成人中文字幕在线 | 国产成人精品一二三区 | 久久久久久久久久久精 | 久久久久夜色 | 天天插天天射 | 亚洲电影成人 | 波多野结衣一区 | 天天干天天干天天干天天干天天干天天干 | 久久手机免费观看 | 久久的色| 欧美a级片网站 | 日本黄色黄网站 | 97超碰站 | 久久综合电影 | 国产精品美女免费看 | 99 视频 高清 | 91插插影库 | 西西444www | 亚洲天堂网在线播放 | 久久久夜色 | 亚欧洲精品视频在线观看 | 久久成人在线 | 国产一区在线观看免费 | 国产精品一区二区三区久久久 | 99精品色 | 久久久不卡影院 | 国产一区高清在线观看 | 国产精品毛片久久 | 国产视频一级 | 欧美在线观看视频一区二区三区 | 91av在线免费播放 | 色av男人的天堂免费在线 | 日日日网| 91精品视频导航 | 美女国产在线 | 一区三区视频在线观看 | 日本一区二区三区视频在线播放 | 亚洲成年人免费网站 | 在线观看视频一区二区 | 久久久久久国产精品 | 黄色三级免费网址 | 国产成人免费高清 | 99久久99视频 | 奇米网777| 91看片成人 | 超碰公开在线观看 | 天天干天天草天天爽 | 国产日本三级 | 9999免费视频 | 亚洲精品乱码久久 | 91香蕉视频污在线 | 婷婷5月色 | 久久久午夜精品福利内容 | 超级av在线| 天天干天天拍 | 午夜精品一区二区三区可下载 | 欧美男男激情videos | 99久久久免费视频 | 欧美日韩国语 | 黄在线免费观看 | 久久精品中文字幕一区二区三区 | 日日夜夜精品视频天天综合网 | 成人av免费播放 | 中文字幕av全部资源www中文字幕在线观看 | 91午夜精品| 在线视频欧美日韩 | 国产一级视频在线 | 91黄色在线看 | 久久国产99 | 国产专区视频在线 | 中字幕视频在线永久在线观看免费 | 中文字幕av电影下载 | 亚洲mv大片欧洲mv大片免费 | 97精品电影院 | 欧美精品久久人人躁人人爽 | 国产精品久久久久久久久久尿 | 国产精品精品久久久 | 国产亚洲精品久久网站 | 97视频免费在线看 | 97人人爽人人 | 国产精品97| 久久精彩免费视频 | 国产午夜精品一区二区三区在线观看 | 精品久久久久久久久久久久久久久久久久 | aaa毛片视频 | 亚洲国产精品第一区二区 | 成人午夜影视 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 国产999免费视频 | 国产一区免费视频 | 国产免费一区二区三区网站免费 | 亚洲一一在线 | 国产成人黄色 | 欧美先锋影音 | 免费观看一级成人毛片 | 国产字幕在线观看 | 狠狠地日| 国产一区二区三区久久久 | 日韩成人欧美 | 国产在线中文字幕 | 亚洲综合激情五月 | 免费黄a大片 | 中文字幕av专区 | 免费中文字幕视频 | 久人人 | 婷婷丁香五 | 在线电影av| 波多野结衣在线视频一区 | 亚洲精品视频在线观看免费视频 | 亚洲欧洲日韩在线观看 | 美女网站在线看 | 久久久精品国产免费观看一区二区 | 亚洲综合爱 | 91成年视频 | 国产精品mv | 精品国产欧美 | 国产在线观看污片 | 麻豆视频入口 | 91热视频| 在线免费视频一区 | 伊人激情综合 | www免费在线观看 | 六月天综合网 | 成人毛片一区 | 六月丁香在线视频 | 欧美日韩在线精品一区二区 | 午夜精品久久久久久久久久久久 | 日日干视频 | 国产精品成人一区二区 | 久久国产香蕉视频 | 大型av综合网站 | 四虎成人精品永久免费av | 成人黄色电影在线观看 | 天天射天天 | 天天操天天射天天添 | 毛片网在线 | 视频在线91| 毛片二区 | 在线免费成人 | 中文永久字幕 | 国产91大片| www.福利 | 日韩三级av | 国产精品毛片一区二区三区 | 91精品在线观看视频 | 最新av网址在线观看 | 最新午夜 | 亚洲精品视频在线观看网站 | 久久都是精品 | 中文有码在线视频 | 美女av免费看 | 精品久久免费看 | 97视频在线免费播放 | 911久久香蕉国产线看观看 | 亚洲成av人电影 | 最近中文字幕久久 | 一区二区三区在线免费观看视频 | 伊人色综合久久天天网 | av中文字幕在线观看网站 | 成人免费在线播放 | 国产免费久久av | 最新在线你懂的 | 国产不卡精品 | 久久精品中文字幕一区二区三区 | 国产一区在线视频播放 | 182午夜在线观看 | 午夜91视频 | 色婷婷激情 | 久草精品在线观看 | 91av手机在线观看 | www.99久久.com | 在线精品视频免费播放 | 成人手机在线视频 | 免费国产黄线在线观看视频 | 成人免费观看大片 | 国产91综合一区在线观看 | 在线观看亚洲精品视频 | 欧美做受高潮电影o | 91精品国产一区二区在线观看 | 91你懂的 | www.色的| 色视频网页 | 久久视频免费看 | 国产精品一区二区三区在线播放 | 三级黄免费看 | 久久综合久久综合久久 | 精品亚洲免费视频 | 国产精品久久嫩一区二区免费 | 免费看搞黄视频网站 | 韩日三级在线 | 99超碰在线播放 | 中文字幕有码在线观看 | 69xxxx欧美| 91丨九色丨国产女 | 97视频免费在线 | 亚洲国产天堂av | 在线韩国电影免费观影完整版 | 日韩在线二区 | 欧美另类视频 | 日韩黄色在线观看 | 碰超在线97人人 | 日本中文不卡 | www黄色软件 | 午夜精品久久久久99热app | 久久高清视频免费 | 免费三级影片 | 又色又爽又激情的59视频 | 毛片区| 麻豆国产视频下载 | 91人人爱 | 中文字幕资源网 国产 | 国产主播大尺度精品福利免费 | 亚洲国产无 | 在线免费色 | www日韩在线 | 日日夜夜免费精品视频 | 精品国产免费观看 | 精品久久一区二区 | 91在线小视频 | 国产精品中文字幕在线观看 | 日日操天天爽 | 在线日本看片免费人成视久网 | 丁香av在线| 色在线中文字幕 | 免费看精品久久片 | 国产精品久久久网站 | 日日夜夜精品视频天天综合网 | av一级黄| 国产盗摄精品一区二区 | 久久精品婷婷 | 五月开心六月婷婷 | 福利视频一区二区 | 久久久久久久久亚洲精品 | 99亚洲国产精品 | 久久久久久高潮国产精品视 | 在线视频日韩欧美 | av不卡中文字幕 | 色婷婷综合视频在线观看 | 99re中文字幕 | 中文字幕免费观看全部电影 | 亚洲精品午夜视频 | 午夜在线看片 | 欧美日性视频 | 欧美一级性生活 | 亚洲国产精品成人精品 | 国产高清成人av | 久久精品3 | 久久网站最新地址 | 欧美一级片 | 久久国产精品99国产 | 成年人视频免费在线 | 久久久精品国产一区二区三区 | 久草9视频 | 99热日本 | 奇米影视8888 | 亚洲天堂网视频 | 人人澡澡人人 | av天天澡天天爽天天av | 在线观看黄网站 | 亚洲japanese制服美女 | 久久精品小视频 | 久久天天躁狠狠躁夜夜不卡公司 | 91精品视频一区二区三区 | 国产粉嫩在线 | 亚洲天堂网视频在线观看 | 97超碰在线人人 | 国产精品99久久久 | 久久99精品久久久久久 | 一个色综合网站 | 在线国产小视频 | 国产一在线精品一区在线观看 | 国产精品毛片久久久久久久 | 日韩伦理片一区二区三区 | 亚洲国产片 | 91精品国产麻豆国产自产影视 | 日韩精品 在线视频 | 国产精品久久99 | 久久这里有精品 | 国产精品五月天 | 天天做天天爱天天综合网 | 91欧美视频网站 | 国产成人精品国内自产拍免费看 | 在线观看国产福利片 | 丁香视频全集免费观看 | av日韩av | 中文字幕高清免费日韩视频在线 | 99热99re6国产在线播放 | 国产精品久一 | 久久玖| 日本不卡一区二区 | 91视频在线免费观看 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 精品国精品自拍自在线 | 黄色大片中国 | 国产精品ⅴa有声小说 | 九九九热精品免费视频观看 | 久久久影片 | 精品视频免费观看 | 久久综合偷偷噜噜噜色 | 国产精品久久三 | 日本黄色免费看 | 国产无套精品久久久久久 | 黄色com| 欧美一级大片在线观看 | 免费高清在线观看成人 | 国产在线一区二区三区播放 | 一级黄色片在线免费观看 | 91精品国产一区二区在线观看 | 丁香在线视频 | 成人亚洲精品国产www | av线上看| 亚洲不卡在线 | 91成人网在线观看 | 成年人在线电影 | 天天干,天天插 | 日本精品一区二区在线观看 | 美女视频是黄的免费观看 | 国产99一区视频免费 | 欧美综合在线观看 | 免费看一级特黄a大片 | 日韩中文字幕亚洲一区二区va在线 | 97热久久免费频精品99 | 欧美va天堂在线电影 | 婷婷激情五月 | 国产一级黄色电影 | 日韩av资源在线观看 | 欧美日韩一级视频 | 激情综合色综合久久 | 色婷婷电影 | 欧美日韩不卡在线视频 | 在线免费观看国产精品 | 99久久婷婷国产一区二区三区 | 一级黄色电影网站 | 丁香花在线观看视频在线 | 久久精品4| 国产精品一区二区三区在线 | 国产精品高 | 久久精品牌麻豆国产大山 | 超碰成人免费电影 | 亚洲人人爱 | 黄色软件在线观看视频 | 久久久伊人网 | 国产一区福利在线 | 午夜av免费观看 | 免费黄色在线播放 | 日韩一区二区三区免费电影 | 免费看一及片 | 中文字幕永久 | 欧美资源 | 九九视频精品在线 | av中文在线影视 | 亚洲乱亚洲乱亚洲 | 天天色中文 | 精品久久久久久久久久久久久久久久久久 | 成人小视频在线免费观看 | 免费看黄在线网站 | 久久国产精品色婷婷 | 亚洲国产精品成人va在线观看 | 久草手机视频 | 黄色aa久久| 国产亚洲片| 国产福利91精品一区二区三区 | 日韩视频1区 | av韩国在线 | 最近日本韩国中文字幕 | 91精品区 | 久久婷综合| 黄a网站| 久久69av| av大片网站 | 在线观看日本高清mv视频 | 久久久影院官网 | 国产在线观看免 | 久久电影中文字幕视频 | 又湿又紧又大又爽a视频国产 | 国产精品 亚洲精品 | 亚洲国产精品999 | 六月天综合网 | 国产黄色免费观看 | 国产一区二区在线免费 | 在线观看中文字幕网站 | 在线观看日韩中文字幕 | 在线免费色 | 丰满少妇久久久 | 99人久久精品视频最新地址 | 亚洲免费成人av电影 | 国产99久久久国产精品免费看 | 国产欧美久久久精品影院 | 亚洲精品tv| 人人爽人人爽人人爽人人爽 | 成人中文字幕av | 国产高清不卡av | 日韩r级电影在线观看 | 日韩城人在线 | 欧美在线aaa | 中文在线免费看视频 | 99精品国产99久久久久久97 | 在线一区二区三区 | 99国产精品一区 | 国内视频在线观看 | 国产xx在线 | 亚洲黄色高清 | 美女视频免费一区二区 | 黄色精品久久久 | 人人草网站 | 免费视频97 | 中字幕视频在线永久在线观看免费 | 婷婷色婷婷 | 中文字幕一区二区三区乱码不卡 | www.97色.com | 久久久 激情 | 久草爱视频 | 色综合久久久久综合体桃花网 | 精品1区二区 | 日韩中文字幕国产 | 91精品麻豆 | 亚洲免费成人 | 免费看的黄色录像 | 久久成人免费电影 | 成人理论在线观看 | 欧美精品中文字幕亚洲专区 | 亚洲艳情| av三区在线 | 成人高清在线 | 久久99国产一区二区三区 | 中文字幕亚洲国产 | 黄色三级视频片 | 日韩欧美在线综合网 | 91人人爽久久涩噜噜噜 | 国产中文伊人 | 九九九免费视频 | 香蕉97视频观看在线观看 | 久久一区二区三区国产精品 | 国产五月婷 | 四虎国产精品永久在线国在线 | 午夜av免费观看 | 成人在线观看免费 | 精品久久久999 | 日韩r级电影在线观看 | 国产a免费 | 久影院| 国产九九九精品视频 | 亚洲欧美日韩国产一区二区 | 精品九九九 | 99中文在线 | 黄色免费大片 | 在线看毛片网站 | 久久综合偷偷噜噜噜色 | 久久男女视频 | 国产精品热视频 | 久久久久久久久久久精 | 干狠狠 | 精品一二三四五区 | av理论电影 | 国产又粗又猛又色又黄网站 | 亚洲精品国产区 | 久久理论影院 | 色吧久久 | 成年人黄色大片在线 | 久久香蕉国产 | 黄色av一区 | 欧美一级久久 | 天天干.com| 97在线观看免费观看 | 成人国产精品电影 | 激情五月开心 | 欧美在线视频日韩 | 久草在线91 | www.伊人网 | 久久a免费视频 | 国产精品高清一区二区三区 | 国产精成人品免费观看 | 在线观看精品黄av片免费 | 99中文在线 | 久久亚洲区 | 久草在线播放视频 | 伊人资源站 | 久久久久久久久久久免费视频 | 五月婷婷视频在线 | 91精品视频免费观看 | 在线观看岛国片 | www久久99 | 伊人五月在线 | 国产视| 2018好看的中文在线观看 | www色婷婷com| 久草在线视频看看 | av三级在线看 | 四虎影视成人 | 91视频在线观看免费 | 色亚洲网 | bayu135国产精品视频 | 欧美日韩网站 | 九九视频精品免费 | 久久精品99国产精品亚洲最刺激 | 久草在线视频在线 | 91中文字幕网 | 91精品亚洲影视在线观看 | 五月天久久久 | 久久这里有 | 2018亚洲男人天堂 | 国产一区二区精 | 久久久久亚洲精品 | 欧美日韩中文在线 | 久久免费国产电影 | 免费看三级 | 在线观看日韩专区 | 久久 亚洲视频 | 波多野结衣在线观看视频 | 国产亚洲成人精品 | 国产精品一区二区三区在线免费观看 | 国产高清在线a视频大全 | 黄色91免费观看 | 五月天天av | 久久视频在线看 | 欧美日韩国产页 | 久久96| 天天操综合 | 国产精品一区二区白浆 | 夜夜躁狠狠躁 | 国产精品高潮呻吟久久av无 | 久久婷婷激情 | 国产97在线视频 | 国产精品一区一区三区 | 成人一级免费视频 | 五月婷香蕉久色在线看 | 久久久久亚洲精品成人网小说 | 亚洲免费一级 | 中文字幕一区二区在线播放 | 天天在线操 | 波多野结衣在线观看一区二区三区 | 天堂av在线7 | 91精品在线免费视频 | 激情综合色播五月 | 精品亚洲视频在线观看 | 国产成人一区二区啪在线观看 | 亚洲国产欧美在线人成大黄瓜 | 国产高清永久免费 | 91九色性视频 | 久久草草影视免费网 | 97国产一区二区 | 日韩精品在线看 | 久草在线99 | 日本在线观看中文字幕无线观看 | 国产精品自拍在线 | 九九九视频精品 | 亚洲精品久久视频 | av网站免费在线 | 久久精品久久久精品美女 | 日韩亚洲在线视频 | 亚洲精品 在线视频 | 麻豆视频免费网站 | 精品国产精品久久 | 日韩av在线网站 | 欧美日韩亚洲在线 | 久久精品久久精品久久 | 午夜视频欧美 | 丁香婷婷综合五月 | 一区 二区电影免费在线观看 | 久久99国产综合精品免费 | 91精品国产91久久久久 | 人人插人人玩 | www黄com| 精品电影一区二区 | 亚洲精品mv在线观看 | 91精品网站在线观看 | 久久99国产精品二区护士 | 日韩视频中文 | av在线亚洲天堂 | 精品国模一区二区 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 免费观看性生活大片3 | 亚洲精品午夜久久久 | av黄色在线播放 | 久久久久女教师免费一区 | 色五月激情五月 | 手机成人在线电影 | 国产美腿白丝袜足在线av | 国产一级二级三级视频 | 色在线网 | 久久福利综合 | 女人久久久久 | 日韩一区正在播放 | 国产精品黄色 | 天天色综合1 | 在线只有精品 | 黄色激情网址 | 国产精品成人品 | 欧美一区二区日韩一区二区 | 久久,天天综合 | 天天综合亚洲 | 国产精品免费视频久久久 | 韩国av免费看 | 天天看天天干 | 亚洲资源 | 日韩久久在线 | 欧美aa一级片 | 韩国一区二区三区在线观看 | 亚洲综合色av | 天天操夜操视频 | 在线观看视频中文字幕 | 韩国精品在线观看 | 国产尤物在线观看 | 精品在线免费观看 | 婷婷激情五月综合 | 91九色国产| 国产一区二区久久久 | 亚洲国产wwwccc36天堂 | 欧美激情视频一二区 | 欧美韩日精品 | av在线直接看 |