/**
|
* Copyright (c) 2018 人人开源 All rights reserved.
|
*
|
* https://www.renren.io
|
*
|
* 版权所有,侵权必究!
|
*/
|
|
package com.zt.modules.log.service;
|
|
import com.zt.common.db.query.QueryFilter;
|
import com.zt.common.service.BaseService;
|
import com.zt.common.utils.ExcelUtils;
|
import com.zt.core.context.UserContext;
|
import com.zt.modules.log.dao.SysLogOperationDao;
|
import com.zt.modules.log.excel.SysLogOperationExcel;
|
import com.zt.modules.log.model.SysLogOperation;
|
import com.zt.modules.sys.dto.RoleDto;
|
import com.zt.modules.sys.service.SysRoleUserService;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 操作日志
|
*
|
* @author Mark sunlightcs@gmail.com
|
* @since 1.0.0
|
*/
|
@Service
|
public class SysLogOperationService extends BaseService<SysLogOperationDao, SysLogOperation> {
|
@Autowired
|
private SysRoleUserService sysRoleUserService;
|
|
public List<SysLogOperation> page(QueryFilter queryFilter,String startCreateTime, String endCreateTime) {
|
String roleName = "";
|
List<RoleDto> roles = sysRoleUserService.getUserRoles(UserContext.getUser().getId());
|
if (roles != null && roles.size() > 0) {
|
// 同时拥有两种权限查看全部
|
if (roles.stream().filter(p -> p.getCode().equals("xtbmybm")).count() > 0
|
&& roles.stream().filter(p -> p.getCode().equals("xtsjybm")).count() > 0) {
|
roleName = "all";
|
} else {
|
// 如果当前用户拥有角色编码为xtbmy的角色权限,则查看除系统管理员(拥有角色编码为xtgly权限的用户)、系统保密员(拥有角色编码为xtsjy权限的用户)以外的用户登录、操作日志
|
if (roles.stream().filter(p -> p.getCode().equals("xtbmybm")).count() > 0) {
|
roleName = "xtbmybm";
|
}
|
// 如果当前用户拥有角色编码为xtsjy的角色权限,则查看系统管理员(拥有角色编码为xtgly权限的用户)、系统保密员的登录(拥有角色编码为xtsjy权限的用户)、操作日志
|
else if (roles.stream().filter(p -> p.getCode().equals("xtsjybm")).count() > 0) {
|
roleName = "xtsjybm";
|
} else {
|
roleName = "other";
|
}
|
}
|
} else {
|
roleName = "other";
|
}
|
if (StringUtils.isNotBlank(startCreateTime)) {
|
queryFilter.getParams().put("startCreateTime",startCreateTime);
|
}
|
if (StringUtils.isNotBlank(endCreateTime)) {
|
StringBuilder endCreateTimeBuilder = new StringBuilder();
|
endCreateTimeBuilder.append(endCreateTime);
|
endCreateTimeBuilder.append(" 23:59:59");
|
queryFilter.getParams().put("endCreateTime",endCreateTimeBuilder.toString() );
|
}
|
queryFilter.addParam("action", roleName);
|
queryFilter.addParam("currentUserId", UserContext.getUser().getId());
|
List<SysLogOperation> list = baseDao.getList(queryFilter.getQueryParams());
|
return queryFilter.getPageList(list);
|
}
|
|
public void list(HttpServletResponse response, Integer status,String startCreateTime, String endCreateTime) throws IOException {
|
try {
|
// 导出文件名称
|
String fileName = "操作日志";
|
QueryFilter queryFilter = new QueryFilter();
|
if (status != null) {
|
queryFilter.getParams().put("status", status);
|
}
|
if (StringUtils.isNotBlank(startCreateTime)) {
|
queryFilter.getParams().put("startCreateTime",startCreateTime);
|
}
|
if (StringUtils.isNotBlank(endCreateTime)) {
|
queryFilter.getParams().put("endCreateTime",endCreateTime);
|
}
|
String roleName = "";
|
List<RoleDto> roles = sysRoleUserService.getUserRoles(UserContext.getUser().getId());
|
if (roles != null && roles.size() > 0) {
|
// 同时拥有两种权限查看全部
|
if (roles.stream().filter(p -> p.getCode().equals("xtbmybm")).count() > 0
|
&& roles.stream().filter(p -> p.getCode().equals("xtsjybm")).count() > 0) {
|
roleName = "all";
|
} else {
|
// 如果当前用户拥有角色编码为xtbmy的角色权限,则查看除系统管理员(拥有角色编码为xtgly权限的用户)、系统保密员(拥有角色编码为xtsjy权限的用户)以外的用户登录、操作日志
|
if (roles.stream().filter(p -> p.getCode().equals("xtbmybm")).count() > 0) {
|
roleName = "xtbmybm";
|
}
|
// 如果当前用户拥有角色编码为xtsjy的角色权限,则查看系统管理员(拥有角色编码为xtgly权限的用户)、系统保密员的登录(拥有角色编码为xtsjy权限的用户)、操作日志
|
else if (roles.stream().filter(p -> p.getCode().equals("xtsjybm")).count() > 0) {
|
roleName = "xtsjybm";
|
} else {
|
roleName = "other";
|
}
|
}
|
} else {
|
roleName = "other";
|
}
|
queryFilter.addParam("action", roleName);
|
queryFilter.addParam("currentUserId", UserContext.getUser().getId());
|
List<SysLogOperation> list = baseDao.getList(queryFilter.getQueryParams());
|
List<SysLogOperationExcel> sysLogOperationList = new ArrayList<SysLogOperationExcel>();
|
for (SysLogOperation sysLogOperation : list) {
|
SysLogOperationExcel logOperation = new SysLogOperationExcel();
|
logOperation.setCreatorName(sysLogOperation.getCreatorName());
|
logOperation.setOperation(sysLogOperation.getOperation());
|
logOperation.setRequestUri(sysLogOperation.getRequestUri());
|
logOperation.setRequestMethod(sysLogOperation.getRequestMethod());
|
String requestParams = sysLogOperation.getRequestParams();
|
if (requestParams != null && !requestParams.equals("") && requestParams.length()>30000) {
|
String substring = requestParams.substring(0, 15000);
|
logOperation.setRequestParams(substring);
|
}else {
|
logOperation.setRequestParams(requestParams);
|
}
|
logOperation.setRequestTime(sysLogOperation.getRequestTime());
|
if (sysLogOperation.getStatus() == 0) {
|
logOperation.setStatus("失败");
|
}else {
|
logOperation.setStatus("成功");
|
}
|
logOperation.setIp(sysLogOperation.getIp());
|
logOperation.setUserAgent(sysLogOperation.getUserAgent());
|
logOperation.setCreateDate(sysLogOperation.getCreateDate());
|
sysLogOperationList.add(logOperation);
|
}
|
ExcelUtils.export(response, fileName, new String[]{"操作日志"},new List[]{sysLogOperationList});
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
@Transactional(rollbackFor = Exception.class)
|
public void insert(SysLogOperation entity) {
|
baseDao.insert(entity);
|
}
|
|
public void delete(Integer status,String startCreateTime, String endCreateTime) {
|
QueryFilter queryFilter = new QueryFilter();
|
if (status != null) {
|
queryFilter.getParams().put("status", status);
|
}
|
List<SysLogOperation> sysLogOperationList = page(queryFilter,startCreateTime,endCreateTime);
|
List<SysLogOperation> list = new ArrayList<SysLogOperation>();
|
for (SysLogOperation sysLogOperation : sysLogOperationList) {
|
SysLogOperation logOperation = new SysLogOperation();
|
logOperation.setId(sysLogOperation.getId());
|
list.add(logOperation);
|
}
|
baseDao.deleteCondition(list);
|
}
|
}
|