浏览代码

定时任务,补充

lyhzzz 3 年之前
父节点
当前提交
74bb6f3f05

+ 223 - 0
4dkankan-center-api/4dkankan-center-scene-api/src/main/java/com/fdkankan/scene/api/dto/ScenePODTO.java

@@ -0,0 +1,223 @@
+package com.fdkankan.scene.api.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ScenePODTO {
+
+    private Long id;
+
+    /**
+     * 场景名称
+     */
+    private String sceneName;
+
+    /**
+     * 场景描述
+     */
+    private String sceneDec;
+
+    /**
+     * 场景的链接地址
+     */
+    private String webSite;
+
+    /**
+     * 场景缩略图
+     */
+    private String thumb;
+
+    /**
+     * 0表示未建好,1表示建好,-1表示出错,-2表示不要在官网上显示
+     */
+    private Integer sceneStatus;
+
+    /**
+     * 原始的大场景数据(七牛)
+     */
+    private String dataSource;
+
+    /**
+     * 用户表t_user的id
+     */
+    private Long userId;
+
+    /**
+     * 0表示未付款,1表示付款了,-1表示欠费
+     */
+    private Integer payStatus;
+
+    /**
+     * 相机主表t_camera的id
+     */
+    private Long cameraId;
+
+    /**
+     * 手机id
+     */
+    private String phoneId;
+
+    /**
+     * 大场景序号
+     */
+    private String num;
+
+    /**
+     * 大场景的密钥
+     */
+    private String sceneKey;
+
+    /**
+     * 0表示其他,1表示文博,2表示地产,3表示电商,4表示餐饮,5表示家居
+     */
+    private Integer sceneType;
+
+    /**
+     * 1表示推荐,0表示正常
+     */
+    private Integer recommend;
+
+    /**
+     * 浏览次数
+     */
+    private Integer viewCount;
+
+    /**
+     * 版本
+     */
+    private Integer version;
+
+    /**
+     * 表示缩略图是否存在
+     */
+    private Integer thumbStatus;
+
+    /**
+     * 0表示默认,1表示自己上传
+     */
+    private String floorLogo;
+
+    /**
+     * 标记大小
+     */
+    private Integer floorLogoSize;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 0-有效,1-删除
+     */
+    private Integer tbStatus;
+
+    private String hotsIds;
+
+    /**
+     * 表示初始点信息
+     */
+    private String entry;
+
+    /**
+     * 拍摄数量
+     */
+    private Integer shootCount;
+
+    /**
+     * 风格
+     */
+    private Integer style;
+
+    /**
+     * 要gps定位
+     */
+    private String gps;
+
+    /**
+     * 方案:1是双目,2是转台,3是六目,4是八目
+     */
+    private Integer sceneScheme;
+
+    /**
+     * 背景音乐名称
+     */
+    private String bgMusic;
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    private String recStatus;
+
+    /**
+     * 普通录屏文件地址
+     */
+    private String screencapVoiceSrc;
+
+    /**
+     * 旧版录屏数据地址
+     */
+    private String screencapMusic;
+
+    /**
+     * 录屏文件个数
+     */
+    private Integer screencapLen;
+
+    /**
+     * 录音文件地址
+     */
+    private String screencapVoiceSound;
+
+    /**
+     * 选择的类型,sound为screencapVoiceSound,file为screencapVoiceSrc
+     */
+    private String screencapVoiceType;
+
+    /**
+     * 录屏文件地址
+     */
+    private String playData;
+
+    /**
+     * 算法类型
+     */
+    private String algorithm;
+
+    /**
+     * oss服务商
+     */
+    private String oss;
+
+    /**
+     * 重新建模的版本
+     */
+    private Integer floorEditVer;
+
+    /**
+     * 正式发布重新建模的版本
+     */
+    private Integer floorPublishVer;
+
+    /**
+     * 使用容量
+     */
+    private Long space;
+
+    /**
+     * 录屏图片存放文件
+     */
+    private String screencapThumb;
+
+}

+ 8 - 0
4dkankan-center-api/4dkankan-center-scene-api/src/main/java/com/fdkankan/scene/api/feign/SceneUserSceneClient.java

@@ -3,12 +3,15 @@ package com.fdkankan.scene.api.feign;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.api.dto.SceneCntDTO;
 import com.fdkankan.scene.api.dto.SceneInfoDTO;
+import com.fdkankan.scene.api.dto.ScenePODTO;
 import com.fdkankan.scene.api.dto.SceneProDTO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.List;
