Commit b54b928f by 宋振民

feat:审计日志新增登录时长

parent 26426cd4
ALTER TABLE `audit_log`
MODIFY COLUMN `USER_ID` int(11) NOT NULL COMMENT '用户ID' AFTER `STATE`,
MODIFY COLUMN `IP` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户IP' AFTER `USER_ID`,
MODIFY COLUMN `MODULE_CODE` int(11) NULL DEFAULT NULL COMMENT '模块编码' AFTER `IP`,
MODIFY COLUMN `OPERATE_TYPE` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作类型' AFTER `MODULE_CODE`,
MODIFY COLUMN `DESCRIBE` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述' AFTER `OPERATE_TYPE`,
ADD COLUMN `TOKEN` varchar(255) NULL COMMENT 'TOKEN' AFTER `DESCRIBE`;
ALTER TABLE `audit_log`
ADD COLUMN `URL` varchar(255) NULL COMMENT '访问url' AFTER `TOKEN`,
ADD COLUMN `PARAMS` text NULL COMMENT '参数' AFTER `URL`;
\ No newline at end of file
...@@ -82,6 +82,12 @@ ...@@ -82,6 +82,12 @@
<artifactId>pagehelper-spring-boot-starter</artifactId> <artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version> <version>1.2.5</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -35,4 +35,17 @@ public class AuditLog { ...@@ -35,4 +35,17 @@ public class AuditLog {
@Setter @Setter
private String describe; private String describe;
@Setter
private String token;
@Setter
private String url;
@Setter
private String params;
@Setter
private String onlineTime;
} }
...@@ -4,18 +4,22 @@ import com.github.pagehelper.PageHelper; ...@@ -4,18 +4,22 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.hs.admin.common.base.PageRequest; import com.hs.admin.common.base.PageRequest;
import com.hs.admin.common.base.PageResult; import com.hs.admin.common.base.PageResult;
import com.hs.admin.common.utils.AESUtil; import com.hs.admin.common.utils.DateUtils;
import com.hs.admin.common.utils.PageUtil; import com.hs.admin.common.utils.PageUtil;
import com.hs.admin.mapper.AuditLogMapper; import com.hs.admin.mapper.AuditLogMapper;
import com.hs.admin.model.AuditLog; import com.hs.admin.model.AuditLog;
import com.hs.admin.model.reqmodel.AuditLogReq; import com.hs.admin.model.reqmodel.AuditLogReq;
import com.hs.admin.model.respmodel.SysUserList;
import com.hs.admin.service.AuditLogService; import com.hs.admin.service.AuditLogService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import static java.util.stream.Collectors.groupingBy;
@Service @Service
public class AuditLogServiceImpl implements AuditLogService { public class AuditLogServiceImpl implements AuditLogService {
...@@ -35,7 +39,52 @@ public class AuditLogServiceImpl implements AuditLogService { ...@@ -35,7 +39,52 @@ public class AuditLogServiceImpl implements AuditLogService {
PageHelper.startPage(page.getPageNum(), page.getPageSize()); PageHelper.startPage(page.getPageNum(), page.getPageSize());
List<AuditLog> allAuditLogs = auditLogMapper.getAllAuditLogs(); List<AuditLog> allAuditLogs = auditLogMapper.getAllAuditLogs();
PageResult pageResult = PageUtil.getPageResult(page, new PageInfo<AuditLog>(allAuditLogs)); PageResult pageResult = PageUtil.getPageResult(page, new PageInfo<AuditLog>(allAuditLogs));
getOnlineTime(pageResult.getContent());
return pageResult; return pageResult;
} }
private void getOnlineTime(List<AuditLog> auditLogs) {
Map<String,String> onlineTimeMap = new HashMap<>();
Map<String, List<AuditLog>> map = auditLogs.stream()
.collect(groupingBy(AuditLog::getToken));
for (String token : map.keySet()) {
List<AuditLog> auditLogList = map.get(token);
Date loginTime = null;
Date logoutTime = null;
Date lastRefreshTIme = null;
System.out.println("token=" + token);
for(AuditLog auditLog: auditLogList) {
Date createDate = auditLog.getCreateDate();
if(auditLog.getOperateType().equals("login")) {
loginTime= createDate;
}else if(auditLog.getOperateType().equals("logout")) {
logoutTime=createDate;
}else if(auditLog.getOperateType().equals("refresh")) {
if(lastRefreshTIme==null || createDate.getTime()>lastRefreshTIme.getTime()) {
lastRefreshTIme=createDate;
}
}
}
//有登录、退出时间的
if(loginTime!=null && logoutTime!=null) {
String dateMinus = DateUtils.dateDiff(loginTime, logoutTime);
System.out.println("时间差为:" + dateMinus);
onlineTimeMap.put(token, dateMinus);
}else if(loginTime!=null && logoutTime==null && lastRefreshTIme!=null) {
String dateMinus = DateUtils.dateDiff(loginTime, lastRefreshTIme);
System.out.println("时间差为:" + dateMinus);
onlineTimeMap.put(token, dateMinus);
}else{
onlineTimeMap.put(token,"0分钟");
}
}
System.out.println(onlineTimeMap);
for(AuditLog auditLog: auditLogs) {
auditLog.setOnlineTime(onlineTimeMap.get(auditLog.getToken()));
}
}
} }
#### \u6D4B\u8BD5\u73AF\u5883 ################################################### #### \u6D4B\u8BD5\u73AF\u5883 ###################################################
spring.datasource.url=jdbc:mysql://192.168.18.176:3306/scml_sy2.0?useUnicode=true&characterEncoding=utf8&useSSL=false&autoReconnect=true&rewriteBatchedStatements=TRUE&serverTimezone=UTC spring.datasource.url=jdbc:mysql://192.168.18.176:3306/scml_sy2.1_org?useUnicode=true&characterEncoding=utf8&useSSL=false&autoReconnect=true&rewriteBatchedStatements=TRUE&serverTimezone=UTC
spring.datasource.username=root spring.datasource.username=root
spring.datasource.password=Suvalue2016 spring.datasource.password=Suvalue2016
spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.druid.initial-size=1
# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA40\uFF09 # Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA40\uFF09
spring.redis.database=0 spring.redis.database=1
spring.redis.host=192.168.18.166 spring.redis.host=192.168.18.166
spring.redis.port=6379 spring.redis.port=6379
spring.redis.password=ll123456 spring.redis.password=ll123456
......
...@@ -11,6 +11,9 @@ ...@@ -11,6 +11,9 @@
<result column="MODULE_CODE" jdbcType="INTEGER" property="moduleCode"/> <result column="MODULE_CODE" jdbcType="INTEGER" property="moduleCode"/>
<result column="OPERATE_TYPE" jdbcType="VARCHAR" property="operateType"/> <result column="OPERATE_TYPE" jdbcType="VARCHAR" property="operateType"/>
<result column="DESCRIBE" jdbcType="VARCHAR" property="describe"/> <result column="DESCRIBE" jdbcType="VARCHAR" property="describe"/>
<result column="TOKEN" jdbcType="VARCHAR" property="token"/>
<result column="URL" jdbcType="VARCHAR" property="url"/>
<result column="PARAMS" jdbcType="VARCHAR" property="params"/>
</resultMap> </resultMap>
<insert id="insert" parameterType="com.hs.admin.model.AuditLog"> <insert id="insert" parameterType="com.hs.admin.model.AuditLog">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long"> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
......
package com.hs.admin; package com.hs.admin;
import com.hs.admin.model.AuditLog;
import com.hs.admin.model.reqmodel.UpdateUserReq;
import com.hs.admin.model.respmodel.SysUserList;
import com.hs.admin.service.AuditLogService; import com.hs.admin.service.AuditLogService;
import com.hs.admin.service.LoginService;
import com.hs.admin.service.UserService;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
import java.util.List;
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@SpringBootTest(classes = HsAdminApplicationTests.class) @SpringBootTest(classes = HsAdminApplicationTests.class)
public class AuditLogServiceTest { public class AuditLogServiceTest {
......
...@@ -9,6 +9,7 @@ import com.hs.api.model.respmodel.LoginInfo; ...@@ -9,6 +9,7 @@ import com.hs.api.model.respmodel.LoginInfo;
import com.hs.api.service.AuditLogService; import com.hs.api.service.AuditLogService;
import com.hs.api.service.UserService; import com.hs.api.service.UserService;
import com.hs.common.utils.HttpUtil; import com.hs.common.utils.HttpUtil;
import com.hs.common.utils.RedisUtil;
import org.aspectj.lang.JoinPoint; import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*; import org.aspectj.lang.annotation.*;
...@@ -20,7 +21,9 @@ import org.springframework.web.context.request.ServletRequestAttributes; ...@@ -20,7 +21,9 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List;
@Aspect @Aspect
@Component @Component
...@@ -60,12 +63,6 @@ public class AuditAspect { ...@@ -60,12 +63,6 @@ public class AuditAspect {
@AfterReturning(pointcut = "audit()", returning = "rc") @AfterReturning(pointcut = "audit()", returning = "rc")
public void afterReturning(JoinPoint joinPoint, Result rc) { public void afterReturning(JoinPoint joinPoint, Result rc) {
if(rc.getCode() == Result.ErrorCode.SUCCESS.getCode()) { if(rc.getCode() == Result.ErrorCode.SUCCESS.getCode()) {
LoginInfo loginInfo = (LoginInfo) rc.getData();
SysUser user = loginInfo.getUser();
if (user==null) return;
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
String ip = HttpUtil.getIP(request);
MethodSignature ms = (MethodSignature) joinPoint.getSignature(); MethodSignature ms = (MethodSignature) joinPoint.getSignature();
Method method = ms.getMethod(); Method method = ms.getMethod();
Audit audit = method.getAnnotation(Audit.class); Audit audit = method.getAnnotation(Audit.class);
...@@ -73,6 +70,23 @@ public class AuditAspect { ...@@ -73,6 +70,23 @@ public class AuditAspect {
int moduleCode = auditType.getModuleCode(); int moduleCode = auditType.getModuleCode();
String operateType = auditType.getOperateType(); String operateType = auditType.getOperateType();
String describe = auditType.getDescribe(); String describe = auditType.getDescribe();
SysUser user = new SysUser();
String token = new String();
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
String ip = HttpUtil.getIP(request);
String uri = request.getRequestURI();
Object[] params = joinPoint.getArgs();
List<Object> paramsList = Arrays.asList(params);
if(operateType.equals(AuditLogType.REFRESH.getOperateType())) {
token = request.getHeader("Authorization");
user = (SysUser) RedisUtil.get(token);
}else {
LoginInfo loginInfo = (LoginInfo) rc.getData();
user = loginInfo.getUser();
token = loginInfo.getToken();
}
auditLog.setCreateDate(new Date()); auditLog.setCreateDate(new Date());
auditLog.setState(true); auditLog.setState(true);
...@@ -81,6 +95,9 @@ public class AuditAspect { ...@@ -81,6 +95,9 @@ public class AuditAspect {
auditLog.setModuleCode(moduleCode); auditLog.setModuleCode(moduleCode);
auditLog.setOperateType(operateType); auditLog.setOperateType(operateType);
auditLog.setDescribe(describe); auditLog.setDescribe(describe);
auditLog.setToken(token);
auditLog.setUrl(uri);
auditLog.setParams(paramsList.toString());
auditLogService.add(auditLog); auditLogService.add(auditLog);
} }
} }
......
...@@ -2,7 +2,8 @@ package com.hs.api.common.enums; ...@@ -2,7 +2,8 @@ package com.hs.api.common.enums;
public enum AuditLogType { public enum AuditLogType {
LOGIN(1, "login","用户登录"), LOGIN(1, "login","用户登录"),
LOGOUT(2, "logout","用户注销"); LOGOUT(2, "logout","用户注销"),
REFRESH(1, "refresh","页面刷新");
private int moduleCode; private int moduleCode;
private String operateType; private String operateType;
......
package com.hs.api.controller; package com.hs.api.controller;
import com.hs.api.common.Result; import com.hs.api.common.Result;
import com.hs.api.common.annotations.Audit;
import com.hs.api.common.annotations.CurrentUser; import com.hs.api.common.annotations.CurrentUser;
import com.hs.api.common.annotations.Token; import com.hs.api.common.annotations.Token;
import com.hs.api.common.enums.AuditLogType;
import com.hs.api.model.reqmodel.BlockValues; import com.hs.api.model.reqmodel.BlockValues;
import com.hs.api.model.reqmodel.BlockValuesNew; import com.hs.api.model.reqmodel.BlockValuesNew;
import com.hs.api.model.respmodel.BlockValue; import com.hs.api.model.respmodel.BlockValue;
...@@ -36,6 +38,7 @@ public class BlockValuesController { ...@@ -36,6 +38,7 @@ public class BlockValuesController {
@ApiIgnore @ApiIgnore
// @PostMapping("blockValues") // @PostMapping("blockValues")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("根据Page查询板块数值") @ApiOperation("根据Page查询板块数值")
public Object getBlockValuesByPageID(@RequestBody BlockValues blockValues) throws InterruptedException { public Object getBlockValuesByPageID(@RequestBody BlockValues blockValues) throws InterruptedException {
...@@ -52,6 +55,7 @@ public class BlockValuesController { ...@@ -52,6 +55,7 @@ public class BlockValuesController {
*/ */
@PostMapping("blockValuesNew") @PostMapping("blockValuesNew")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("根据Page查询板块数值") @ApiOperation("根据Page查询板块数值")
public Object getBlockValuesByPageIDNew(@ApiIgnore @CurrentUser Long userId,@RequestBody BlockValuesNew blockValues) throws InterruptedException { public Object getBlockValuesByPageIDNew(@ApiIgnore @CurrentUser Long userId,@RequestBody BlockValuesNew blockValues) throws InterruptedException {
...@@ -67,6 +71,7 @@ public class BlockValuesController { ...@@ -67,6 +71,7 @@ public class BlockValuesController {
*/ */
@PostMapping("customBlockValues") @PostMapping("customBlockValues")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("根据Page获取报表标题信息") @ApiOperation("根据Page获取报表标题信息")
public Object getCustomBlockValuesByPageCode(@ApiIgnore @CurrentUser Long userId,@RequestBody BlockValuesNew blockValues) throws InterruptedException { public Object getCustomBlockValuesByPageCode(@ApiIgnore @CurrentUser Long userId,@RequestBody BlockValuesNew blockValues) throws InterruptedException {
Map<String, List> titleMap = blockValuesService.getCustomBlockValuesByPageCode(userId, blockValues.getPageCode(), blockValues.getDim()); Map<String, List> titleMap = blockValuesService.getCustomBlockValuesByPageCode(userId, blockValues.getPageCode(), blockValues.getDim());
......
package com.hs.api.controller; package com.hs.api.controller;
import com.hs.api.common.Result; import com.hs.api.common.Result;
import com.hs.api.common.annotations.Audit;
import com.hs.api.common.annotations.CurrentUser; import com.hs.api.common.annotations.CurrentUser;
import com.hs.api.common.annotations.Token; import com.hs.api.common.annotations.Token;
import com.hs.api.common.enums.AuditLogType;
import com.hs.api.model.SerDepartment; import com.hs.api.model.SerDepartment;
import com.hs.api.model.reqmodel.Disease; import com.hs.api.model.reqmodel.Disease;
import com.hs.api.service.SysUserOrgRsService; import com.hs.api.service.SysUserOrgRsService;
...@@ -29,6 +31,7 @@ public class DeptController { ...@@ -29,6 +31,7 @@ public class DeptController {
*/ */
@PostMapping("/dept/list") @PostMapping("/dept/list")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("查询科室列表") @ApiOperation("查询科室列表")
public Object getList(@ApiIgnore @CurrentUser Long userId, @RequestBody Disease.DiseaseIDorLevel disease) { public Object getList(@ApiIgnore @CurrentUser Long userId, @RequestBody Disease.DiseaseIDorLevel disease) {
List<SerDepartment> sysMenuList = sysUserOrgRsService.getUserOrg(userId, disease.getDisease(), disease.getDate()); List<SerDepartment> sysMenuList = sysUserOrgRsService.getUserOrg(userId, disease.getDisease(), disease.getDate());
......
package com.hs.api.controller; package com.hs.api.controller;
import com.hs.api.common.Result; import com.hs.api.common.Result;
import com.hs.api.common.annotations.Audit;
import com.hs.api.common.annotations.Token; import com.hs.api.common.annotations.Token;
import com.hs.api.common.enums.AuditLogType;
import com.hs.api.model.reqmodel.ReqDimValue; import com.hs.api.model.reqmodel.ReqDimValue;
import com.hs.api.model.respmodel.DimValue; import com.hs.api.model.respmodel.DimValue;
import com.hs.api.service.DicDimService; import com.hs.api.service.DicDimService;
...@@ -29,6 +31,7 @@ public class DimController { ...@@ -29,6 +31,7 @@ public class DimController {
*/ */
@PostMapping("dimValue") @PostMapping("dimValue")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("根据pageCode查询维度数值") @ApiOperation("根据pageCode查询维度数值")
public Object getdimValueByPageCode(@RequestBody @Valid ReqDimValue reqDimValue) { public Object getdimValueByPageCode(@RequestBody @Valid ReqDimValue reqDimValue) {
List<DimValue> dimValueList = dicDimService.getByPageCode(reqDimValue.getPageCode(),reqDimValue.getOrgId(),reqDimValue.getDate()); List<DimValue> dimValueList = dicDimService.getByPageCode(reqDimValue.getPageCode(),reqDimValue.getOrgId(),reqDimValue.getDate());
......
package com.hs.api.controller; package com.hs.api.controller;
import com.hs.api.common.Result; import com.hs.api.common.Result;
import com.hs.api.common.annotations.Audit;
import com.hs.api.common.annotations.Token; import com.hs.api.common.annotations.Token;
import com.hs.api.common.enums.AuditLogType;
import com.hs.api.model.SerDoctor; import com.hs.api.model.SerDoctor;
import com.hs.api.model.reqmodel.Doctor; import com.hs.api.model.reqmodel.Doctor;
import com.hs.api.service.SerDoctorService; import com.hs.api.service.SerDoctorService;
...@@ -27,6 +29,7 @@ public class DoctorController { ...@@ -27,6 +29,7 @@ public class DoctorController {
*/ */
@PostMapping("/doctor/list") @PostMapping("/doctor/list")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("根据科室查询医生列表") @ApiOperation("根据科室查询医生列表")
public Object getList(@RequestBody Doctor doctor) throws InterruptedException { public Object getList(@RequestBody Doctor doctor) throws InterruptedException {
List<SerDoctor> list = serDoctorService.getDoctor(doctor.getDept()); List<SerDoctor> list = serDoctorService.getDoctor(doctor.getDept());
......
package com.hs.api.controller; package com.hs.api.controller;
import com.hs.api.common.Result; import com.hs.api.common.Result;
import com.hs.api.common.annotations.Audit;
import com.hs.api.common.annotations.Token; import com.hs.api.common.annotations.Token;
import com.hs.api.common.enums.AuditLogType;
import com.hs.api.common.handlers.GlobalExceptionHandler; import com.hs.api.common.handlers.GlobalExceptionHandler;
import com.hs.api.model.reqmodel.ExportReq; import com.hs.api.model.reqmodel.ExportReq;
import com.hs.api.service.ExcelService; import com.hs.api.service.ExcelService;
...@@ -27,6 +29,7 @@ public class ExcelController { ...@@ -27,6 +29,7 @@ public class ExcelController {
@PostMapping("export") @PostMapping("export")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("将Table转换为Xls") @ApiOperation("将Table转换为Xls")
public Object tableToXls(HttpServletRequest request,@RequestBody ExportReq info) { public Object tableToXls(HttpServletRequest request,@RequestBody ExportReq info) {
String tableStr = StringEscapeUtils.unescapeHtml4(info.getTableStr()); String tableStr = StringEscapeUtils.unescapeHtml4(info.getTableStr());
......
package com.hs.api.controller; package com.hs.api.controller;
import com.hs.api.common.Result; import com.hs.api.common.Result;
import com.hs.api.common.annotations.Audit;
import com.hs.api.common.enums.AuditLogType;
import com.hs.api.model.DicIndInfo; import com.hs.api.model.DicIndInfo;
import com.hs.api.service.DicIndService; import com.hs.api.service.DicIndService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -39,6 +41,7 @@ public class IndController { ...@@ -39,6 +41,7 @@ public class IndController {
// } // }
@GetMapping("ind/find") @GetMapping("ind/find")
@Audit(type = AuditLogType.REFRESH)
public Object find(Integer pageCode, String filter) { public Object find(Integer pageCode, String filter) {
List<DicIndInfo> list = dicIndService.selectAll(pageCode, filter); List<DicIndInfo> list = dicIndService.selectAll(pageCode, filter);
return Result.success(list); return Result.success(list);
......
package com.hs.api.controller; package com.hs.api.controller;
import com.hs.api.common.Result; import com.hs.api.common.Result;
import com.hs.api.common.annotations.Audit;
import com.hs.api.common.annotations.CurrentUser; import com.hs.api.common.annotations.CurrentUser;
import com.hs.api.common.annotations.Token; import com.hs.api.common.annotations.Token;
import com.hs.api.common.enums.AuditLogType;
import com.hs.api.model.reqmodel.Disease; import com.hs.api.model.reqmodel.Disease;
import com.hs.api.model.respmodel.DiseaseLevel; import com.hs.api.model.respmodel.DiseaseLevel;
import com.hs.api.model.respmodel.DiseaseName; import com.hs.api.model.respmodel.DiseaseName;
...@@ -33,6 +35,7 @@ public class SerDiseaseController { ...@@ -33,6 +35,7 @@ public class SerDiseaseController {
*/ */
@PostMapping("disease/list") @PostMapping("disease/list")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("根据疾病编码或者疾病等级查询疾病列表") @ApiOperation("根据疾病编码或者疾病等级查询疾病列表")
public Object getDiseaseByLevel(@ApiIgnore @CurrentUser Long userId, @RequestBody Disease.DiseaseIDorLevel disease) throws InterruptedException { public Object getDiseaseByLevel(@ApiIgnore @CurrentUser Long userId, @RequestBody Disease.DiseaseIDorLevel disease) throws InterruptedException {
List<DiseaseLevel> diseaseLevel = serDiseaseService.selectListByIdorLevel(disease.getDate(), disease.getDisease(), List<DiseaseLevel> diseaseLevel = serDiseaseService.selectListByIdorLevel(disease.getDate(), disease.getDisease(),
...@@ -42,6 +45,7 @@ public class SerDiseaseController { ...@@ -42,6 +45,7 @@ public class SerDiseaseController {
@PostMapping("disease/name") @PostMapping("disease/name")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("根据疾病名称查询疾病信息") @ApiOperation("根据疾病名称查询疾病信息")
public Object getDiseaseByMdcName(@ApiIgnore @CurrentUser Long userId, @RequestBody Disease.DiseaseName disease) throws InterruptedException { public Object getDiseaseByMdcName(@ApiIgnore @CurrentUser Long userId, @RequestBody Disease.DiseaseName disease) throws InterruptedException {
List<DiseaseName> list = serDiseaseService.selectByMdcName(userId, disease.getDate(), disease.getMdcName(), disease.getDoctor(), disease.getDept(), disease.getMedicalRecord()); List<DiseaseName> list = serDiseaseService.selectByMdcName(userId, disease.getDate(), disease.getMdcName(), disease.getDoctor(), disease.getDept(), disease.getMedicalRecord());
......
package com.hs.api.controller; package com.hs.api.controller;
import com.hs.api.common.Result; import com.hs.api.common.Result;
import com.hs.api.common.annotations.Audit;
import com.hs.api.common.annotations.Token; import com.hs.api.common.annotations.Token;
import com.hs.api.common.enums.AuditLogType;
import com.hs.api.model.SerDiseaseDocRs; import com.hs.api.model.SerDiseaseDocRs;
import com.hs.api.model.reqmodel.DiseaseDoc; import com.hs.api.model.reqmodel.DiseaseDoc;
import com.hs.api.service.SerDiseaseDocService; import com.hs.api.service.SerDiseaseDocService;
...@@ -23,6 +25,7 @@ public class SerDiseaseDocController { ...@@ -23,6 +25,7 @@ public class SerDiseaseDocController {
@PostMapping("diseaseDoc") @PostMapping("diseaseDoc")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("根据Code查询疾病关系信息") @ApiOperation("根据Code查询疾病关系信息")
public Object getDiseaseDoc(@RequestBody DiseaseDoc disease) throws InterruptedException { public Object getDiseaseDoc(@RequestBody DiseaseDoc disease) throws InterruptedException {
List<SerDiseaseDocRs> list = serDiseaseDocService.getDiseaseDoc(disease.getDocCode(),disease.getMdcCode(), List<SerDiseaseDocRs> list = serDiseaseDocService.getDiseaseDoc(disease.getDocCode(),disease.getMdcCode(),
......
package com.hs.api.controller; package com.hs.api.controller;
import com.hs.api.common.Result; import com.hs.api.common.Result;
import com.hs.api.common.annotations.Audit;
import com.hs.api.common.annotations.CurrentUser; import com.hs.api.common.annotations.CurrentUser;
import com.hs.api.common.annotations.Token; import com.hs.api.common.annotations.Token;
import com.hs.api.common.enums.AuditLogType;
import com.hs.api.model.reqmodel.AddBudgetValue; import com.hs.api.model.reqmodel.AddBudgetValue;
import com.hs.api.model.reqmodel.QueryBudgetValue; import com.hs.api.model.reqmodel.QueryBudgetValue;
import com.hs.api.model.reqmodel.QuerySummary; import com.hs.api.model.reqmodel.QuerySummary;
...@@ -25,6 +27,7 @@ public class SerProjValueController { ...@@ -25,6 +27,7 @@ public class SerProjValueController {
@PostMapping("budget/value") @PostMapping("budget/value")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("查询预算编制数据") @ApiOperation("查询预算编制数据")
public Object getProjValue(@ApiIgnore @CurrentUser Long userId,@RequestBody QueryBudgetValue request) throws Throwable { public Object getProjValue(@ApiIgnore @CurrentUser Long userId,@RequestBody QueryBudgetValue request) throws Throwable {
Object result = projValueService.getValue(request.getProjectType(),request.getDate(),request.getDeptCode(),userId); Object result = projValueService.getValue(request.getProjectType(),request.getDate(),request.getDeptCode(),userId);
...@@ -34,6 +37,7 @@ public class SerProjValueController { ...@@ -34,6 +37,7 @@ public class SerProjValueController {
@PostMapping("budget/save") @PostMapping("budget/save")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("保存数据") @ApiOperation("保存数据")
public Object save(@ApiIgnore @CurrentUser Long userId,@RequestBody AddBudgetValue request) throws Throwable { public Object save(@ApiIgnore @CurrentUser Long userId,@RequestBody AddBudgetValue request) throws Throwable {
boolean result = projValueService.save(userId,request); boolean result = projValueService.save(userId,request);
...@@ -45,6 +49,7 @@ public class SerProjValueController { ...@@ -45,6 +49,7 @@ public class SerProjValueController {
@PostMapping("budget/summary") @PostMapping("budget/summary")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("查询预算编制汇总数据") @ApiOperation("查询预算编制汇总数据")
public Object getSummary(@ApiIgnore @CurrentUser Long userId,@RequestBody QuerySummary request) throws Throwable { public Object getSummary(@ApiIgnore @CurrentUser Long userId,@RequestBody QuerySummary request) throws Throwable {
Object result = projValueService.getSummary(request.getDate(),request.getBudgetType(),userId); Object result = projValueService.getSummary(request.getDate(),request.getBudgetType(),userId);
...@@ -53,6 +58,7 @@ public class SerProjValueController { ...@@ -53,6 +58,7 @@ public class SerProjValueController {
@PostMapping("budget/summarynew") @PostMapping("budget/summarynew")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("查询预算编制汇总数据") @ApiOperation("查询预算编制汇总数据")
public Object getSummaryNew(@RequestBody QuerySummary req) throws Throwable { public Object getSummaryNew(@RequestBody QuerySummary req) throws Throwable {
Object result = projValueService.getData(req.getDate(),req.getPage()); Object result = projValueService.getData(req.getDate(),req.getPage());
......
package com.hs.api.controller; package com.hs.api.controller;
import com.hs.api.common.Result; import com.hs.api.common.Result;
import com.hs.api.common.annotations.Audit;
import com.hs.api.common.annotations.Token; import com.hs.api.common.annotations.Token;
import com.hs.api.common.enums.AuditLogType;
import com.hs.api.model.reqmodel.SysConfigReq; import com.hs.api.model.reqmodel.SysConfigReq;
import com.hs.api.service.SysConfigService; import com.hs.api.service.SysConfigService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -24,6 +26,7 @@ public class SysConfigController { ...@@ -24,6 +26,7 @@ public class SysConfigController {
*/ */
@PostMapping("getSysConfigByKey") @PostMapping("getSysConfigByKey")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("根据key查询系统配置") @ApiOperation("根据key查询系统配置")
public Result<Boolean> sysConfigReq(@RequestBody SysConfigReq sysConfigReq) { public Result<Boolean> sysConfigReq(@RequestBody SysConfigReq sysConfigReq) {
boolean state = sysConfigService.getStateByKey(sysConfigReq.getKey()); boolean state = sysConfigService.getStateByKey(sysConfigReq.getKey());
......
...@@ -76,6 +76,7 @@ public class UserController { ...@@ -76,6 +76,7 @@ public class UserController {
*/ */
@PostMapping("roles") @PostMapping("roles")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("查询用户角色") @ApiOperation("查询用户角色")
public Object getRoleListByUser(@ApiIgnore @CurrentUser Long userId) throws Exception { public Object getRoleListByUser(@ApiIgnore @CurrentUser Long userId) throws Exception {
List<SysRole> sysRoleList = sysUserRoleRsService.getRoleListByUser(userId); List<SysRole> sysRoleList = sysUserRoleRsService.getRoleListByUser(userId);
...@@ -90,6 +91,7 @@ public class UserController { ...@@ -90,6 +91,7 @@ public class UserController {
*/ */
@PostMapping("menus") @PostMapping("menus")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("查询用户菜单") @ApiOperation("查询用户菜单")
public Object getMenuByUser(@ApiIgnore @CurrentUser Long userId) throws Exception { public Object getMenuByUser(@ApiIgnore @CurrentUser Long userId) throws Exception {
List<SysMenuList> sysMenuList = sysMenuService.getMenu(userId); List<SysMenuList> sysMenuList = sysMenuService.getMenu(userId);
...@@ -98,6 +100,7 @@ public class UserController { ...@@ -98,6 +100,7 @@ public class UserController {
@PostMapping("menu/list") @PostMapping("menu/list")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("查询综合菜单") @ApiOperation("查询综合菜单")
public Object getMenuByType(HttpServletRequest request,@RequestBody MenuReq req) throws Exception { public Object getMenuByType(HttpServletRequest request,@RequestBody MenuReq req) throws Exception {
String token = request.getHeader(Constants.TOKEN_KEY); String token = request.getHeader(Constants.TOKEN_KEY);
...@@ -108,6 +111,7 @@ public class UserController { ...@@ -108,6 +111,7 @@ public class UserController {
@PostMapping("module/state") @PostMapping("module/state")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("查询module状态") @ApiOperation("查询module状态")
public Object getModuleStateByCode(HttpServletRequest request,@RequestBody ModuleReq req) throws Exception { public Object getModuleStateByCode(HttpServletRequest request,@RequestBody ModuleReq req) throws Exception {
String token = request.getHeader(Constants.TOKEN_KEY); String token = request.getHeader(Constants.TOKEN_KEY);
...@@ -124,6 +128,7 @@ public class UserController { ...@@ -124,6 +128,7 @@ public class UserController {
*/ */
@PostMapping("dept") @PostMapping("dept")
@Token @Token
@Audit(type = AuditLogType.REFRESH)
@ApiOperation("查询用户科室") @ApiOperation("查询用户科室")
public Object getOrgByUser(@ApiIgnore @CurrentUser Long userId, @RequestBody Disease.DiseaseIDorLevel disease) throws Exception { public Object getOrgByUser(@ApiIgnore @CurrentUser Long userId, @RequestBody Disease.DiseaseIDorLevel disease) throws Exception {
List<SerDepartment> sysMenuList = sysUserOrgRsService.getUserOrg(userId, disease.getDisease(), disease.getDate()); List<SerDepartment> sysMenuList = sysUserOrgRsService.getUserOrg(userId, disease.getDisease(), disease.getDate());
......
...@@ -32,4 +32,13 @@ public class AuditLog { ...@@ -32,4 +32,13 @@ public class AuditLog {
@Setter @Setter
private String describe; private String describe;
@Setter
private String token;
@Setter
private String url;
@Setter
private String params;
} }
...@@ -148,6 +148,7 @@ public class LoginServiceImpl implements LoginService { ...@@ -148,6 +148,7 @@ public class LoginServiceImpl implements LoginService {
String token = request.getHeader(Constants.TOKEN_KEY); String token = request.getHeader(Constants.TOKEN_KEY);
SysUser user = (SysUser) RedisUtil.get(token); SysUser user = (SysUser) RedisUtil.get(token);
loginInfo.setUser(user); loginInfo.setUser(user);
loginInfo.setToken(token);
if(!token.equals("") && token!=null) { if(!token.equals("") && token!=null) {
RedisUtil.del(token); RedisUtil.del(token);
}; };
......
...@@ -9,10 +9,10 @@ spring.datasource.druid.initial-size=1 ...@@ -9,10 +9,10 @@ spring.datasource.druid.initial-size=1
project.path=localhost project.path=localhost
# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA40\uFF09 # Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA40\uFF09
spring.redis.database=1 spring.redis.database=2
spring.redis.host=127.0.0.1 spring.redis.host=192.168.18.166
spring.redis.port=7379 spring.redis.port=6379
spring.redis.password=123456 spring.redis.password=ll123456
spring.redis.jedis.pool.max-active=8 spring.redis.jedis.pool.max-active=8
# \u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09 # \u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
spring.redis.jedis.pool.max-wait=-1 spring.redis.jedis.pool.max-wait=-1
......
...@@ -16,10 +16,11 @@ ...@@ -16,10 +16,11 @@
SELECT LAST_INSERT_ID() SELECT LAST_INSERT_ID()
</selectKey> </selectKey>
insert into audit_log (CREATE_DATE, `STATE`, insert into audit_log (CREATE_DATE, `STATE`,
USER_ID, IP, MODULE_CODE, OPERATE_TYPE, `DESCRIBE` USER_ID, IP, MODULE_CODE, OPERATE_TYPE, `DESCRIBE`,TOKEN,URL,PARAMS
) )
values (#{createDate,jdbcType=TIMESTAMP}, #{state,jdbcType=DECIMAL}, #{userId,jdbcType=DECIMAL}, values (#{createDate,jdbcType=TIMESTAMP}, #{state,jdbcType=DECIMAL}, #{userId,jdbcType=DECIMAL},
#{ip,jdbcType=VARCHAR}, #{moduleCode,jdbcType=VARCHAR}, #{operateType,jdbcType=DECIMAL}, #{describe,jdbcType=VARCHAR} #{ip,jdbcType=VARCHAR}, #{moduleCode,jdbcType=VARCHAR}, #{operateType,jdbcType=DECIMAL}, #{describe,jdbcType=VARCHAR},
#{token,jdbcType=VARCHAR},#{url,jdbcType=VARCHAR},#{params,jdbcType=VARCHAR}
) )
</insert> </insert>
<select id="selectAll" resultMap="BaseResultMap"> <select id="selectAll" resultMap="BaseResultMap">
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" version="4"> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5"> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
<output url="file://$MODULE_DIR$/target/classes" /> <output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" /> <output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" /> <excludeFolder url="file://$MODULE_DIR$/target" />
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment