SceneEditServiceImpl.java 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. package com.fdkankan.scene.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.date.DateUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import com.alibaba.fastjson.JSON;
  6. import com.alibaba.fastjson.JSONArray;
  7. import com.alibaba.fastjson.JSONObject;
  8. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  9. import com.fdkankan.common.constant.CommonStatus;
  10. import com.fdkankan.common.constant.ErrorCode;
  11. import com.fdkankan.common.constant.PayStatus;
  12. import com.fdkankan.common.constant.SceneStatus;
  13. import com.fdkankan.common.constant.ServerCode;
  14. import com.fdkankan.common.constant.UploadFilePath;
  15. import com.fdkankan.common.exception.BusinessException;
  16. import com.fdkankan.common.response.Result;
  17. import com.fdkankan.common.response.ResultData;
  18. import com.fdkankan.common.util.DateExtUtil;
  19. import com.fdkankan.fyun.oss.UploadToOssUtil;
  20. import com.fdkankan.platform.api.feign.PlatformGoodsClient;
  21. import com.fdkankan.platform.api.feign.PlatformUserClient;
  22. import com.fdkankan.scene.bean.CameraBean;
  23. import com.fdkankan.scene.bean.UserIncrementBean;
  24. import com.fdkankan.scene.callback.FdkkMiniReqErrorCallback;
  25. import com.fdkankan.scene.callback.FdkkMiniReqSuccessCallback;
  26. import com.fdkankan.scene.entity.ScenePlus;
  27. import com.fdkankan.scene.httpclient.FdkankanMiniClient;
  28. import com.fdkankan.scene.service.ISceneEditInfoExtService;
  29. import com.fdkankan.scene.service.ISceneEditInfoService;
  30. import com.fdkankan.scene.service.ISceneEditService;
  31. import com.fdkankan.scene.service.IScenePlusService;
  32. import com.fdkankan.scene.service.ISceneProService;
  33. import com.fdkankan.scene.service.ISceneUploadService;
  34. import com.fdkankan.scene.vo.BaseDataParamVO;
  35. import com.fdkankan.scene.vo.BaseSceneParamVO;
  36. import com.fdkankan.scene.vo.DeleteFileParamVO;
  37. import com.fdkankan.scene.vo.LocalesParamVO;
  38. import com.fdkankan.scene.vo.SceneAuthVO;
  39. import java.io.IOException;
  40. import java.nio.charset.StandardCharsets;
  41. import java.util.ArrayList;
  42. import java.util.Date;
  43. import java.util.List;
  44. import java.util.Objects;
  45. import org.springframework.beans.factory.annotation.Autowired;
  46. import org.springframework.beans.factory.annotation.Value;
  47. import org.springframework.cloud.context.config.annotation.RefreshScope;
  48. import org.springframework.stereotype.Service;
  49. /**
  50. * <p>
  51. * TODO
  52. * </p>
  53. *
  54. * @author dengsixing
  55. * @since 2022/3/11
  56. **/
  57. @Service
  58. @RefreshScope
  59. public class SceneEditServiceImpl implements ISceneEditService {
  60. @Value("${oss.bucket:4dkankan}")
  61. private String bucket;
  62. @Value("${http.host.4dkankanMini}")
  63. private String fkankanMiniHost;
  64. @Autowired
  65. ISceneProService sceneProService;
  66. @Autowired
  67. PlatformGoodsClient platformGoodsClient;
  68. @Autowired
  69. PlatformUserClient platformUserClient;
  70. @Autowired
  71. IScenePlusService scenePlusService;
  72. @Autowired
  73. private UploadToOssUtil uploadToOssUtil;
  74. @Autowired
  75. private ISceneUploadService sceneUploadService;
  76. @Autowired
  77. private ISceneEditInfoService sceneEditInfoService;
  78. @Autowired
  79. private ISceneEditInfoExtService sceneEditInfoExtService;
  80. @Autowired
  81. private FdkankanMiniClient fdkankanMiniClient;
  82. @Override
  83. public SceneAuthVO getAuth(BaseSceneParamVO param) throws Exception{
  84. ScenePlus scenePlus = scenePlusService.getOne(
  85. new LambdaQueryWrapper<ScenePlus>().eq(ScenePlus::getNum, param.getNum())
  86. .eq(ScenePlus::getPayStatus, PayStatus.PAY.code())
  87. .in(ScenePlus::getSceneStatus, SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code()));
  88. if(scenePlus == null){
  89. throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
  90. }
  91. //判断该场景是否属于增值权益
  92. boolean isVip = false;
  93. //获取该相机是否有权益
  94. boolean isExpired = false;
  95. // ResultData<Camera> cameraResultData = platformGoodsClient.getCameraById(scenePlus.getCameraId());
  96. // if(!cameraResultData.getSuccess()){
  97. // throw new Exception(ServerCode.FEIGN_REQUEST_FAILD.message());
  98. // }
  99. // Camera camera = cameraResultData.getData();
  100. // if(camera != null){
  101. // ResultData<UserIncrement> incrementResultData = platformUserClient
  102. // .getUserIncrementByCameraId(camera.getId());
  103. // if(!incrementResultData.getSuccess()){
  104. // throw new Exception(ServerCode.FEIGN_REQUEST_FAILD.message());
  105. // }
  106. // UserIncrement userIncrement = incrementResultData.getData();
  107. // if(userIncrement != null){
  108. // if( userIncrement.getIsExpired().intValue() == 0){
  109. // isVip = true;
  110. // }
  111. // if(userIncrement.getIsExpired().intValue() == 1){
  112. // isExpired = true;
  113. // }
  114. // }else{
  115. // Date date = DateUtil.parse("2021-09-09 00:00:00", DateExtUtil.dateStyle);
  116. //
  117. // //非07批次的放开
  118. // String pc = camera.getSnCode().substring(0,2);
  119. // if(!pc.equals("07") ){
  120. // if(camera.getCreateTime()!=null && date.after(camera.getCreateTime())){
  121. // isVip = true;
  122. // isExpired = false;
  123. // }
  124. // }
  125. // }
  126. // }
  127. // TODO: 2022/4/25 v3v4共存过渡期结束需要删除,恢复上面注释内容 ------------------------------------------start
  128. String url = fkankanMiniHost + "/api/user/increment/findByCameraId?cameraId=" + scenePlus.getCameraId();
  129. Result<UserIncrementBean> userIncrementResult =
  130. fdkankanMiniClient.getUserIncrementByCameraId(
  131. url, new FdkkMiniReqSuccessCallback(), new FdkkMiniReqErrorCallback());
  132. UserIncrementBean userIncrement = userIncrementResult.getData();
  133. if(userIncrement != null){
  134. if(userIncrement.getIsExpired() == 0){
  135. isVip = true;
  136. }
  137. if(userIncrement.getIsExpired() == 1){
  138. isExpired = true;
  139. }
  140. }else{
  141. url = fkankanMiniHost + "/api/user/camera/getCameraByCameraId?cameraId=" + scenePlus.getCameraId();
  142. Result<CameraBean> cameraResult =
  143. fdkankanMiniClient.getCameraByCameraId(
  144. url,new FdkkMiniReqSuccessCallback(), new FdkkMiniReqErrorCallback());
  145. CameraBean camera = cameraResult.getData();
  146. if(camera == null || Objects.isNull(camera.getId())){
  147. throw new BusinessException(ServerCode.FEIGN_REQUEST_FAILD);
  148. }
  149. Date date = DateUtil.parse("2021-09-09 00:00:00", DateExtUtil.dateStyle);
  150. //非07批次的放开
  151. String pc = camera.getSnCode().substring(0,2);
  152. if(!pc.equals("07") ){
  153. if(camera.getCreateTime()!=null && date.after(camera.getCreateTime())){
  154. isVip = true;
  155. isExpired = false;
  156. }
  157. }
  158. }
  159. // TODO: 2022/4/25 v3v4共存过渡期结束需要删除,恢复上面注释内容 ------------------------------------------end
  160. return SceneAuthVO.builder().isExpired(isExpired).isVip(isVip).build();
  161. }
  162. @Override
  163. public ResultData locales(LocalesParamVO param) throws Exception {
  164. String key = "v4/www/locales/" + param.getFile();
  165. uploadToOssUtil.upload(JSON.toJSONBytes(param.getData()), key);
  166. return ResultData.ok();
  167. }
  168. @Override
  169. public ResultData saveTour(BaseDataParamVO param) throws IOException {
  170. String key = String.format(UploadFilePath.USER_EDIT_PATH, param.getNum()) + "tour.json";
  171. uploadToOssUtil.upload(param.getData().getBytes(StandardCharsets.UTF_8), key);
  172. sceneEditInfoExtService.updateToursByNum(
  173. param.getNum(), Integer.valueOf(CommonStatus.YES.code()));
  174. return ResultData.ok();
  175. }
  176. @Override
  177. public ResultData deleteTour(BaseSceneParamVO param) throws Exception {
  178. String userEditPath = String.format(UploadFilePath.USER_EDIT_PATH, param.getNum());
  179. String tourJsonPath = userEditPath + "tour.json";
  180. String tourJson = uploadToOssUtil.getObjectContent(bucket, tourJsonPath);
  181. JSONArray tours = JSON.parseArray(tourJson);
  182. if(CollUtil.isNotEmpty(tours)){
  183. List<String> fileNames = new ArrayList<>();
  184. for (Object o : tours) {
  185. JSONObject tour = (JSONObject)o;
  186. JSONObject enter = tour.getJSONObject("enter");
  187. if(Objects.nonNull(enter)){
  188. String enterOver = enter.getString("cover");
  189. if(StrUtil.isNotEmpty(enterOver)){
  190. fileNames.add(enterOver);
  191. }
  192. }
  193. JSONObject exit = tour.getJSONObject("exit");
  194. if(Objects.nonNull(exit)){
  195. String exitOver = exit.getString("cover");
  196. if(StrUtil.isNotEmpty(exitOver)){
  197. fileNames.add(exitOver);
  198. }
  199. }
  200. String music = tour.getString("music");
  201. if(StrUtil.isNotEmpty(music)){
  202. fileNames.add( music);
  203. }
  204. }
  205. //批量删除资源文件
  206. if(CollUtil.isNotEmpty(fileNames)){
  207. sceneUploadService.delete(
  208. DeleteFileParamVO.builder()
  209. .num(param.getNum()).bizType("tour").fileNames(fileNames)
  210. .build());
  211. }
  212. }
  213. //删除tour.json文件
  214. uploadToOssUtil.delete(tourJsonPath);
  215. sceneEditInfoExtService.updateToursByNum(
  216. param.getNum(), Integer.valueOf(CommonStatus.NO.code()));
  217. return ResultData.ok();
  218. }
  219. }