package com.system.log.service.internal; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Example; import org.springframework.data.domain.ExampleMatcher; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import com.app.aspect.IpUtil; import com.app.base.data.ApiResponseResult; import com.app.base.data.DataGrid; import com.mysql.fabric.xmlrpc.base.Params; import com.system.log.dao.SysLogDao; import com.system.log.entity.SysLog; import com.system.log.service.SysLogService; import com.system.user.entity.SysUser; import com.utils.BaseService; import com.utils.SearchFilter; import com.utils.UserUtil; import com.utils.enumeration.BasicStateEnum; @Service(value = "sysLogService") @Transactional(propagation = Propagation.REQUIRED) public class SysLogImpl implements SysLogService { @Autowired private SysLogDao sysLogDao; @Override public ApiResponseResult add(SysLog sysLog) throws Exception { // TODO Auto-generated method stub sysLogDao.save(sysLog); return ApiResponseResult.success("添加成功!"); } /** * 获取日志列表 * @param keyword * @param pageRequest * @return * @throws Exception */ @Override @Transactional public ApiResponseResult getlist(String keyword, PageRequest pageRequest) throws Exception{ //查询条件1 List filters =new ArrayList<>(); filters.add(new SearchFilter("isDel", SearchFilter.Operator.EQ, BasicStateEnum.FALSE.intValue())); //查询2 List filters1 =new ArrayList<>(); if(StringUtils.isNotEmpty(keyword)){ filters1.add(new SearchFilter("username", SearchFilter.Operator.LIKE, keyword)); filters1.add(new SearchFilter("method", SearchFilter.Operator.LIKE, keyword)); filters1.add(new SearchFilter("methodName", SearchFilter.Operator.LIKE, keyword)); filters1.add(new SearchFilter("operation", SearchFilter.Operator.LIKE, keyword)); } Specification spec = Specification.where(BaseService.and(filters, SysLog.class)); Specification spec1 = spec.and(BaseService.or(filters1, SysLog.class)); Page page = sysLogDao.findAll(spec1, pageRequest); return ApiResponseResult.success().data(DataGrid.create(page.getContent(), (int) page.getTotalElements(), pageRequest.getPageNumber() + 1, pageRequest.getPageSize())); } @Override public ApiResponseResult debug(String method,String methodName) { // TODO Auto-generated method stub try{ SysLog sysLog = new SysLog(); sysLog.setIp(getIp()); sysLog.setType("1"); sysLog.setMethod(method); sysLog.setMethodName(methodName); sysLog.setCreatedTime(new Date()); sysLogDao.save(sysLog); // sysLog.setUsername(UserUtil.getSessionUser().getUserCode()); sysLog.setUsername(UserUtil.getSessionUser().getFcode()); return ApiResponseResult.success(); }catch(Exception e){ SysLog s = new SysLog(); s.setType("2"); s.setRemark("发送保存日记错误!"+e.toString()); sysLogDao.save(s); return ApiResponseResult.failure(); } } //获取IP地址 private String getIp(){ RequestAttributes ra = RequestContextHolder.getRequestAttributes(); ServletRequestAttributes sra = (ServletRequestAttributes) ra; HttpServletRequest request = sra.getRequest(); return IpUtil.getIpAddr(request); } @Override public ApiResponseResult success(String method, String methodName, Object param) { // TODO Auto-generated method stub try{ SysLog sysLog = new SysLog(); sysLog.setIp(getIp()); sysLog.setType("2"); sysLog.setMethod(method); sysLog.setMethodName(methodName); sysLog.setCreatedTime(new Date()); sysLog.setOperation("操作成功"); // sysLog.setUsername(UserUtil.getSessionUser().getUserCode()); sysLog.setUsername(UserUtil.getSessionUser().getFcode()); sysLogDao.save(sysLog); return ApiResponseResult.success(); }catch(Exception e){ SysLog s = new SysLog(); s.setType("2"); s.setRemark("发送保存日记错误!"+e.toString()); sysLogDao.save(s); return ApiResponseResult.failure(); } } @Override public ApiResponseResult error(String method, String methodName, Object param) { // TODO Auto-generated method stub try{ SysLog sysLog = new SysLog(); sysLog.setIp(getIp()); sysLog.setType("3"); sysLog.setMethod(method); sysLog.setMethodName(methodName); sysLog.setCreatedTime(new Date()); sysLog.setOperation("操作失败"); sysLog.setParams(param.toString()); // sysLog.setUsername(UserUtil.getSessionUser().getUserCode()); sysLog.setUsername(UserUtil.getSessionUser().getFcode()); sysLogDao.save(sysLog); return ApiResponseResult.success(); }catch(Exception e){ SysLog s = new SysLog(); s.setType("2"); s.setRemark("发送保存日记错误!"+e.toString()); sysLogDao.save(s); return ApiResponseResult.failure(); } } @Override public ApiResponseResult login(String method, String methodName, String param) { // TODO Auto-generated method stub try{ SysLog sysLog = new SysLog(); sysLog.setIp(getIp()); sysLog.setType("1"); sysLog.setMethod(method); sysLog.setMethodName(methodName); sysLog.setCreatedTime(new Date()); sysLog.setParams(param.toString()); sysLogDao.save(sysLog); return ApiResponseResult.success(); }catch(Exception e){ SysLog s = new SysLog(); s.setType("2"); s.setRemark("发送保存日记错误!"+e.toString()); sysLogDao.save(s); return ApiResponseResult.failure(); } } }