LogServiceImpl.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package com.jsh.erp.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import com.jsh.erp.constants.BusinessConstants;
  5. import com.jsh.erp.datasource.entities.Log;
  6. import com.jsh.erp.datasource.entities.LogExample;
  7. import com.jsh.erp.datasource.mappers.LogMapper;
  8. import com.jsh.erp.datasource.mappers.LogMapperEx;
  9. import com.jsh.erp.datasource.vo.LogVo4List;
  10. import com.jsh.erp.exception.JshException;
  11. import com.jsh.erp.service.LogService;
  12. import com.jsh.erp.service.RedisService;
  13. import com.jsh.erp.service.UserService;
  14. import com.jsh.erp.utils.PageUtils;
  15. import com.jsh.erp.utils.StringUtil;
  16. import com.jsh.erp.utils.Tools;
  17. import org.slf4j.Logger;
  18. import org.slf4j.LoggerFactory;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import javax.annotation.Resource;
  22. import javax.servlet.http.HttpServletRequest;
  23. import java.util.Date;
  24. import java.util.List;
  25. import static com.jsh.erp.utils.Tools.getLocalIp;
  26. @Service
  27. public class LogServiceImpl extends ServiceImpl<LogMapper, Log> implements LogService {
  28. private Logger logger = LoggerFactory.getLogger(LogServiceImpl.class);
  29. @Resource
  30. private LogMapper logMapper;
  31. @Resource
  32. private LogMapperEx logMapperEx;
  33. @Resource
  34. private UserService userService;
  35. @Resource
  36. private RedisService redisService;
  37. @Override
  38. public Log getLog(long id)throws Exception {
  39. Log result=null;
  40. try{
  41. result=logMapper.selectByPrimaryKey(id);
  42. }catch(Exception e){
  43. JshException.readFail(logger, e);
  44. }
  45. return result;
  46. }
  47. @Override
  48. public List<Log> getLog()throws Exception {
  49. LogExample example = new LogExample();
  50. List<Log> list=null;
  51. try{
  52. list=logMapper.selectByExample(example);
  53. }catch(Exception e){
  54. JshException.readFail(logger, e);
  55. }
  56. return list;
  57. }
  58. @Override
  59. public List<LogVo4List> select(String operation, String userInfo, String clientIp, String tenantLoginName, String tenantType,
  60. String beginTime, String endTime, String content)throws Exception {
  61. List<LogVo4List> list=null;
  62. try{
  63. beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME);
  64. endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME);
  65. PageUtils.startPage();
  66. list=logMapperEx.selectByConditionLog(operation, userInfo, clientIp, tenantLoginName, tenantType, beginTime, endTime,
  67. content);
  68. if (null != list) {
  69. for (LogVo4List log : list) {
  70. log.setCreateTimeStr(Tools.getCenternTime(log.getCreateTime()));
  71. }
  72. }
  73. }catch(Exception e){
  74. JshException.readFail(logger, e);
  75. }
  76. return list;
  77. }
  78. @Transactional(value = "transactionManager", rollbackFor = Exception.class)
  79. @Override
  80. public int insertLog(JSONObject obj, HttpServletRequest request) throws Exception{
  81. Log log = JSONObject.parseObject(obj.toJSONString(), Log.class);
  82. int result=0;
  83. try{
  84. result=logMapper.insertSelective(log);
  85. }catch(Exception e){
  86. JshException.writeFail(logger, e);
  87. }
  88. return result;
  89. }
  90. @Override
  91. @Transactional(value = "transactionManager", rollbackFor = Exception.class)
  92. public int updateLog(JSONObject obj, HttpServletRequest request)throws Exception {
  93. Log log = JSONObject.parseObject(obj.toJSONString(), Log.class);
  94. int result=0;
  95. try{
  96. result=logMapper.updateByPrimaryKeySelective(log);
  97. }catch(Exception e){
  98. JshException.writeFail(logger, e);
  99. }
  100. return result;
  101. }
  102. @Override
  103. @Transactional(value = "transactionManager", rollbackFor = Exception.class)
  104. public int deleteLog(Long id, HttpServletRequest request)throws Exception {
  105. int result=0;
  106. try{
  107. result=logMapper.deleteByPrimaryKey(id);
  108. }catch(Exception e){
  109. JshException.writeFail(logger, e);
  110. }
  111. return result;
  112. }
  113. @Override
  114. @Transactional(value = "transactionManager", rollbackFor = Exception.class)
  115. public int batchDeleteLog(String ids, HttpServletRequest request)throws Exception {
  116. List<Long> idList = StringUtil.strToLongList(ids);
  117. LogExample example = new LogExample();
  118. example.createCriteria().andIdIn(idList);
  119. int result=0;
  120. try{
  121. result=logMapper.deleteByExample(example);
  122. }catch(Exception e){
  123. JshException.writeFail(logger, e);
  124. }
  125. return result;
  126. }
  127. @Override
  128. public void insertLog(String moduleName, String content, HttpServletRequest request)throws Exception{
  129. try{
  130. Long userId = userService.getUserId(request);
  131. if(userId!=null) {
  132. String clientIp = getLocalIp(request);
  133. String createTime = Tools.getNow3();
  134. Long count = logMapperEx.getCountByIpAndDate(userId, moduleName, clientIp, createTime);
  135. if(count > 0) {
  136. //如果某个用户某个IP在同1秒内连续操作两遍,此时需要删除该redis记录,使其退出,防止恶意攻击
  137. redisService.deleteObjectByUserAndIp(userId, clientIp);
  138. } else {
  139. Log log = new Log();
  140. log.setUserId(userId);
  141. log.setOperation(moduleName);
  142. log.setClientIp(getLocalIp(request));
  143. log.setCreateTime(new Date());
  144. Byte status = 0;
  145. log.setStatus(status);
  146. log.setContent(content);
  147. logMapper.insertSelective(log);
  148. }
  149. }
  150. }catch(Exception e){
  151. JshException.writeFail(logger, e);
  152. }
  153. }
  154. @Override
  155. public void insertLogWithUserId(Long userId, Long tenantId, String moduleName, String content, HttpServletRequest request)throws Exception{
  156. try{
  157. if(userId!=null) {
  158. Log log = new Log();
  159. log.setUserId(userId);
  160. log.setOperation(moduleName);
  161. log.setClientIp(getLocalIp(request));
  162. log.setCreateTime(new Date());
  163. Byte status = 0;
  164. log.setStatus(status);
  165. log.setContent(content);
  166. log.setTenantId(tenantId);
  167. logMapperEx.insertLogWithUserId(log);
  168. }
  169. }catch(Exception e){
  170. JshException.writeFail(logger, e);
  171. }
  172. }
  173. }