SceneProServiceImpl.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package com.fdkankan.scene.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.fdkankan.common.constant.RecStatus;
  6. import com.fdkankan.common.response.ResultData;
  7. import com.fdkankan.redis.constant.RedisKey;
  8. import com.fdkankan.redis.util.RedisUtil;
  9. import com.fdkankan.scene.bean.RequestSceneProV4;
  10. import com.fdkankan.scene.entity.SceneCooperation;
  11. import com.fdkankan.scene.entity.ScenePro;
  12. import com.fdkankan.scene.entity.SceneResource;
  13. import com.fdkankan.scene.entity.SceneResourceCooperation;
  14. import com.fdkankan.scene.mapper.ISceneProMapper;
  15. import com.fdkankan.scene.service.ISceneCooperationService;
  16. import com.fdkankan.scene.service.ISceneProService;
  17. import com.fdkankan.scene.service.ISceneResourceCooperationService;
  18. import com.fdkankan.scene.service.ISceneResourceService;
  19. import com.google.common.collect.Lists;
  20. import java.util.Date;
  21. import java.util.List;
  22. import java.util.Objects;
  23. import java.util.stream.Collectors;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26. /**
  27. * <p>
  28. * pro场景表 服务实现类
  29. * </p>
  30. *
  31. * @author
  32. * @since 2022-07-04
  33. */
  34. @Service
  35. public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro> implements ISceneProService {
  36. @Autowired
  37. private ISceneCooperationService sceneCooperationService;
  38. @Autowired
  39. private RedisUtil redisUtil;
  40. @Autowired
  41. private ISceneResourceCooperationService sceneResourceCooperationService;
  42. @Autowired
  43. private ISceneResourceService sceneResourceService;
  44. @Override
  45. public ResultData upgradeToV4ResultSync(RequestSceneProV4 param) throws Exception {
  46. ScenePro scenePro = this.getById(param.getId());
  47. scenePro.setWebSite(param.getWebSite());
  48. scenePro.setIsUpgrade(1);
  49. this.updateById(scenePro);
  50. String num = scenePro.getNum();
  51. //如果场景有协作者,默认勾选上v4所有菜单
  52. SceneCooperation SceneCooperation = sceneCooperationService.getByNum(num);
  53. if(Objects.nonNull(SceneCooperation)){
  54. redisUtil.hset(RedisKey.SCENE_COOPERATION_NUM_USERID, num, SceneCooperation.getUserId() + "");
  55. //判断是否已经有了v4的菜单,如果已经有了,证明已经迁移过,不需要再初始化菜单资源
  56. List<SceneResourceCooperation> sceneResourceCooperationList = sceneResourceCooperationService.list(
  57. new LambdaQueryWrapper<SceneResourceCooperation>()
  58. .eq(SceneResourceCooperation::getSceneCooperationId, SceneCooperation.getId()));
  59. if(CollUtil.isNotEmpty(sceneResourceCooperationList)){
  60. List<Long> sceneSourceList = sceneResourceCooperationList.stream()
  61. .map(item -> item.getSceneResourceId()).collect(Collectors.toList());
  62. List<SceneResource> sceneResourceList
  63. = sceneResourceService.list(
  64. new LambdaQueryWrapper<SceneResource>()
  65. .eq(SceneResource::getVersion, "v4")
  66. .in(SceneResource::getId, sceneSourceList));
  67. if(CollUtil.isEmpty(sceneResourceList)){//如果查出来的这个场景的v4资源是空的,证明是第一次升级,需要初始化菜单资源
  68. sceneResourceList = sceneResourceService.list(
  69. new LambdaQueryWrapper<SceneResource>()
  70. .eq(SceneResource::getVersion, "v4"));// 查出所有的v4菜单,给这个场景的协作者初始化所有v4菜单资源
  71. if(CollUtil.isNotEmpty(sceneResourceList)){
  72. List<SceneResourceCooperation> list = Lists.newArrayList();
  73. SceneResourceCooperation sceneResourceCooperation = null;
  74. for (SceneResource sceneResource : sceneResourceList) {
  75. sceneResourceCooperation = new SceneResourceCooperation();
  76. sceneResourceCooperation.setSceneResourceId(sceneResource.getId());
  77. sceneResourceCooperation.setSceneCooperationId(SceneCooperation.getId());
  78. sceneResourceCooperation.setCreateTime(new Date());
  79. sceneResourceCooperation.setUpdateTime(new Date());
  80. sceneResourceCooperation.setRecStatus(RecStatus.VALID.code());
  81. list.add(sceneResourceCooperation);
  82. }
  83. sceneResourceCooperationService.saveBatch(list);
  84. }
  85. }
  86. }
  87. }
  88. return ResultData.ok();
  89. }
  90. }