+
 @FeignClient(value = "4dkankan-center-scene",contextId = "sceneUserSceneClient")
 @RequestMapping("/scene/feign/user/scene")
 public interface SceneUserSceneClient {
@@ -38,4 +41,9 @@ public interface SceneUserSceneClient {
     @PostMapping("/unlockBeyondSpaceScenes")
     ResultData unlockBeyondSpaceScenes(Long usedSpace, Long cameraId);
 
+    @PostMapping("/findAllByYesterday")
+    ResultData<List<ScenePODTO>> findAllByYesterday();
+
+    @PostMapping("/updatePayStatus")
+    ResultData updatePayStatus(String num ,Integer payStatus);
 }

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IVirtualOrderService.java

@@ -70,4 +70,6 @@ public interface IVirtualOrderService extends IService<VirtualOrder> {
     List<ResponseVirtualOrder> queryTrendRechargeOrder(int i);
 
     ResponseVirtualOrder getVoById(Long virtualOrderId);
+
+    void insertVirtualOrderBigScene(Long cameraId, String num, Long userId, Integer country);
 }

+ 17 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/VirtualOrderServiceImpl.java

@@ -442,4 +442,21 @@ public class VirtualOrderServiceImpl extends ServiceImpl<IVirtualOrderMapper, Vi
         param.setOrderBy("trade_time desc");
         return virtualOrderMapper.getListByParam(pageVo,param);
     }
+
+    @Override
+    public void insertVirtualOrderBigScene(Long cameraId, String num, Long userId, Integer country) {
+        VirtualOrder orderEntity = new VirtualOrder();
+        orderEntity.setCameraId(cameraId);
+        orderEntity.setOrderSn(NumberUtils.getOrderSn());
+        orderEntity.setPayType(2);
+        orderEntity.setPayStatus(1);
+        orderEntity.setPoints(Constant.MONEY_SCENE);
+        orderEntity.setStatus(-1);
+        orderEntity.setSceneNum(num);
+        orderEntity.setUserId(userId);
+        orderEntity.setBody("生成大场景");
+        orderEntity.setAbroad(country);
+        orderEntity.setTradeTime(new Date());
+        this.save(orderEntity);
+    }
 }

+ 108 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/task/TaskService.java

@@ -1,21 +1,36 @@
 package com.fdkankan.platform.task;
 
 import com.fdkankan.common.constant.Constant;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.util.PatternUtils;
 import com.fdkankan.platform.goods.entity.CameraDetail;
 import com.fdkankan.platform.goods.entity.CameraSpace;
 import com.fdkankan.platform.goods.service.ICameraDetailService;
 import com.fdkankan.platform.goods.service.ICameraSpaceService;
 import com.fdkankan.platform.order.mapper.IOrderMapper;
+import com.fdkankan.platform.order.service.IVirtualOrderService;
+import com.fdkankan.platform.user.entity.User;
 import com.fdkankan.platform.user.entity.UserIncrement;
 import com.fdkankan.platform.user.service.IUserIncrementService;
+import com.fdkankan.platform.user.service.IUserService;
+import com.fdkankan.scene.api.dto.ScenePODTO;
 import com.fdkankan.scene.api.feign.SceneUserSceneClient;
