123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- package com.fdkankan.scene.Interceptor;
- import cn.hutool.http.HttpUtil;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.fdkankan.common.util.ThreeDESUtil;
- import com.fdkankan.common.util.UserAgentUtils;
- import com.fdkankan.common.util.WebUtil;
- import com.fdkankan.common.exception.BusinessException;
- import com.fdkankan.feign.TietaFeignClient;
- import com.fdkankan.feign.WS4AServiceClient;
- import com.fdkankan.scene.entity.SceneViewLog;
- import com.fdkankan.scene.service.SceneViewLogService;
- import lombok.extern.log4j.Log4j2;
- import org.aspectj.lang.JoinPoint;
- import org.aspectj.lang.annotation.Aspect;
- import org.aspectj.lang.annotation.Before;
- import org.aspectj.lang.annotation.Pointcut;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.core.annotation.Order;
- import org.springframework.stereotype.Component;
- import org.springframework.web.context.request.RequestContextHolder;
- import org.springframework.web.context.request.ServletRequestAttributes;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import java.io.IOException;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Map;
- @Log4j2
- @Aspect
- @Component
- @Order(101)
- public class ViewLogAspect {
- @Value("${spring.cloud.nacos.discovery.access-key}")
- private String accessKey;
- @Value("${tieta.checkToken.syscode}")
- private String syscode;
- @Value("${gateway.key:6#dPz>3F}")
- private String gatewayKey;
- @Value("${gateway.url}")
- private String gatewayUrl;
- @Resource
- private TietaFeignClient tietaFeignClient;
- @Autowired
- private WS4AServiceClient ws4AServiceClient;
- @Autowired
- private SceneViewLogService sceneViewLogService;
- @Pointcut("@annotation(com.fdkankan.scene.annotation.VrLog)")
- public void checkCooperationPermit() {
- }
- /**
- * 前置通知 用于判断用户协作场景是否有协作权限
- *
- * @param joinPoint
- * 切点
- * @throws IOException
- */
- @Before("checkCooperationPermit()")
- public void doBefore(JoinPoint joinPoint) throws Exception {
- log.info("记录日志开始");
- HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
- boolean mobileDevice = UserAgentUtils.isMobileDevice(request);
- String userAgent = "pc";
- if(mobileDevice){
- userAgent = "mobile";
- }
- //请求4a接口获取用户信息
- Map<String, Object> parameter = WebUtil.getParameter(joinPoint, request);
- String acctId = (String) parameter.get("acctId");
- String token = (String) parameter.get("token");
- String num = (String) parameter.get("num");
- String syscode = (String) parameter.get("syscode");
- //token校验
- JSONObject checkProwadaTokenParam = new JSONObject();
- JSONObject params = new JSONObject();
- params.put("SYSCODE", syscode);
- params.put("ACCTID", acctId);
- params.put("TOKEN", token);
- String encode = ThreeDESUtil.encode(JSON.toJSONString(params), gatewayKey);
- checkProwadaTokenParam.put("args", encode);
- JSONObject result = ws4AServiceClient.checkProwadaToken(checkProwadaTokenParam);
- log.info("场景:{},4A校验token结果:{}", num, result);
- if(!"SUCCESS".equals(result.getString("resultStat"))){
- throw new BusinessException(4000, "4A鉴权失败");
- }
- String data = result.getString("data");
- JSONObject dataObj = JSONObject.parseObject(data);
- if(!"0".equals(dataObj.getString("RSP"))){
- throw new BusinessException(4000, "4A鉴权失败:" + dataObj.getString("ERRDESC"));
- }
- String USERCODE = dataObj.getString("USERCODE");
- // String SERVICEID = dataObj.getString("SERVICEID");
- String ORGCODE = dataObj.getString("ORGCODE");
- //查询用户信息
- JSONObject param2 = new JSONObject();
- param2.put("SERVICEID", syscode);
- param2.put("LOGINACCOUNT", USERCODE);
- param2.put("TOKEN", token);
- encode = ThreeDESUtil.encode(JSON.toJSONString(param2), gatewayKey);
- Map<String, Object> param = new HashMap<>();
- param.put("args", encode);
- String queryLoginUserInfoResp = HttpUtil.get(gatewayUrl + "/QUERY4A/user/queryLoginUserInfo?args=" + encode);
- result = JSON.parseObject(queryLoginUserInfoResp);
- // result = ws4AServiceClient.queryLoginUserInfo(encode);
- log.info("场景:{},4A查询用户信息结果:{}", num, result);
- if(!"SUCCESS".equals(result.getString("resultStat"))){
- throw new BusinessException(4000, "4A查询用户信息失败");
- }
- data = result.getString("data");
- dataObj = JSONObject.parseObject(data);
- if(!"0".equals(dataObj.getString("RSP"))){
- throw new BusinessException(4000, "4A查询用户信息失败:" + dataObj.getString("ERRDESC"));
- }
- String nickName = dataObj.getString("LOGINNAME");
- JSONObject param3 = new JSONObject();
- param3.put("SERVICEID", syscode);
- param3.put("QUERYMODE", "3");
- param3.put("ORGCODE", ORGCODE);
- param3.put("TOKEN", token);
- encode = ThreeDESUtil.encode(JSON.toJSONString(param3), gatewayKey);
- // result = ws4AServiceClient.queryOrgs(encode);
- String queryOrgsResp = HttpUtil.get(gatewayUrl + "/QUERY4A/query/queryOrgs?args=" + encode);
- result = JSON.parseObject(queryOrgsResp);
- log.info("场景:{},4A查询用户组织结果:{}", num, result);
- if(!"SUCCESS".equals(result.getString("resultStat"))){
- throw new BusinessException(4000, "查询用户组织失败");
- }
- data = result.getString("data");
- dataObj = JSONObject.parseObject(data);
- if(!"0".equals(dataObj.getString("RSP"))){
- throw new BusinessException(4000, "4A查询用户组织失败:" + dataObj.getString("ERRDESC"));
- }
- JSONObject ORGS = dataObj.getJSONObject("ORGS");
- JSONArray ORG = ORGS.getJSONArray("ORG");
- JSONObject ORG1 = ORG.getJSONObject(0);
- String ORGNAMEPATH = ORG1.getString("ORGNAMEPATH");
- //写入表
- SceneViewLog sceneViewLog = new SceneViewLog();
- sceneViewLog.setOrgNamePath(ORGNAMEPATH);
- sceneViewLog.setFuncName("VR全景");
- sceneViewLog.setFuncDesc("VR全景试图");
- sceneViewLog.setUserName(USERCODE);
- sceneViewLog.setNickName(nickName);
- sceneViewLog.setCreateTime(new Date());
- sceneViewLog.setTerminalType(userAgent);
- sceneViewLogService.save(sceneViewLog);
- }
- public static void main(String[] args) {
- JSONObject param2 = new JSONObject();
- param2.put("SERVICEID", "CHNTRMS2");
- param2.put("LOGINACCOUNT", "wx-sunql3");
- param2.put("TOKEN", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJSRVMiLCJpc3MiOiJXUzRBIiwiZXhwIjoxNzMzMzEwNjY1LCJOQU5PU0VDT05EIjo0MjAxNTczODIzODYyMjgzOH0.sQR4qkTeRZEOQMI-Rjck35dFswoOMYHsGSuNcXH45TI");
- String encode = ThreeDESUtil.encode(JSON.toJSONString(param2), "6#dPz>3F");
- System.out.println(encode);
- }
- }
|