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 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 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 keySet = new HashSet<>(); Set deleteIds = new HashSet<>(); List mappingList = sceneFileMappingService.list(new LambdaQueryWrapper().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("初始化数据结束"); } }