OperationLogAspect.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package com.caimei.modules.user.aop;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.alibaba.fastjson.TypeReference;
  5. import com.caimei.modules.user.entity.*;
  6. import com.caimei.modules.user.service.*;
  7. import com.caimei.modules.user.utils.HttpContextUtils;
  8. import com.caimei.modules.user.web.ClubTemporaryController;
  9. import com.caimei.modules.user.web.newUser.AgencyController;
  10. import com.thinkgem.jeesite.common.utils.StringUtils;
  11. import com.thinkgem.jeesite.modules.sys.security.SystemAuthorizingRealm;
  12. import com.thinkgem.jeesite.modules.sys.utils.UserUtils;
  13. import com.yeepay.g3.sdk.yop.utils.JsonUtils;
  14. import net.sf.json.util.JSONUtils;
  15. import net.sf.jsqlparser.statement.select.Join;
  16. import org.aspectj.lang.JoinPoint;
  17. import org.aspectj.lang.ProceedingJoinPoint;
  18. import org.aspectj.lang.Signature;
  19. import org.aspectj.lang.annotation.AfterReturning;
  20. import org.aspectj.lang.annotation.Aspect;
  21. import org.aspectj.lang.annotation.Pointcut;
  22. import org.aspectj.lang.reflect.MethodSignature;
  23. import org.codehaus.jackson.annotate.JsonIgnore;
  24. import org.codehaus.jackson.map.ObjectMapper;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.core.DefaultParameterNameDiscoverer;
  27. import org.springframework.core.ParameterNameDiscoverer;
  28. import org.springframework.stereotype.Component;
  29. import com.thinkgem.jeesite.modules.sys.security.SystemAuthorizingRealm.Principal;
  30. import org.slf4j.Logger;
  31. import org.slf4j.LoggerFactory;
  32. import org.springframework.ui.Model;
  33. import javax.servlet.http.HttpServletRequest;
  34. import java.io.IOException;
  35. import java.lang.reflect.Method;
  36. import java.math.BigDecimal;
  37. import java.util.*;
  38. @Aspect
  39. @Component
  40. public class OperationLogAspect {
  41. protected Logger logger = LoggerFactory.getLogger(getClass());
  42. @Autowired
  43. private SysLogService sysLogService;
  44. @Autowired
  45. private ClubTemporaryService clubTemporaryService;
  46. //定义切点 @Pointcut
  47. //在注解的位置切入代码
  48. @Pointcut("@annotation(com.caimei.modules.user.aop.OperationLogAnnotation)")
  49. public void logPointCut() {
  50. }
  51. private HashMap paramToMap(JoinPoint joinPoint) {
  52. HashMap map = new HashMap<>();
  53. //获取参数对象
  54. Object[] args = joinPoint.getArgs();
  55. //参数列表
  56. Signature signature = joinPoint.getSignature();
  57. MethodSignature methodSignature = (MethodSignature) signature;
  58. String[] parameterNames = methodSignature.getParameterNames();
  59. int index = 0;
  60. for(String str : parameterNames) {
  61. map.put(str,args[index++]);
  62. }
  63. return map;
  64. }
  65. @AfterReturning("logPointCut()")
  66. @JsonIgnore
  67. public void saveSysLog(JoinPoint joinPoint) throws IOException {
  68. HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
  69. //保存日志
  70. OperationalLogs sysLog = new OperationalLogs();
  71. //从切面织入点处通过反射机制获取织入点处的方法
  72. MethodSignature signature = (MethodSignature) joinPoint.getSignature();
  73. //获取切入点所在的方法
  74. Method method = signature.getMethod();
  75. sysLog.setActioncontent(null);
  76. Object[] args = joinPoint.getArgs();
  77. HashMap map = new HashMap<>();
  78. for (Object arg : args) {
  79. System.out.println("aop获取的参数>>>>>>>"+arg.toString());
  80. }
  81. map = paramToMap(joinPoint);
  82. Set<String> keySet=map.keySet();
  83. //获取操作类型
  84. OperationLogAnnotation myLog = method.getAnnotation(OperationLogAnnotation.class);
  85. if (myLog != null) {
  86. String value = myLog.operType();
  87. sysLog.setOperationtype(value);//保存获取的操作类型
  88. }
  89. //获取请求的类名
  90. String className = joinPoint.getTarget().getClass().getName();
  91. //获取请求操作类型
  92. String operType = myLog.operType();
  93. sysLog.setOperationtype(operType);
  94. //获取请求操作内容
  95. AgencyController A = new AgencyController();
  96. ClubTemporaryController B = new ClubTemporaryController();
  97. String email = request.getParameter("contractEmail");//修改后邮箱
  98. String bindm = request.getParameter("bindMobile");//修改后手机电话
  99. String jgname = request.getParameter("name");//修改后机构名字
  100. String sname = request.getParameter("sname");//修改后机构简称
  101. String uname = request.getParameter("userName");//修改后的联系人
  102. String linkMan = request.getParameter("linkMan");//修改后的联系人
  103. String Identity = request.getParameter("linkManIdentity");//联系人身份
  104. String address = request.getParameter("address");//详细地址
  105. String socialCreditCode = request.getParameter("socialCreditCode");//营业执照编号
  106. String headpic = request.getParameter("headpic");//门头照
  107. String businessLicenseImage = request.getParameter("businessLicenseImage");//营业执照
  108. String ClubType = request.getParameter("firstClubType");//机构类型
  109. String mainpro = request.getParameter("mainpro");//主营业务
  110. String contractPhone = request.getParameter("contractPhone");//固定电话
  111. String fax = request.getParameter("fax");//传真
  112. String empnum = request.getParameter("empnum");//公司人数
  113. String info = request.getParameter("info");//公司简介
  114. String area = request.getParameter("area");//机构面积
  115. String bedNums = request.getParameter("bedNums");//美容院床位
  116. String beauticians = request.getParameter("beauticians");//美容师数
  117. String monthAchievement = request.getParameter("monthAchievement");//月业绩
  118. String promotionAchievement = request.getParameter("promotionAchievement");//促销业绩
  119. String yearAchievement = request.getParameter("yearAchievement");//年业绩
  120. String cateA = request.getParameter("cateA");//A类会员
  121. String consumeA = request.getParameter("consumeA");//A类会员消费金额
  122. String cateB = request.getParameter("empnum");//B类会员
  123. String consumeB = request.getParameter("consumeB");//B类会员消费金额
  124. String cateC = request.getParameter("cateC");//C类会员
  125. String consumeC = request.getParameter("consumeC");//C类会员消费金额
  126. String highestAchievement = request.getParameter("highestAchievement");//最高业绩
  127. String reachPepole = request.getParameter("reachPepole");//到店人数
  128. String clinchPepole = request.getParameter("clinchPepole");//成交人数
  129. String shortName = request.getParameter("shortName");//成交人数
  130. String methodName = myLog.operModul();
  131. ArrayList<String> list = new ArrayList();
  132. //获取机构名称和联系人
  133. String id = request.getParameter("id");
  134. sysLog.setOperationtime(new Date());
  135. sysLog.setActioncontent(myLog.operModul());
  136. sysLog.setOperationtype(myLog.operType());
  137. if ("修改密码".equals(myLog.operType())) {
  138. System.out.println(Integer.parseInt(map.get("id").toString())+">>>>>>>>"+Integer.parseInt(map.get("id").toString()));
  139. String Inst = sysLogService.passName(Integer.parseInt(map.get("id").toString()));
  140. String Contact = sysLogService.PasslinkMan(Integer.parseInt(map.get("id").toString()));
  141. sysLog.setOperationtype(myLog.operModul());
  142. sysLog.setOperationtype(myLog.operType());
  143. sysLog.setContact(Contact);
  144. sysLog.setInstitutionName(Inst);
  145. }
  146. if ("确认注册".equals(myLog.operType())) {
  147. sysLog.setActioncontent(myLog.operModul());
  148. ClubTemporary club = clubTemporaryService.get(id);
  149. if (club != null) {
  150. String Contact= club.getLinkMan();
  151. String Inst = club.getName();
  152. sysLog.setContact(Contact);
  153. sysLog.setInstitutionName(Inst);
  154. System.out.println("contact=" + sysLog.getContact());
  155. }
  156. }
  157. SystemAuthorizingRealm.Principal principal = UserUtils.getPrincipal();
  158. System.out.println("操作员" + principal.getName());
  159. String username = principal.getName();
  160. sysLog.setOperator(username);
  161. sysLog.setOperationtype(myLog.operType());
  162. //调用service保存SysLog实体类到数据库
  163. if (!"".equals(sysLog.getActioncontent())) {
  164. if (sysLog.getInstitutionName() != null && sysLog.getContact() != null) {
  165. int i = sysLogService.insert(sysLog);
  166. list.removeAll(list);
  167. }
  168. }
  169. // }
  170. }
  171. }