package com.fdkankan.scene.service.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.common.constant.RecStatus; import com.fdkankan.common.response.ResultData; import com.fdkankan.redis.constant.RedisKey; import com.fdkankan.redis.util.RedisUtil; import com.fdkankan.scene.bean.RequestSceneProV4; import com.fdkankan.scene.entity.SceneCooperation; import com.fdkankan.scene.entity.ScenePro; import com.fdkankan.scene.entity.SceneResource; import com.fdkankan.scene.entity.SceneResourceCooperation; import com.fdkankan.scene.mapper.ISceneProMapper; import com.fdkankan.scene.service.ISceneCooperationService; import com.fdkankan.scene.service.ISceneProService; import com.fdkankan.scene.service.ISceneResourceCooperationService; import com.fdkankan.scene.service.ISceneResourceService; import com.google.common.collect.Lists; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** *

* pro场景表 服务实现类 *

* * @author * @since 2022-07-04 */ @Service public class SceneProServiceImpl extends ServiceImpl implements ISceneProService { @Autowired private ISceneCooperationService sceneCooperationService; @Autowired private RedisUtil redisUtil; @Autowired private ISceneResourceCooperationService sceneResourceCooperationService; @Autowired private ISceneResourceService sceneResourceService; @Override public ResultData upgradeToV4ResultSync(RequestSceneProV4 param) throws Exception { ScenePro scenePro = this.getById(param.getId()); scenePro.setWebSite(param.getWebSite()); scenePro.setIsUpgrade(1); this.updateById(scenePro); String num = scenePro.getNum(); //如果场景有协作者,默认勾选上v4所有菜单 SceneCooperation SceneCooperation = sceneCooperationService.getByNum(num); if(Objects.nonNull(SceneCooperation)){ redisUtil.hset(RedisKey.SCENE_COOPERATION_NUM_USERID, num, SceneCooperation.getUserId() + ""); //判断是否已经有了v4的菜单,如果已经有了,证明已经迁移过,不需要再初始化菜单资源 List sceneResourceCooperationList = sceneResourceCooperationService.list( new LambdaQueryWrapper() .eq(SceneResourceCooperation::getSceneCooperationId, SceneCooperation.getId())); if(CollUtil.isNotEmpty(sceneResourceCooperationList)){ List sceneSourceList = sceneResourceCooperationList.stream() .map(item -> item.getSceneResourceId()).collect(Collectors.toList()); List sceneResourceList = sceneResourceService.list( new LambdaQueryWrapper() .eq(SceneResource::getVersion, "v4") .in(SceneResource::getId, sceneSourceList)); if(CollUtil.isEmpty(sceneResourceList)){//如果查出来的这个场景的v4资源是空的,证明是第一次升级,需要初始化菜单资源 sceneResourceList = sceneResourceService.list( new LambdaQueryWrapper() .eq(SceneResource::getVersion, "v4"));// 查出所有的v4菜单,给这个场景的协作者初始化所有v4菜单资源 if(CollUtil.isNotEmpty(sceneResourceList)){ List list = Lists.newArrayList(); SceneResourceCooperation sceneResourceCooperation = null; for (SceneResource sceneResource : sceneResourceList) { sceneResourceCooperation = new SceneResourceCooperation(); sceneResourceCooperation.setSceneResourceId(sceneResource.getId()); sceneResourceCooperation.setSceneCooperationId(SceneCooperation.getId()); sceneResourceCooperation.setCreateTime(new Date()); sceneResourceCooperation.setUpdateTime(new Date()); sceneResourceCooperation.setRecStatus(RecStatus.VALID.code()); list.add(sceneResourceCooperation); } sceneResourceCooperationService.saveBatch(list); } } } } return ResultData.ok(); } }