package com.caimei.modules.user.aop; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.caimei.modules.user.entity.*; import com.caimei.modules.user.service.*; import com.caimei.modules.user.utils.HttpContextUtils; import com.caimei.modules.user.web.ClubTemporaryController; import com.caimei.modules.user.web.newUser.AgencyController; import com.thinkgem.jeesite.common.utils.StringUtils; import com.thinkgem.jeesite.modules.sys.security.SystemAuthorizingRealm; import com.thinkgem.jeesite.modules.sys.utils.UserUtils; import com.yeepay.g3.sdk.yop.utils.JsonUtils; import net.sf.json.util.JSONUtils; import net.sf.jsqlparser.statement.select.Join; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.codehaus.jackson.annotate.JsonIgnore; import org.codehaus.jackson.map.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.DefaultParameterNameDiscoverer; import org.springframework.core.ParameterNameDiscoverer; import org.springframework.stereotype.Component; import com.thinkgem.jeesite.modules.sys.security.SystemAuthorizingRealm.Principal; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ui.Model; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.lang.reflect.Method; import java.math.BigDecimal; import java.util.*; @Aspect @Component public class OperationLogAspect { protected Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private SysLogService sysLogService; @Autowired private ClubTemporaryService clubTemporaryService; //定义切点 @Pointcut //在注解的位置切入代码 @Pointcut("@annotation(com.caimei.modules.user.aop.OperationLogAnnotation)") public void logPointCut() { } private HashMap paramToMap(JoinPoint joinPoint) { HashMap map = new HashMap<>(); //获取参数对象 Object[] args = joinPoint.getArgs(); //参数列表 Signature signature = joinPoint.getSignature(); MethodSignature methodSignature = (MethodSignature) signature; String[] parameterNames = methodSignature.getParameterNames(); int index = 0; for(String str : parameterNames) { map.put(str,args[index++]); } return map; } @AfterReturning("logPointCut()") @JsonIgnore public void saveSysLog(JoinPoint joinPoint) throws IOException { HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); //保存日志 OperationalLogs sysLog = new OperationalLogs(); //从切面织入点处通过反射机制获取织入点处的方法 MethodSignature signature = (MethodSignature) joinPoint.getSignature(); //获取切入点所在的方法 Method method = signature.getMethod(); sysLog.setActioncontent(null); Object[] args = joinPoint.getArgs(); HashMap map = new HashMap<>(); for (Object arg : args) { System.out.println("aop获取的参数>>>>>>>"+arg.toString()); } map = paramToMap(joinPoint); Set keySet=map.keySet(); //获取操作类型 OperationLogAnnotation myLog = method.getAnnotation(OperationLogAnnotation.class); if (myLog != null) { String value = myLog.operType(); sysLog.setOperationtype(value);//保存获取的操作类型 } //获取请求的类名 String className = joinPoint.getTarget().getClass().getName(); //获取请求操作类型 String operType = myLog.operType(); sysLog.setOperationtype(operType); //获取请求操作内容 AgencyController A = new AgencyController(); ClubTemporaryController B = new ClubTemporaryController(); String email = request.getParameter("contractEmail");//修改后邮箱 String bindm = request.getParameter("bindMobile");//修改后手机电话 String jgname = request.getParameter("name");//修改后机构名字 String sname = request.getParameter("sname");//修改后机构简称 String uname = request.getParameter("userName");//修改后的联系人 String linkMan = request.getParameter("linkMan");//修改后的联系人 String Identity = request.getParameter("linkManIdentity");//联系人身份 String address = request.getParameter("address");//详细地址 String socialCreditCode = request.getParameter("socialCreditCode");//营业执照编号 String headpic = request.getParameter("headpic");//门头照 String businessLicenseImage = request.getParameter("businessLicenseImage");//营业执照 String ClubType = request.getParameter("firstClubType");//机构类型 String mainpro = request.getParameter("mainpro");//主营业务 String contractPhone = request.getParameter("contractPhone");//固定电话 String fax = request.getParameter("fax");//传真 String empnum = request.getParameter("empnum");//公司人数 String info = request.getParameter("info");//公司简介 String area = request.getParameter("area");//机构面积 String bedNums = request.getParameter("bedNums");//美容院床位 String beauticians = request.getParameter("beauticians");//美容师数 String monthAchievement = request.getParameter("monthAchievement");//月业绩 String promotionAchievement = request.getParameter("promotionAchievement");//促销业绩 String yearAchievement = request.getParameter("yearAchievement");//年业绩 String cateA = request.getParameter("cateA");//A类会员 String consumeA = request.getParameter("consumeA");//A类会员消费金额 String cateB = request.getParameter("empnum");//B类会员 String consumeB = request.getParameter("consumeB");//B类会员消费金额 String cateC = request.getParameter("cateC");//C类会员 String consumeC = request.getParameter("consumeC");//C类会员消费金额 String highestAchievement = request.getParameter("highestAchievement");//最高业绩 String reachPepole = request.getParameter("reachPepole");//到店人数 String clinchPepole = request.getParameter("clinchPepole");//成交人数 String shortName = request.getParameter("shortName");//成交人数 String methodName = myLog.operModul(); ArrayList list = new ArrayList(); //获取机构名称和联系人 String id = request.getParameter("id"); sysLog.setOperationtime(new Date()); sysLog.setActioncontent(myLog.operModul()); sysLog.setOperationtype(myLog.operType()); if ("修改密码".equals(myLog.operType())) { System.out.println(Integer.parseInt(map.get("id").toString())+">>>>>>>>"+Integer.parseInt(map.get("id").toString())); String Inst = sysLogService.passName(Integer.parseInt(map.get("id").toString())); String Contact = sysLogService.PasslinkMan(Integer.parseInt(map.get("id").toString())); sysLog.setOperationtype(myLog.operModul()); sysLog.setOperationtype(myLog.operType()); sysLog.setContact(Contact); sysLog.setInstitutionName(Inst); } if ("确认注册".equals(myLog.operType())) { sysLog.setActioncontent(myLog.operModul()); ClubTemporary club = clubTemporaryService.get(id); if (club != null) { String Contact= club.getLinkMan(); String Inst = club.getName(); sysLog.setContact(Contact); sysLog.setInstitutionName(Inst); System.out.println("contact=" + sysLog.getContact()); } } SystemAuthorizingRealm.Principal principal = UserUtils.getPrincipal(); System.out.println("操作员" + principal.getName()); String username = principal.getName(); sysLog.setOperator(username); sysLog.setOperationtype(myLog.operType()); //调用service保存SysLog实体类到数据库 if (!"".equals(sysLog.getActioncontent())) { if (sysLog.getInstitutionName() != null && sysLog.getContact() != null) { int i = sysLogService.insert(sysLog); list.removeAll(list); } } // } } }