123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- package com.fdkankan.scene.Interceptor;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.http.HttpUtil;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.fdkankan.common.constant.ErrorCode;
- import com.fdkankan.common.exception.BusinessException;
- import com.fdkankan.common.util.ThreeDESUtil;
- import com.fdkankan.common.util.UserAgentUtils;
- import com.fdkankan.common.util.WebUtil;
- import com.fdkankan.feign.TietaFeignClient;
- import com.fdkankan.feign.WS4AServiceClient;
- import com.fdkankan.scene.entity.*;
- import com.fdkankan.scene.service.*;
- 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.*;
- @Log4j2
- @Aspect
- @Component
- @Order(102)
- public class InitEditInfoAspect {
- @Autowired
- private SceneService sceneService;
- @Autowired
- private SceneEditInfoService sceneEditInfoService;
- @Autowired
- private SceneEditInfoExtService sceneEditInfoExtService;
- @Autowired
- private SceneEditControlsService sceneEditControlsService;
- @Autowired
- private SceneFileMappingService sceneFileMappingService;
- @Pointcut("@annotation(com.fdkankan.scene.annotation.InitEditInfo)")
- public void InitEditInfo() {
- }
- /**
- * 前置通知 用于判断用户协作场景是否有协作权限
- *
- * @param joinPoint
- * 切点
- * @throws IOException
- */
- @Before("InitEditInfo()")
- public void doBefore(JoinPoint joinPoint) throws Exception {
- log.info("初始化数据开始");
- HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
- //请求4a接口获取用户信息
- Map<String, Object> parameter = WebUtil.getParameter(joinPoint, request);
- String num = (String) parameter.get("num");
- Object subgroupObj = parameter.get("subgroup");
- Integer subgroup = 0;
- if(Objects.nonNull(subgroupObj)){
- subgroup = Integer.valueOf(subgroupObj.toString());
- }
- List<Scene> scenes = sceneService.listByNum(num, subgroup);
- if(CollUtil.isEmpty(scenes)){
- throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
- }
- Scene scene = null;
- if(scenes.size() > 1){
- scene = scenes.stream().max((a,b) -> {
- if(a.getId() > b.getId()){
- return 1;
- }
- return -1;
- }).get();
- for (Scene item : scenes) {
- if(item.getId().equals(scene.getId())){
- continue;
- }
- sceneService.removeById(item.getId());
- }
- }else{
- scene = scenes.get(0);
- }
- SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scene.getId());
- if(Objects.isNull(sceneEditInfo)){
- sceneEditInfo = new SceneEditInfo();
- sceneEditInfo.setScenePlusId(scene.getId());
- sceneEditInfo.setTitle(scene.getTitle());
- sceneEditInfo.setDescription(scene.getDescription());
- sceneEditInfoService.save(sceneEditInfo);
- SceneEditInfoExt sceneEditInfoExt = new SceneEditInfoExt();
- sceneEditInfoExt.setScenePlusId(scene.getId());
- sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
- sceneEditInfoExtService.save(sceneEditInfoExt);
- SceneEditControls sceneEditControls = new SceneEditControls();
- sceneEditControls.setEditInfoId(sceneEditInfo.getId());
- sceneEditControlsService.save(sceneEditControls);
- }
- Set<String> keySet = new HashSet<>();
- Set<Long> deleteIds = new HashSet<>();
- List<SceneFileMapping> mappingList = sceneFileMappingService.list(new LambdaQueryWrapper<SceneFileMapping>().eq(SceneFileMapping::getNum, num).eq(SceneFileMapping::getSubgroup, subgroup).orderByDesc(SceneFileMapping::getId));
- for (SceneFileMapping mapping : mappingList) {
- if(keySet.contains(mapping.getKey())){
- deleteIds.add(mapping.getId());
- }else{
- keySet.add(mapping.getKey());
- }
- }
- if(CollUtil.isNotEmpty(deleteIds)){
- sceneFileMappingService.removeByIds(deleteIds);
- }
- log.info("初始化数据结束");
- }
- }
|