package com.fdkankan.scene.service.impl; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fdkankan.common.constant.ErrorCode; import com.fdkankan.common.constant.PayStatus; import com.fdkankan.common.constant.SceneStatus; import com.fdkankan.common.constant.ServerCode; import com.fdkankan.common.exception.BusinessException; import com.fdkankan.common.response.ResultData; import com.fdkankan.common.util.DateExtUtil; import com.fdkankan.fyun.oss.UploadToOssUtil; import com.fdkankan.platform.api.feign.PlatformGoodsClient; import com.fdkankan.platform.api.feign.PlatformUserClient; import com.fdkankan.platform.api.dto.Camera; import com.fdkankan.platform.api.dto.UserIncrement; import com.fdkankan.scene.entity.ScenePlus; import com.fdkankan.scene.service.ISceneEditService; import com.fdkankan.scene.service.IScenePlusService; import com.fdkankan.scene.service.ISceneProService; import com.fdkankan.scene.vo.BaseSceneParamVO; import com.fdkankan.scene.vo.LocalesParamVO; import com.fdkankan.scene.vo.SceneAuthVO; import java.util.Date; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** *

* TODO *

* * @author dengsixing * @since 2022/3/11 **/ @Service public class SceneEditServiceImpl implements ISceneEditService { @Autowired ISceneProService sceneProService; @Autowired PlatformGoodsClient platformGoodsClient; @Autowired PlatformUserClient platformUserClient; @Autowired IScenePlusService scenePlusService; @Autowired private UploadToOssUtil uploadToOssUtil; @Override public SceneAuthVO getAuth(BaseSceneParamVO param) throws Exception{ ScenePlus scenePlus = scenePlusService.getOne( new LambdaQueryWrapper().eq(ScenePlus::getNum, param.getNum()) .eq(ScenePlus::getPayStatus, PayStatus.PAY.code()) .in(ScenePlus::getSceneStatus, SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code())); if(scenePlus == null){ throw new BusinessException(ErrorCode.FAILURE_CODE_5005); } //判断该场景是否属于增值权益 boolean isVip = false; //获取该相机是否有权益 boolean isExpired = false; ResultData cameraResultData = platformGoodsClient.getCameraById(scenePlus.getCameraId()); if(!cameraResultData.getSuccess()){ throw new Exception(ServerCode.FEIGN_REQUEST_FAILD.message()); } Camera camera = cameraResultData.getData(); if(camera != null){ ResultData incrementResultData = platformUserClient .getUserIncrementByCameraId(camera.getId()); if(!incrementResultData.getSuccess()){ throw new Exception(ServerCode.FEIGN_REQUEST_FAILD.message()); } UserIncrement userIncrement = incrementResultData.getData(); if(userIncrement != null){ if( userIncrement.getIsExpired().intValue() == 0){ isVip = true; } if(userIncrement.getIsExpired().intValue() == 1){ isExpired = true; } }else{ Date date = DateUtil.parse("2021-09-09 00:00:00", DateExtUtil.dateStyle); //非07批次的放开 String pc = camera.getSnCode().substring(0,2); if(!pc.equals("07") ){ if(camera.getCreateTime()!=null && date.after(camera.getCreateTime())){ isVip = true; isExpired = false; } } } } return SceneAuthVO.builder().isExpired(isExpired).isVip(isVip).build(); } @Override public ResultData locales(LocalesParamVO param) throws Exception { String key = "v4/www/locales/" + param.getFile(); uploadToOssUtil.upload(JSON.toJSONBytes(param.getData()), key); return ResultData.ok(); } }