package com.fdkankan.manage_jp.service.impl; import cn.hutool.core.io.FileUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fdkankan.common.util.FileUtils; import com.fdkankan.fyun.face.FYunFileServiceInterface; import com.fdkankan.manage_jp.common.OssPath; import com.fdkankan.manage_jp.common.PageInfo; import com.fdkankan.manage_jp.common.ResultCode; import com.fdkankan.manage_jp.entity.Company; import com.fdkankan.manage_jp.entity.ScenePlus; import com.fdkankan.manage_jp.entity.ScenePro; import com.fdkankan.manage_jp.entity.SceneProEdit; import com.fdkankan.manage_jp.exception.BusinessException; import com.fdkankan.manage_jp.httpClient.service.LaserService; import com.fdkankan.manage_jp.mapper.ISceneProMapper; import com.fdkankan.manage_jp.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.manage_jp.vo.request.SceneParam; import com.fdkankan.manage_jp.vo.response.SceneVo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; /** *

* pro场景表 服务实现类 *

* * @author * @since 2022-12-30 */ @Service @Slf4j public class SceneProServiceImpl extends ServiceImpl implements ISceneProService { @Autowired IScenePlusService scenePlusService; @Autowired LaserService laserService; @Autowired ISceneProEditService sceneProEditService; @Autowired ICompanyService companyService; @Autowired IScenePlusExtService scenePlusExtService; @Autowired FYunFileServiceInterface fYunFileServiceInterface; @Override public Long getCountByUserIds(List userIds) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(ScenePro::getUserId,userIds); wrapper.eq(ScenePro::getIsUpgrade,0); long count = this.count(wrapper); LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); wrapper2.in(ScenePlus::getUserId,userIds); long count2 = scenePlusService.count(wrapper2); return count + count2; } @Override public void rebindUser(Long fromUserId, Long toUserId) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(ScenePro::getUserId,fromUserId); wrapper.set(ScenePro::getUserId,toUserId); this.update(wrapper); LambdaUpdateWrapper wrapper2 = new LambdaUpdateWrapper<>(); wrapper2.eq(ScenePlus::getUserId,fromUserId); wrapper2.set(ScenePlus::getUserId,toUserId); scenePlusService.update(wrapper2); } @Override public Object pageList(SceneParam param) { if(param.getType() == 2){ //深时 return laserService.pageList(param); } Page page = this.getBaseMapper().pageList(new Page<>(param.getPage(),param.getLimit()),param); for (SceneVo record : page.getRecords()) { String userName = record.getUserName(); Company company = companyService.getByUserName(userName); if(company != null){ record.setCompanyName(company.getCompanyName()); } } return PageInfo.PageInfo(page); } @Override public ScenePro getByNum(String num) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ScenePro::getNum,num); wrapper.eq(ScenePro::getIsUpgrade,0); List list = this.list(wrapper); if(list == null || list.size() <=0){ return null; } return list.get(0); } @Override public void addDownloadNum(String sceneNum) { if(StringUtils.isBlank(sceneNum)){ throw new BusinessException(ResultCode.PARAM_ERROR); } ScenePro scenePro = this.getByNum(sceneNum); if(scenePro != null){ SceneProEdit sceneProEditEntity = sceneProEditService.getByProId(scenePro.getId()); if(sceneProEditEntity.getDownloadNum() == null){ sceneProEditEntity.setDownloadNum(1); }else{ sceneProEditEntity.setDownloadNum(sceneProEditEntity.getDownloadNum() + 1); } sceneProEditService.updateById(sceneProEditEntity); } } @Override public void deleteByNum(String num) { ScenePro scenePro = this.getByNum(num); if(scenePro!=null){ this.removeById(scenePro.getId()); this.updateOssStatus(String.format(OssPath.v3_statusPath,scenePro.getNum()),"I"); } ScenePlus scenePlus = scenePlusService.getByNum(num); if(scenePlus!=null){ scenePlusService.removeById(scenePlus.getId()); scenePlusExtService.delByPlus(scenePlus.getId()); this.updateOssStatus(String.format(OssPath.v4_statusPath,scenePlus.getNum()),"I"); } if(num.contains("SS")){ laserService.delete(num); } } private void updateOssStatus(String path,String recStatus) { try { if(!fYunFileServiceInterface.fileExist(path)){ return; } String data = fYunFileServiceInterface.getFileContent(path); if(StringUtils.isBlank(data)){ return; } JSONObject jsonObject = JSONObject.parseObject(data); jsonObject.put("recStatus",recStatus); String json = JSONUtil.toJsonStr(jsonObject); FileUtils.writeFile(OssPath.localStatusPath ,json); log.info("updateOssStatus--localPath:{},ossPath:{}",OssPath.localStatusPath,path); fYunFileServiceInterface.uploadFile(OssPath.localStatusPath,path); }catch (Exception e){ e.printStackTrace(); }finally { FileUtil.del(OssPath.localStatusPath); } } }