From a634183b400e502838f2997ae09f270a95808d17 Mon Sep 17 00:00:00 2001 From: Carl <376654749@qq.com> Date: Wed, 8 Dec 2021 18:41:10 +0800 Subject: [PATCH] adding royalcanin_operate_log logic --- .../SmartAuthenticationInterceptor.java | 4 +- .../system/royalcanin/MemberService.java | 26 ++++- .../royalcanin/TransitionController.java | 98 +++++++++++++++---- .../src/main/resources/sql/smart-admin.sql | 21 ++++ 4 files changed, 127 insertions(+), 22 deletions(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java index 79fe1136..f0be98fb 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java @@ -70,7 +70,7 @@ public class SmartAuthenticationInterceptor extends HandlerInterceptorAdapter { if (isNoNeedLogin) { return true; } - Boolean noNeedLogin = request.getServletPath().startsWith("/royalcanin")&&request.getParameter("type").equals("get"); + Boolean noNeedLogin = request.getServletPath().startsWith("/royalcanin/member"); if (noNeedLogin) { return true; } @@ -119,7 +119,7 @@ public class SmartAuthenticationInterceptor extends HandlerInterceptorAdapter { return true; } //需要验证权限 - if(!request.getServletPath().startsWith("/royalcanin")&&request.getParameter("type").equals("get")) { + if(!request.getServletPath().startsWith("/royalcanin")) { Boolean privilegeValidPass = privilegeEmployeeService.checkEmployeeHavePrivilege(requestToken, controllerName, methodName); if (!privilegeValidPass) { this.outputResult(response, LoginResponseCodeConst.NOT_HAVE_PRIVILEGES); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java index 6bd4a3be..a3107b6c 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java @@ -1,20 +1,26 @@ package net.lab1024.smartadmin.module.system.royalcanin; import com.alibaba.fastjson.JSONObject; +import eu.bitwalker.useragentutils.UserAgent; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; +import net.lab1024.smartadmin.common.constant.JudgeEnum; import net.lab1024.smartadmin.common.heartbeat.StringUtil; +import net.lab1024.smartadmin.module.business.log.LogService; +import net.lab1024.smartadmin.module.business.log.userloginlog.domain.UserLoginLogEntity; import net.lab1024.smartadmin.module.system.login.LoginTokenService; import net.lab1024.smartadmin.module.system.royalcanin.member.MemberAddEntity; import net.lab1024.smartadmin.module.system.royalcanin.member.MemberCheckEntity; import net.lab1024.smartadmin.module.system.royalcanin.member.MemberGetEntity; import net.lab1024.smartadmin.module.system.royalcanin.member.MemberUpdateMemberLevelEntity; import net.lab1024.smartadmin.util.SmartHttpUtil; +import net.lab1024.smartadmin.util.SmartIPUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Date; @@ -27,7 +33,7 @@ public class MemberService { private String url = "http://miniapp-test.royalcanin.com.cn:7080/crm/member/"; @Autowired - private LoginTokenService loginTokenService; + private LogService logService; /** * 过期时间一天 @@ -41,7 +47,7 @@ public class MemberService { @Value("${jwt.key}") private String jwtKey; - public String memberGet(MemberGetEntity memberGetEntity)throws Exception { + public String memberGet(MemberGetEntity memberGetEntity, HttpServletRequest request)throws Exception { Map paramMap = new HashMap<>(); paramMap.put("channelId", StringUtil.toString(memberGetEntity.getChannelId())); paramMap.put("id",StringUtil.toString(memberGetEntity.getId())); @@ -52,6 +58,17 @@ public class MemberService { JSONObject json = JSONObject.parseObject(jsonObject.getString("data")); String id = json.getString("id"); jsonObject.put("xaccessToken",generateToken(id)); + UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent")); + UserLoginLogEntity logEntity = + UserLoginLogEntity.builder() + .userId(Long.parseLong(id)) + .userName(json.getString("memberName")) + .remoteIp(SmartIPUtil.getRemoteIp(request)) + .remotePort(request.getRemotePort()) + .remoteBrowser(userAgent.getBrowser().getName()) + .remoteOs(userAgent.getOperatingSystem().getName()) + .loginStatus(JudgeEnum.YES.getValue()).build(); + logService.addLog(logEntity); return jsonObject.toJSONString(); } public String memberCheck(MemberCheckEntity memberCheckEntity)throws Exception { @@ -121,4 +138,9 @@ public class MemberService { return compactJws; } + + public void useLog(HttpServletRequest request){ + //登陆操作日志 + + } } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/TransitionController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/TransitionController.java index 87f950ac..d455f2ba 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/TransitionController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/TransitionController.java @@ -1,12 +1,19 @@ package net.lab1024.smartadmin.module.system.royalcanin; +import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import net.lab1024.smartadmin.common.anno.OperateLog; +import net.lab1024.smartadmin.common.domain.ResponseDTO; +import net.lab1024.smartadmin.common.heartbeat.StringUtil; import net.lab1024.smartadmin.constant.SwaggerTagConst; +import net.lab1024.smartadmin.module.business.log.LogService; +import net.lab1024.smartadmin.module.business.log.useroperatelog.domain.UserOperateLogEntity; import net.lab1024.smartadmin.module.system.royalcanin.couponConfig.CouponConfigFindAllEntity; import net.lab1024.smartadmin.module.system.royalcanin.couponConfig.CouponConfigGetEntity; +import net.lab1024.smartadmin.module.system.royalcanin.domain.RoyalcaninOperateLogEntity; +import net.lab1024.smartadmin.module.system.royalcanin.domain.RoyalcaninOperateLogService; import net.lab1024.smartadmin.module.system.royalcanin.member.MemberAddEntity; import net.lab1024.smartadmin.module.system.royalcanin.member.MemberCheckEntity; import net.lab1024.smartadmin.module.system.royalcanin.member.MemberGetEntity; @@ -22,6 +29,9 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletRequest; +import java.text.SimpleDateFormat; + @Api(tags = {SwaggerTagConst.Admin.MANAGER_MALL_API}) @OperateLog @@ -31,6 +41,9 @@ public class TransitionController { @Autowired private MemberService memberService; + @Autowired + private RoyalcaninOperateLogService royalcaninOperateLogService; + @Autowired private MemberAddressService memberAddressService; @@ -42,59 +55,89 @@ public class TransitionController { @ApiOperation(value = "会员信息", notes = "会员查询,验证会员信息,会员注册") @PostMapping("royalcanin/member") - public String transferMember(String type ,@RequestBody Object object) throws Exception { + public String transferMember(String type , @RequestBody Object object, HttpServletRequest request) throws Exception { ObjectMapper objectMapper = new ObjectMapper(); + String result = "null"; + long startTime = System.currentTimeMillis(); switch (type) { case "get": - return memberService.memberGet(objectMapper.convertValue(object,MemberGetEntity.class)); + result = memberService.memberGet(objectMapper.convertValue(object,MemberGetEntity.class),request); + break; case "check": - return memberService.memberCheck(objectMapper.convertValue(object,MemberCheckEntity.class)); + result = memberService.memberCheck(objectMapper.convertValue(object,MemberCheckEntity.class)); + break; case "add": - return memberService.memberAdd(objectMapper.convertValue(object,MemberAddEntity.class)); + result = memberService.memberAdd(objectMapper.convertValue(object,MemberAddEntity.class)); + break; case "updateMemberLevel": - return memberService.memberUpdateMemberLevel(objectMapper.convertValue(object, MemberUpdateMemberLevelEntity.class)); + result = memberService.memberUpdateMemberLevel(objectMapper.convertValue(object, MemberUpdateMemberLevelEntity.class)); + break; } - return "null"; + long acceptTime = System.currentTimeMillis() ; + long elapsedTime = acceptTime - startTime; + //记录服务响应时间 + addOperatreFullData(type,object.toString(),result, startTime,elapsedTime,acceptTime,request); + return result; } @ApiOperation(value = "会员地址", notes = "查询会员地址,添加会员地址,更新会员地址,删除会员地址") @PostMapping("royalcanin/memberAddress") - public String transferMemberAddress(String type ,@RequestBody Object object) throws Exception { + public String transferMemberAddress(String type ,@RequestBody Object object, HttpServletRequest request) throws Exception { ObjectMapper objectMapper = new ObjectMapper(); + String result = "null"; + long startTime = System.currentTimeMillis(); switch (type) { case "getAll": - return memberAddressService.membberAddressGetAll(objectMapper.convertValue(object, MemberAddressGetAllEntity.class)); + result = memberAddressService.membberAddressGetAll(objectMapper.convertValue(object, MemberAddressGetAllEntity.class)); + break; case "add": - return memberAddressService.memberAddressAdd(objectMapper.convertValue(object,MemberAddressAddEntity.class)); + result = memberAddressService.memberAddressAdd(objectMapper.convertValue(object,MemberAddressAddEntity.class)); + break; case "update": - return memberAddressService.memberAddressUpdate(objectMapper.convertValue(object, MemberAddressUpdateEntity.class)); + result = memberAddressService.memberAddressUpdate(objectMapper.convertValue(object, MemberAddressUpdateEntity.class)); + break; case "delete": - return memberAddressService.memberAddressDelete(objectMapper.convertValue(object, MemberAddressDeleteEntity.class)); + result = memberAddressService.memberAddressDelete(objectMapper.convertValue(object, MemberAddressDeleteEntity.class)); + break; } - return "null"; + long acceptTime = System.currentTimeMillis() ; + long elapsedTime = acceptTime - startTime; + //记录服务响应时间 + addOperatreFullData(type,object.toString(),result, startTime,elapsedTime,acceptTime,request); + return result; } @ApiOperation(value = "会员积分", notes = "会员积分明细,会员积分变更") @PostMapping("royalcanin/memberAccount") - public String transferMemberAccount(String type ,@RequestBody Object object) throws Exception { + public String transferMemberAccount(String type ,@RequestBody Object object, HttpServletRequest request) throws Exception { ObjectMapper objectMapper = new ObjectMapper(); + String result = "null"; + long startTime = System.currentTimeMillis(); switch (type) { case "change": - return memberAccountService.memberAccountChange(objectMapper.convertValue(object, MemberAccountChangeEntity.class)); + result = memberAccountService.memberAccountChange(objectMapper.convertValue(object, MemberAccountChangeEntity.class)); + break; case "history": - return memberAccountService.memberAccountHistory(objectMapper.convertValue(object, MemberAccountHistoryEntity.class)); + result = memberAccountService.memberAccountHistory(objectMapper.convertValue(object, MemberAccountHistoryEntity.class)); + break; } - return "null"; + long acceptTime = System.currentTimeMillis() ; + long elapsedTime = acceptTime - startTime; + //记录服务响应时间 + addOperatreFullData(type,object.toString(),result, startTime,elapsedTime,acceptTime,request); + return result; } @ApiOperation(value = "优惠券种类", notes = "查询所有优惠券种类,查询单条优惠券种类") @PostMapping("royalcanin/couponConfig") - public String transferCouponConfig(String type ,@RequestBody Object object) throws Exception { + public String transferCouponConfig(String type ,@RequestBody Object object, HttpServletRequest request) throws Exception { ObjectMapper objectMapper = new ObjectMapper(); + String result = "null"; + long startTime = System.currentTimeMillis(); switch (type) { case "change": @@ -102,6 +145,25 @@ public class TransitionController { case "history": return couponConfigService.couponConfigGet(objectMapper.convertValue(object, CouponConfigGetEntity.class)); } - return "null"; + long acceptTime = System.currentTimeMillis() ; + long elapsedTime = acceptTime - startTime; + //记录服务响应时间 + addOperatreFullData(type,object.toString(),result, startTime,elapsedTime,acceptTime,request); + return result; + } + + public ResponseDTO addOperatreFullData(String type,String params,String result,Long startTime,Long elapsedTime,Long acceptTime,HttpServletRequest request){ + SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + JSONObject jsonObject = JSONObject.parseObject(result); + RoyalcaninOperateLogEntity royalcaninOperateLogEntity = new RoyalcaninOperateLogEntity(); + royalcaninOperateLogEntity.setElapsedTime(StringUtil.toString(elapsedTime)); + royalcaninOperateLogEntity.setStartTime(dateformat.format(startTime)); + royalcaninOperateLogEntity.setMethod(request.getServletPath()+"?"+type); + royalcaninOperateLogEntity.setCode(jsonObject.getString("code")); + royalcaninOperateLogEntity.setMsg(jsonObject.getString("msg")); + royalcaninOperateLogEntity.setParams(params); + royalcaninOperateLogEntity.setAcceptTime(dateformat.format(acceptTime)); + royalcaninOperateLogService.add(royalcaninOperateLogEntity); + return ResponseDTO.succ(); } } diff --git a/smart-admin-service/smart-admin-api/src/main/resources/sql/smart-admin.sql b/smart-admin-service/smart-admin-api/src/main/resources/sql/smart-admin.sql index dfd8e8c1..2d15d341 100644 --- a/smart-admin-service/smart-admin-api/src/main/resources/sql/smart-admin.sql +++ b/smart-admin-service/smart-admin-api/src/main/resources/sql/smart-admin.sql @@ -1586,3 +1586,24 @@ INSERT INTO `t_user_operate_log` (`id`, `user_id`, `user_name`, `module`, `conte /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; /*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; + +-- +-- 表的结构 `t_royalcanin_operate_log` +-- + +DROP TABLE IF EXISTS `t_royalcanin_operate_log`; +CREATE TABLE IF NOT EXISTS `t_royalcanin_operate_log` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', + `method` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `params` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL, + `start_time` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `elapsed_time` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `msg` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;