InitEditInfoAspect.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package com.fdkankan.scene.Interceptor;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.http.HttpUtil;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.JSONArray;
  6. import com.alibaba.fastjson.JSONObject;
  7. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  8. import com.fdkankan.common.constant.ErrorCode;
  9. import com.fdkankan.common.exception.BusinessException;
  10. import com.fdkankan.common.util.ThreeDESUtil;
  11. import com.fdkankan.common.util.UserAgentUtils;
  12. import com.fdkankan.common.util.WebUtil;
  13. import com.fdkankan.feign.TietaFeignClient;
  14. import com.fdkankan.feign.WS4AServiceClient;
  15. import com.fdkankan.scene.entity.*;
  16. import com.fdkankan.scene.service.*;
  17. import lombok.extern.log4j.Log4j2;
  18. import org.aspectj.lang.JoinPoint;
  19. import org.aspectj.lang.annotation.Aspect;
  20. import org.aspectj.lang.annotation.Before;
  21. import org.aspectj.lang.annotation.Pointcut;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.beans.factory.annotation.Value;
  24. import org.springframework.core.annotation.Order;
  25. import org.springframework.stereotype.Component;
  26. import org.springframework.web.context.request.RequestContextHolder;
  27. import org.springframework.web.context.request.ServletRequestAttributes;
  28. import javax.annotation.Resource;
  29. import javax.servlet.http.HttpServletRequest;
  30. import java.io.IOException;
  31. import java.util.*;
  32. @Log4j2
  33. @Aspect
  34. @Component
  35. @Order(102)
  36. public class InitEditInfoAspect {
  37. @Autowired
  38. private SceneService sceneService;
  39. @Autowired
  40. private SceneEditInfoService sceneEditInfoService;
  41. @Autowired
  42. private SceneEditInfoExtService sceneEditInfoExtService;
  43. @Autowired
  44. private SceneEditControlsService sceneEditControlsService;
  45. @Autowired
  46. private SceneFileMappingService sceneFileMappingService;
  47. @Pointcut("@annotation(com.fdkankan.scene.annotation.InitEditInfo)")
  48. public void InitEditInfo() {
  49. }
  50. /**
  51. * 前置通知 用于判断用户协作场景是否有协作权限
  52. *
  53. * @param joinPoint
  54. * 切点
  55. * @throws IOException
  56. */
  57. @Before("InitEditInfo()")
  58. public void doBefore(JoinPoint joinPoint) throws Exception {
  59. log.info("初始化数据开始");
  60. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  61. //请求4a接口获取用户信息
  62. Map<String, Object> parameter = WebUtil.getParameter(joinPoint, request);
  63. String num = (String) parameter.get("num");
  64. Object subgroupObj = parameter.get("subgroup");
  65. Integer subgroup = 0;
  66. if(Objects.nonNull(subgroupObj)){
  67. subgroup = Integer.valueOf(subgroupObj.toString());
  68. }
  69. List<Scene> scenes = sceneService.listByNum(num, subgroup);
  70. if(CollUtil.isEmpty(scenes)){
  71. throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
  72. }
  73. Scene scene = null;
  74. if(scenes.size() > 1){
  75. scene = scenes.stream().max((a,b) -> {
  76. if(a.getId() > b.getId()){
  77. return 1;
  78. }
  79. return -1;
  80. }).get();
  81. for (Scene item : scenes) {
  82. if(item.getId().equals(scene.getId())){
  83. continue;
  84. }
  85. sceneService.removeById(item.getId());
  86. }
  87. }else{
  88. scene = scenes.get(0);
  89. }
  90. SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scene.getId());
  91. if(Objects.isNull(sceneEditInfo)){
  92. sceneEditInfo = new SceneEditInfo();
  93. sceneEditInfo.setScenePlusId(scene.getId());
  94. sceneEditInfo.setTitle(scene.getTitle());
  95. sceneEditInfo.setDescription(scene.getDescription());
  96. sceneEditInfoService.save(sceneEditInfo);
  97. SceneEditInfoExt sceneEditInfoExt = new SceneEditInfoExt();
  98. sceneEditInfoExt.setScenePlusId(scene.getId());
  99. sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
  100. sceneEditInfoExtService.save(sceneEditInfoExt);
  101. SceneEditControls sceneEditControls = new SceneEditControls();
  102. sceneEditControls.setEditInfoId(sceneEditInfo.getId());
  103. sceneEditControlsService.save(sceneEditControls);
  104. }
  105. Set<String> keySet = new HashSet<>();
  106. Set<Long> deleteIds = new HashSet<>();
  107. List<SceneFileMapping> mappingList = sceneFileMappingService.list(new LambdaQueryWrapper<SceneFileMapping>().eq(SceneFileMapping::getNum, num).eq(SceneFileMapping::getSubgroup, subgroup).orderByDesc(SceneFileMapping::getId));
  108. for (SceneFileMapping mapping : mappingList) {
  109. if(keySet.contains(mapping.getKey())){
  110. deleteIds.add(mapping.getId());
  111. }else{
  112. keySet.add(mapping.getKey());
  113. }
  114. }
  115. if(CollUtil.isNotEmpty(deleteIds)){
  116. sceneFileMappingService.removeByIds(deleteIds);
  117. }
  118. log.info("初始化数据结束");
  119. }
  120. }