实战项目——智慧社区(四)之 系统管理

1、用户管理

提供查询和搜索用户、根据id查询用户信息、添加用户、修改用户、删除用户的功能

界面

添加用户

修改用户信息

2、角色管理

提供查询和搜索角色、根据id查询角色信息、添加角色、修改角色、删除角色的功能

界面

添加角色

修改角色

3、菜单管理

提供查询和搜索菜单、根据id查询菜单信息、添加菜单、删除菜单的功能

界面

添加菜单

4、日志管理

日志(log)数据表设计

存储操作的日志信息

添加日志的注解类

旨在提供一种声明式的方式来表示某个方法可能需要特定的日志记录行为

package com.qcby.community.annotation;import java.lang.annotation.*;@Target(ElementType.METHOD)       //这个元注解表示LogAnnotation只能被用于方法上。
@Retention(RetentionPolicy.RUNTIME)    //这个元注解表示LogAnnotation的生命周期是运行时。也就是说,这个注解不仅会被保留在类文件中,还会在JVM加载类时保留,因此可以在运行时通过反射读取它。
@Documented    //这个元注解表示如果某个元素(类、方法、变量等)使用了LogAnnotation,那么在使用javadoc生成API文档时,这个注解也会被包含在生成的文档中。
public @interface LogAnnotation {String value() default "";
}

方法上添加日志注解

当方法上添加日志注解后,该方法在调用时就会生成相应的日志信息。当在人脸采集的方法上添加日志注解后,如果调用人脸采集这个方法,就会生成相应的人脸采集的日志信息,如:

    @LogAnnotation("人脸采集")@PostMapping("/addPerson")public Result addPerson(@RequestBody PersonFaceForm personFaceForm){...}

Log切面类

自动记录带有@LogAnnotation注解的方法的日志信息。