+import com.fdkankan.sms.SmsService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service
+@Slf4j
 public class TaskService {
 
     @Autowired
@@ -30,11 +45,42 @@ public class TaskService {
     @Autowired
     private IUserIncrementService userIncrementService;
 
+    @Autowired
+    private IVirtualOrderService virtualOrderService;
+
+    @Autowired
+    private IUserService userService;
+    @Autowired
+    private SmsService smsService;
+
     @Resource
     private IOrderMapper orderMapper;
 
-    public void autoDedu() {
+    @Value("${oss.type}")
+    private String ossType;
 
+    public void autoDedu() {
+        ResultData<List<ScenePODTO>> resultData = sceneUserSceneClient.findAllByYesterday();
+        if(resultData.getCode() != ServerCode.SUCCESS.code()){
+            log.error("获取场景数据出错:findAllByYesterday:{}",resultData.getMessage());
+        }
+        List<ScenePODTO> scenes = resultData.getData();
+        for (ScenePODTO scene : scenes){
+            if (scene.getSceneScheme() == 4){
+                continue;
+            }
+            CameraDetail detailEntity = cameraDetailService.getByCameraId(scene.getCameraId());
+            int amount = Integer.parseInt(detailEntity.getBalance()) - Constant.MONEY_SCENE;
+            if (amount < 0){
+                log.warn("余额不足,Num:" + scene.getNum());
+                sceneUserSceneClient.updatePayStatus(scene.getNum(),-1);
+            }else{
+                sceneUserSceneClient.updatePayStatus(scene.getNum(),1);
+                detailEntity.setBalance(String.valueOf(amount));
+                cameraDetailService.updateById(detailEntity);
+                virtualOrderService.insertVirtualOrderBigScene(scene.getCameraId(), scene.getNum(), detailEntity.getUserId(), detailEntity.getCountry());
+            }
+        }
     }
 
     public void autoUpdateOrderStatus() {
@@ -71,8 +117,68 @@ public class TaskService {
     }
 
     public void incrementExpire() {
+        //查找所有刚过期的会员权益
+        List<UserIncrement> expireData = userIncrementService.findExpireData();
+        if(expireData != null && expireData.size() > 0){
+            for (UserIncrement userIncrementEntity : expireData) {
+                //调用接触绑定方法,并封存超过容量的场景,但是不解除绑定的相机
+                userIncrementService.unbindCamera(userIncrementEntity.getUserId(), userIncrementEntity.getId(), false,null,userIncrementEntity);
+                //删除已经过期的会员权益
+                userIncrementEntity.setIsExpired(1);
+                userIncrementService.updateById(userIncrementEntity);
+            }
+        }
     }
 
-    public void incrementExpireSendSms() {
+    public void incrementExpireSendSms() throws Exception {
+        //查找所有即将到期的会员权益
+        List<UserIncrement> expireData30 = userIncrementService.findReadyExpire(30, 0);
+        List<UserIncrement> expireData15 = userIncrementService.findReadyExpire(15, 0);
+        List<UserIncrement> expireData5 = userIncrementService.findReadyExpire(5, 0);
+        List<UserIncrement> expireData = userIncrementService.findReadyExpire(-1, 1);
+
+        Map<Long, Integer> userIds = new HashMap<>();
+        for (UserIncrement userIncrementEntity : expireData30) {
+            if(userIncrementEntity.getUserId() != null){
+                userIds.put(userIncrementEntity.getUserId(), 30);
+            }
+        }
+
+        for (UserIncrement userIncrementEntity : expireData15) {
+            if(userIncrementEntity.getUserId() != null){
+                userIds.put(userIncrementEntity.getUserId(), 15);
+            }
+        }
+
+        for (UserIncrement userIncrementEntity : expireData5) {
+            if(userIncrementEntity.getUserId() != null){
+                userIds.put(userIncrementEntity.getUserId(), 5);
+            }
+        }
+
+        for (UserIncrement userIncrementEntity : expireData) {
+            if(userIncrementEntity.getUserId() != null){
+                userIds.put(userIncrementEntity.getUserId(), -1);
+            }
+        }
+
+        User userEntity = null;
+        String cnCode = "SMS_216275556";
+        String expireCode = "SMS_216425565";
+        for (Long userId : userIds.keySet()) {
+            userEntity = userService.getById(userId);
+            if(userEntity != null){
+                if (!"s3".equals(ossType)){
+                    if (!PatternUtils.isPhoneNumber(userEntity.getUserName())){
+                        throw new BusinessException(ErrorCode.FAILURE_CODE_3013);
+                    }
+                    if(userIds.get(userId) == -1){
+                        smsService.sendSms(userEntity.getUserName(), "{\"time\":\"" + userIds.get(userId) + "\"}", expireCode);
+                        continue;
+                    }
+                    smsService.sendSms(userEntity.getUserName(), "{\"time\":\"" + userIds.get(userId) + "\"}", cnCode);
+                }
+            }
+        }
     }
 }

+ 7 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/mapper/IUserIncrementMapper.java

@@ -19,6 +19,12 @@ import java.util.List;
 @Mapper
 public interface IUserIncrementMapper extends BaseMapper<UserIncrement> {
 
-    @Select("SELECT * FROM t_user_increment x LEFT JOIN t_camera c ON x.camera_id = c.id and c.rec_status = 'A' WHERE c.child_name = #{childName} AND x.rec_status = 'A' ")
+    @Select("SELECT * FROM t_user_increment x LEFT JOIN t_camera c ON x.camera_id = c.id and c.tb_status = 0 WHERE c.child_name = #{childName} AND x.tb_status = 0 ")
     List<UserIncrement> getByChildName(@Param("childName")String childName);
+
+    @Select("SELECT * FROM `t_user_increment` WHERE DATEDIFF(increment_end_time,NOW()) <= -1 AND is_expired = 0 AND tb_status = 0 ")
+    List<UserIncrement> findExpireData();
+
+    @Select("SELECT * FROM `t_user_increment` WHERE DATEDIFF(increment_end_time,NOW()) = #{date} AND is_expired = #{isExpired} AND tb_status = 0 ")
+    List<UserIncrement> findReadyExpire(@Param("date")Integer date, @Param("isExpired")Integer isExpired);
 }

+ 4 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/IUserIncrementService.java

@@ -38,4 +38,8 @@ public interface IUserIncrementService extends IService<UserIncrement> {
     ResponseUserIncrement findById(RequestUserIncrement param, String token);
 
     String insertIncrementls(RequestUserIncrement param,String token) ;
+
+    List<UserIncrement> findExpireData();
+
+    List<UserIncrement> findReadyExpire(Integer date, Integer isExpired);
 }

+ 10 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserIncrementServiceImpl.java

@@ -287,4 +287,14 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         incrementLogService.save(tmIncrementLogEntity);
         return ServerCode.SUCCESS.message();
     }
+
+    @Override
+    public List<UserIncrement> findExpireData() {
+        return userIncrementMapper.findExpireData();
+    }
+
+    @Override
+    public List<UserIncrement> findReadyExpire(Integer date, Integer isExpired) {
+        return userIncrementMapper.findReadyExpire(date,isExpired);
+    }
 }

+ 27 - 8
4dkankan-center-scene/src/main/java/com/fdkankan/scene/feign/UserSceenFeign.java

@@ -3,18 +3,18 @@ package com.fdkankan.scene.feign;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.api.dto.SceneCntDTO;
 import com.fdkankan.scene.api.dto.SceneInfoDTO;
+import com.fdkankan.scene.api.dto.ScenePODTO;
 import com.fdkankan.scene.api.dto.SceneProDTO;
-import com.fdkankan.scene.service.ISceneDownloadLogService;
-import com.fdkankan.scene.service.ISceneEditInfoService;
-import com.fdkankan.scene.service.ISceneProAppService;
-import com.fdkankan.scene.service.IUserSceneService;
+import com.fdkankan.scene.entity.ScenePO;
+import com.fdkankan.scene.service.*;
 import com.fdkankan.scene.vo.SceneInfoParamVO;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 提供计算调用
@@ -30,6 +30,8 @@ public class UserSceenFeign {
     ISceneDownloadLogService sceneDownloadLogService;
     @Autowired
     ISceneEditInfoService sceneEditInfoService;
+    @Autowired
+    ISceneService sceneService;
 
     @PostMapping("/getSceneCnt")
     ResultData<SceneCntDTO> getSceneCnt(@RequestParam(value = "userId") Long userId, Long cameraId){
@@ -75,5 +77,22 @@ public class UserSceenFeign {
         sceneProAppService.unlockBeyondSpaceScenes(usedSpace,cameraId);
         return ResultData.ok();
     }
+    @PostMapping("/findAllByYesterday")
+    ResultData<List<ScenePO>> findAllByYesterday() throws Exception{
+        List<ScenePO> allByYesterday = sceneService.findAllByYesterday();
+        List<ScenePODTO> List = new ArrayList<>();
+        for (ScenePO scenePO : allByYesterday) {
+            ScenePODTO scenePODTO = new ScenePODTO();
+            BeanUtils.copyProperties(scenePO,scenePODTO);
+            List.add(scenePODTO);
+        }
+        return ResultData.ok(List);
+    }
+
+    @PostMapping("/updatePayStatus")
+    ResultData updatePayStatus(String num ,Integer payStatus){
+        sceneService.updatePayStatus(num,payStatus);
+        return ResultData.ok();
+    }
 }
 

+ 3 - 4
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneService.java

@@ -3,6 +3,7 @@ package com.fdkankan.scene.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.entity.Scene;
 import com.fdkankan.scene.entity.ScenePO;
 import com.fdkankan.scene.entity.SceneProPO;
@@ -10,13 +11,9 @@ import com.fdkankan.scene.vo.BaseSceneParamVO;
 import com.fdkankan.scene.vo.SceneEditParamVO;
 import com.fdkankan.scene.vo.SceneParamVO;
 import com.fdkankan.scene.vo.SceneVO;
-import com.fdkankan.common.response.ResultData;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -73,6 +70,8 @@ public interface ISceneService extends IService<Scene> {
 
     void updateStatus(String sceneNum, int status);
 
+    void updatePayStatus(String sceneNum, int status);
+
     void updateTime(String sceneNum, Long space, int payStatus);
 
     ResultData addHotMediaInfo(SceneEditParamVO base) throws Exception;

+ 3 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneServiceImpl.java

@@ -874,6 +874,9 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
     public void updateStatus(String sceneNum, int status) {
         this.update(new LambdaUpdateWrapper<Scene>().eq(Scene::getNum, sceneNum).set(Scene::getSceneStatus, status));
     }
+    public void updatePayStatus(String sceneNum, int status) {
+        this.update(new LambdaUpdateWrapper<Scene>().eq(Scene::getNum, sceneNum).set(Scene::getPayStatus, status));
+    }
 
     @Override
     public void updateTime(String sceneNum, Long space, int payStatus) {