package com.qcby.community.aspect;import com.google.gson.Gson;
import com.qcby.community.annotation.LogAnnotation;
import com.qcby.community.entity.Log;
import com.qcby.community.entity.User;
import com.qcby.community.service.LogService;
import com.qcby.community.util.HttpContextUtil;
import com.qcby.community.util.IPUtil;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;@Aspect
@Component
public class LogAspect {@Autowiredprivate LogService logService;public static User user;@Pointcut("@annotation(com.qcby.community.annotation.LogAnnotation)")public void logPointCut() {}@Around("logPointCut()")public Object around(ProceedingJoinPoint point) throws Throwable {long beginTime = System.currentTimeMillis();//执行方法Object result = point.proceed();//执行时长(毫秒)long time = System.currentTimeMillis() - beginTime;//保存日志saveLog(point, (int) time);return result;}private void saveLog(ProceedingJoinPoint joinPoint, int time) {MethodSignature signature = (MethodSignature) joinPoint.getSignature();Method method = signature.getMethod();Log log = new Log();LogAnnotation logAnnotation = method.getAnnotation(LogAnnotation.class);if (logAnnotation != null) {//注解上的描述log.setOperation(logAnnotation.value());}//请求的方法名String className = joinPoint.getTarget().getClass().getName();String methodName = signature.getName();log.setMethod(className + "." + methodName + "()");//请求的参数Object[] args = joinPoint.getArgs();try {String params = new Gson().toJson(args[0]);log.setParams(params);} catch (Exception e) {}HttpServletRequest request = HttpContextUtil.getHttpServletRequest();log.setIp(IPUtil.getIpAddr(request));log.setTime(time);//登录用户信息if (user != null) {log.setUsername(user.getUsername());this.logService.save(log);}}}

提供日志搜索查看和删除功能,界面如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习在安全领域的应用:从大数据中识别潜在安全威胁

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

蓝桥杯第2152题——红绿灯

问题描述 爱丽丝要开车去上班, 上班的路上有许多红绿灯, 这让爱丽丝很难过。为 了上班不迟到, 她给自己的车安装了氮气喷射装置。现在她想知道自己上班最 短需要多少时间。 爱丽丝的车最高速度是 米每秒, 并且经过改装后, 可以瞬间加速到小于 等于最高速的任意速度, 也可以瞵…

Sonar下启动发生错误,elasticsearch启动错误

Download | SonarQube | Sonar (sonarsource.com) 1.首先我的sonar版本为 10.4.1 ,java版本为17 2.sonar启动需要数据库,我先安装了mysql, 但是目前sonar从7.9开始不支持mysql,且java版本要最少11,推荐使用java17 3.安装postsql,创建sonar数据库 4.启…

ArcGIS Desktop使用入门(三)图层右键工具——可见比例范围

系列文章目录 ArcGIS Desktop使用入门(一)软件初认识 ArcGIS Desktop使用入门(二)常用工具条——标准工具 ArcGIS Desktop使用入门(二)常用工具条——编辑器 ArcGIS Desktop使用入门(二&#x…

如何下载和安装Google Chrome扩展插件:一步步指南

Google Chrome 插件为我们提供了这样的便利,但有时找到一个有用的插件后,我们可能需要将其下载到本地以便离线使用或备份。 一、为什么可以从Google Chrome商店直接下载插件? Google Chrome 扩展插件主要通过Chrome Web Store分发&#xff…

流氓软件清理绝杀全家桶

下载地址:流氓软件清理绝杀全家桶.zip 网上仍有不少软件中携带流氓软件,甚至某些所谓的大厂出品的工具中也会有一些捆绑! 对于玩机经验不太丰富的小白来说,也许一不小心,桌面就会被某些流氓软件搞得乌烟瘴气&#xf…

实验笔记之——RGBD GS-ICP SLAM配置与测试

《RGBD GS-ICP SLAM》是最新开源的一个3DGS-SLAM工作,通过利用GICP来实现当前帧gaussian与已mapping的gaussian进行匹配进行位姿的估算,并通过关键帧的选择策略来进一步提升performance~ Use G-ICP to align the current frame with the 3D GS map whic…

基于人脸识别的发型推荐系统代码实现

1.摘要 本文介绍了一个基于人脸识别技术的发型推荐系统的实现与分析。该系统利用Python编程语言和相关库,结合Face人脸识别API,实现了用户上传照片后的性别识别、脸型分析和发型推荐功能。首先,用户通过Tkinter GUI界面选择上传照片&#xff…

gpt在线网页版最全收录

ChatGPT镜像 今天在知乎看到一个问题:“平民不参与内测的话没有账号还有机会使用ChatGPT吗?” 从去年GPT大火到现在,关于GPT的消息铺天盖地,真要有心想要去用,途径很多,别的不说,国内GPT的镜像…

Linux网络基础 (二) ——(IP、MAC、端口号、TCPUDP协议、网络字节序)

文章目录 IP 地址基本概念源IP地址 & 目的IP地址 MAC 地址基本概念源MAC地址 & 目的MAC地址 端口号基本概念源端口号 & 目的端口号 TCP & UDP 协议基本概念TCP 与 UDP 的抉择 网络字节序大端、小端字节序 🎖 博主的CSDN主页:Ryan.Alask…

1.9 数据结构之 并查集

编程总结 在刷题之前需要反复练习的编程技巧,尤其是手写各类数据结构实现,它们好比就是全真教的上乘武功 本栏目为学习笔记参考:https://leetcode.cn/leetbook/read/disjoint-set/oviefi/ 1.0 概述 并查集(Union Find&#xff09…

# Nacos 服务发现-快速入门-测试多实例 Ribbon 负载均衡

Nacos 服务发现-快速入门-测试多实例 Ribbon 负载均衡 1、修改 服务生产模块 quickstart_provider 子工程中的 配置文件 application.yaml port: ${port:56010} # 启动端口 # 修改为动态传参,如果未传参数,默认端口为 56010 2、在 idea 中,…

内网渗透-Linux内网渗透

系列文章目录 文章目录 系列文章目录一、Linux内网渗透二、提权 2.1 利用内核漏洞进行提权2.2 利用文件权限配置不当进行提权2.3 利用SUID程序进行提权 三、隧道 3.1 SSH3.2 nc/ncat3.3 portmap3.4 portfw 四、反弹shell 4.1 bash4.2 netcat4.3 php4.4 perl4.5 python4.6 ruby4…

Prime (2021): 2

前言 这个靶机有亿点难,收获很多。打靶的时候,前面很顺,到创建ssh公钥之后就一点不会了。 1 01 arp扫描,发现有一个130,再查看端口 有22,80,129,445,10123 dirb扫描目录 这…

蓝牙技术在智能硬件中应用火热,你的蓝牙适配测试如何解决?

蓝牙技术在物联网中的应用非常广泛,可以为人们的生活和工作带来更多的便利和智能化体验,主要五大核心应用场景,具体如下: 1、智能家居 通过蓝牙连接智能家居设备,如智能灯泡、智能插座、智能恒温器等,可以…

mysql 查询实战-变量方式-解答

对mysql 查询实战-变量方式-题目,进行一个解答。(先看题,先做,再看解答) 1、查询表中⾄少连续三次的数字 1,处理思路 要计算连续出现的数字,加个前置变量,记录上一个的值&#xff0c…

AI大模型日报#0413:谷歌引入“无限注意力”、Picsart AI 开源120秒超长AI视频模型

导读: 欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。 标题: 速递|木头姐 ARK 宣布已投资 OpenAI!还将 Anthropic 及 Figure1 等 AI 独角兽一网打尽摘要: ARK已通过其风…

IO流基本流

目录 什么是IO流 IO流的体系 字节流 FileOutputStream FileInputStream 字符集 字符流 FileReader FileWriter 字节流和字符流的使用场景 什么是IO流 内存不能永久化存储,程序停止,数据丢失,所以要添加一个存档功能,存储到硬盘的文件,我们要知道文件在哪里和如何传…

【web3技术】什么是 WEB3?

Web3 简介 中心化网络已经帮助数十亿人融入了互联网,并在其上创建了稳定、可靠的基础设施。 与此同时,少数中心化巨头几乎垄断了互联网,甚至可以为所欲为。 Web3 是摆脱这一困境的方案。 不同于科技巨头垄断的传统互联网,Web3 采用去中心化,由所有用户构建、运营和拥有。…