Преглед изворни кода

更新检查广联达剩余积分

xiewj пре 2 година
родитељ
комит
72deb3469c
24 измењених фајлова са 564 додато и 43 уклоњено
  1. 7 0
      pom.xml
  2. 15 0
      src/main/java/com/fdkk/bim/client/DingTalkClient.java
  3. 3 1
      src/main/java/com/fdkk/bim/config/BimConfig.java
  4. 2 17
      src/main/java/com/fdkk/bim/config/BimFaceConfig.java
  5. 1 1
      src/main/java/com/fdkk/bim/controller/CallBackController.java
  6. 1 3
      src/main/java/com/fdkk/bim/controller/FileController.java
  7. 5 7
      src/main/java/com/fdkk/bim/controller/TestController.java
  8. 13 0
      src/main/java/com/fdkk/bim/entity/dto/DingTalkDTO.java
  9. 16 0
      src/main/java/com/fdkk/bim/entity/dto/DingTalkTextDTO.java
  10. 1 1
      src/main/java/com/fdkk/bim/entity/po/BimFaceEntity.java
  11. 18 0
      src/main/java/com/fdkk/bim/entity/entity/IntegralInfoEntity.java
  12. 1 1
      src/main/java/com/fdkk/bim/mapper/BimFaceMapper.java
  13. 15 0
      src/main/java/com/fdkk/bim/mapper/IntegralInfoMapper.java
  14. 58 0
      src/main/java/com/fdkk/bim/runner/InitApplication.java
  15. 2 3
      src/main/java/com/fdkk/bim/service/BimFaceService.java
  16. 16 0
      src/main/java/com/fdkk/bim/service/IntegralInfoService.java
  17. 6 6
      src/main/java/com/fdkk/bim/service/impl/BimFaceServiceImpl.java
  18. 69 0
      src/main/java/com/fdkk/bim/service/impl/IntegralInfoServiceImpl.java
  19. 29 2
      src/main/java/com/fdkk/bim/task/BizTask.java
  20. 56 0
      src/main/java/com/fdkk/bim/util/BimFaceCheckUtil.java
  21. 1 1
      src/main/java/com/fdkk/bim/util/BimZipUtil.java
  22. 224 0
      src/main/java/com/fdkk/bim/util/DateUtils.java
  23. 2 0
      src/main/resources/application-dev.yml
  24. 3 0
      src/main/resources/application-uat.yml

+ 7 - 0
pom.xml

@@ -25,10 +25,16 @@
         <minio.version>8.2.2</minio.version>
         <druid.version>1.2.11</druid.version>
         <pagehelper.boot.version>1.3.1</pagehelper.boot.version>
+        <sdk-version>1.4.53</sdk-version>
 
     </properties>
     <dependencies>
         <dependency>
+            <groupId>org.seleniumhq.selenium</groupId>
+            <artifactId>selenium-java</artifactId>
+            <version>3.141.59</version>
+        </dependency>
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
@@ -132,6 +138,7 @@
             <version>1.16.18</version>
             <scope>provided</scope>
         </dependency>
+
         <dependency>
             <groupId>com.dtflys.forest</groupId>
             <artifactId>forest-spring-boot-starter</artifactId>

+ 15 - 0
src/main/java/com/fdkk/bim/client/DingTalkClient.java

@@ -0,0 +1,15 @@
+package com.fdkk.bim.client;
+
+import com.dtflys.forest.annotation.JSONBody;
+import com.dtflys.forest.annotation.Post;
+import com.fdkk.bim.entity.dto.DingTalkDTO;
+
+/**
+ * @author Xiewj
+ * @date 2022/10/18
+ */
+public interface DingTalkClient {
+
+   @Post("https://oapi.dingtalk.com/robot/send?access_token=5da78d1964ad5157ab09dc6d6ad6ed58a3298c5a82b4efd4b041e7cd18c6d7f9")
+   void pushData(@JSONBody DingTalkDTO dto);
+}

+ 3 - 1
src/main/java/com/fdkk/bim/config/BimConfig.java

@@ -19,8 +19,10 @@ public class BimConfig {
 
     public  String defaultFolder;
 
-
     public  String webSite;
 
+    public   String chromeDriver;
+
+    public   int mixIntegral;
 
 }

+ 2 - 17
src/main/java/com/fdkk/bim/config/BimFaceConfig.java

@@ -13,6 +13,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -25,11 +26,10 @@ import java.util.concurrent.TimeUnit;
 @Slf4j
 public class BimFaceConfig {
 
-    @Autowired
+    @Resource
     BimFaceClient bimFaceClient;
     @Autowired
     RedisUtil cache;
-
       /**
        * APP证书
        *
@@ -37,23 +37,8 @@ public class BimFaceConfig {
        */
       // 通过(bimface.com)创建应用,并拿到自己的appKey和appSecret
     public String appKey;
-
     public String appSecret;
 
-
-    @PostConstruct
-    public void init(){
-       String Authorization = Base64.encode((appKey+":"+appSecret).getBytes());
-        if (cache.hasKey("bim:token")){
-                cache.get("bim:token");
-        }else {
-            BimResult<AccessTokenBean> token = bimFaceClient.getToken("Basic " + Authorization);
-            if (ObjectUtil.isNotNull(token)&&token.getCode().equals("success")){
-                log.info("token,-{}",token.getData());
-                cache.set("bim:token",token.getData().getToken(),TimeUnit.SECONDS.convert(1,TimeUnit.DAYS));
-            }
-        }
-    }
     public void reload(){
         String Authorization = Base64.encode((appKey+":"+appSecret).getBytes());
         BimResult<AccessTokenBean> token = bimFaceClient.getToken("Basic " + Authorization);

+ 1 - 1
src/main/java/com/fdkk/bim/controller/CallBackController.java

@@ -6,7 +6,7 @@ import com.fdkk.bim.base.Result;
 import com.fdkk.bim.client.BimCallBackClient;
 import com.fdkk.bim.config.BimFaceConfig;
 import com.fdkk.bim.entity.dto.BimCallBackDTO;
-import com.fdkk.bim.entity.po.BimFaceEntity;
+import com.fdkk.bim.entity.entity.BimFaceEntity;
 import com.fdkk.bim.service.BimFaceService;
 import lombok.extern.slf4j.Slf4j;
 import com.fdkk.bim.config.BimConfig;

+ 1 - 3
src/main/java/com/fdkk/bim/controller/FileController.java

@@ -9,12 +9,11 @@ import com.fdkk.bim.bimEntity.dto.SourceDTO;
 import com.fdkk.bim.bimEntity.dto.TranslateDTO;
 import com.fdkk.bim.bimEntity.vo.DatabagDerivativeBean;
 import com.fdkk.bim.client.BimFaceClient;
-import com.fdkk.bim.entity.po.BimFaceEntity;
+import com.fdkk.bim.entity.entity.BimFaceEntity;
 import com.fdkk.bim.service.BimFaceService;
 import com.fdkk.bim.base.BaseController;
 import com.fdkk.bim.base.Result;
 import com.fdkk.bim.bimEntity.BimResult;
-import com.fdkk.bim.bimEntity.dto.*;
 import com.fdkk.bim.bimEntity.vo.FileBean;
 import com.fdkk.bim.config.BimConfig;
 import com.fdkk.bim.config.BimFaceConfig;
@@ -22,7 +21,6 @@ import com.fdkk.bim.entity.dto.BimUploadDTO;
 import com.fdkk.bim.entity.vo.BimFaceVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.util.HashMap;

+ 5 - 7
src/main/java/com/fdkk/bim/controller/TestController.java

@@ -1,10 +1,9 @@
 package com.fdkk.bim.controller;
 
-import com.fdkk.bim.bimEntity.BimResult;
-import com.fdkk.bim.bimEntity.vo.ProjectBean;
 import com.fdkk.bim.client.BimFaceClient;
-import com.fdkk.bim.entity.po.BimFaceEntity;
+import com.fdkk.bim.entity.entity.BimFaceEntity;
 import com.fdkk.bim.service.BimFaceService;
+import com.fdkk.bim.util.BimFaceCheckUtil;
 import lombok.extern.slf4j.Slf4j;
 import com.fdkk.bim.base.BaseController;
 import com.fdkk.bim.base.Result;
@@ -13,7 +12,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.util.List;
 
 /**
  * @author Xiewj
@@ -33,9 +31,9 @@ public class TestController extends BaseController {
     @Autowired
     BimFaceClient bimFaceClient;
     @PostMapping("/save")
-    public Result translate() {
-        BimResult<List<ProjectBean>> uat1 = bimFaceClient.getProjectInfo("uat1");
-        return success(uat1);
+    public Result translate() throws InterruptedException {
+        BimFaceCheckUtil.checkIntegral();
+        return success();
     }
 
     @PostMapping("/send")

+ 13 - 0
src/main/java/com/fdkk/bim/entity/dto/DingTalkDTO.java

@@ -0,0 +1,13 @@
+package com.fdkk.bim.entity.dto;
+
+import lombok.Data;
+
+/**
+ * @author Xiewj
+ * @date 2022/10/18
+ */
+@Data
+public class DingTalkDTO {
+   private String msgtype ="text";
+   private DingTalkTextDTO text;
+}

+ 16 - 0
src/main/java/com/fdkk/bim/entity/dto/DingTalkTextDTO.java

@@ -0,0 +1,16 @@
+package com.fdkk.bim.entity.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author Xiewj
+ * @date 2022/10/18
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class DingTalkTextDTO {
+   private String content;
+}

+ 1 - 1
src/main/java/com/fdkk/bim/entity/po/BimFaceEntity.java

@@ -1,4 +1,4 @@
-package com.fdkk.bim.entity.po;
+package com.fdkk.bim.entity.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;

+ 18 - 0
src/main/java/com/fdkk/bim/entity/entity/IntegralInfoEntity.java

@@ -0,0 +1,18 @@
+package com.fdkk.bim.entity.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fdkk.bim.base.BaseEntity;
+import lombok.Data;
+
+/**
+ * @author Xiewj
+ * @date 2022/10/9
+ */
+@Data
+@TableName("t_integral_info")
+public class IntegralInfoEntity extends BaseEntity {
+
+    private int pushCount;
+
+    private int integral;
+}

+ 1 - 1
src/main/java/com/fdkk/bim/mapper/BimFaceMapper.java

@@ -1,7 +1,7 @@
 package com.fdkk.bim.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.fdkk.bim.entity.po.BimFaceEntity;
+import com.fdkk.bim.entity.entity.BimFaceEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Component;
 

+ 15 - 0
src/main/java/com/fdkk/bim/mapper/IntegralInfoMapper.java

@@ -0,0 +1,15 @@
+package com.fdkk.bim.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkk.bim.entity.entity.IntegralInfoEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author Xiewj
+ * @date 2022/10/9
+ */
+@Mapper
+@Component("IntegralInfoMapper")
+public interface IntegralInfoMapper extends BaseMapper<IntegralInfoEntity> {
+}

+ 58 - 0
src/main/java/com/fdkk/bim/runner/InitApplication.java

@@ -0,0 +1,58 @@
+package com.fdkk.bim.runner;
+
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.util.ObjectUtil;
+import com.fdkankan.redis.util.RedisUtil;
+import com.fdkk.bim.bimEntity.BimResult;
+import com.fdkk.bim.bimEntity.vo.AccessTokenBean;
+import com.fdkk.bim.client.BimFaceClient;
+import com.fdkk.bim.config.BimFaceConfig;
+import com.fdkk.bim.service.BimFaceService;
+import jdk.nashorn.internal.runtime.logging.Logger;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author Xiewj
+ * @date 2022/10/18
+ */
+@Component
+@Slf4j
+public class InitApplication implements ApplicationRunner {
+   @Resource
+   BimFaceClient bimFaceClient;
+   @Autowired
+   RedisUtil cache;
+
+   @Resource
+   BimFaceConfig bimFaceConfig;
+
+   @Resource
+   BimFaceService bimFaceService;
+
+   @Override
+   public void run(ApplicationArguments args) throws Exception {
+      //初始化token
+      String Authorization = Base64.encode((bimFaceConfig.getAppKey()+":"+bimFaceConfig.getAppSecret()).getBytes());
+      if (cache.hasKey("bim:token")){
+         cache.get("bim:token");
+      }else {
+         BimResult<AccessTokenBean> token = bimFaceClient.getToken("Basic " + Authorization);
+         if (ObjectUtil.isNotNull(token)&&token.getCode().equals("success")){
+            log.info("token,-{}",token.getData());
+            cache.set("bim:token",token.getData().getToken(), TimeUnit.SECONDS.convert(1,TimeUnit.DAYS));
+         }
+      }
+      //初始化现有业务数量
+      long allCount = bimFaceService.getAllCount();
+      if (!cache.hasKey("bim:count")){
+         cache.set("bim:count", String.valueOf(allCount));
+      }
+   }
+}

+ 2 - 3
src/main/java/com/fdkk/bim/service/BimFaceService.java

@@ -2,9 +2,8 @@ package com.fdkk.bim.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkk.bim.entity.dto.BimUploadDTO;
-import com.fdkk.bim.entity.po.BimFaceEntity;
+import com.fdkk.bim.entity.entity.BimFaceEntity;
 import com.fdkk.bim.enums.BusinessStatus;
-import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.util.List;
@@ -16,7 +15,7 @@ import java.util.List;
 public interface BimFaceService extends IService<BimFaceEntity> {
 
     BimFaceEntity getByFiledId(String fileId);
-
+    long getAllCount();
 
 
     List<BimFaceEntity> getByUploadStatus(String status);

+ 16 - 0
src/main/java/com/fdkk/bim/service/IntegralInfoService.java

@@ -0,0 +1,16 @@
+package com.fdkk.bim.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkk.bim.entity.entity.IntegralInfoEntity;
+
+/**
+ * @author Xiewj
+ * @date 2022/10/9
+ */
+public interface IntegralInfoService extends IService<IntegralInfoEntity> {
+
+        void CheckData(String integral )  ;
+
+
+        IntegralInfoEntity findOneByIntegral(Integer integral);
+}

+ 6 - 6
src/main/java/com/fdkk/bim/service/impl/BimFaceServiceImpl.java

@@ -1,6 +1,5 @@
 package com.fdkk.bim.service.impl;
 
-import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpUtil;
@@ -16,13 +15,12 @@ import com.fdkk.bim.bimEntity.vo.DatabagDerivativeBean;
 import com.fdkk.bim.client.BimFaceClient;
 import com.fdkk.bim.constant.HttpStatus;
 import com.fdkk.bim.entity.dto.BimCallBackDTO;
-import com.fdkk.bim.entity.po.BimFaceEntity;
+import com.fdkk.bim.entity.entity.BimFaceEntity;
 import com.fdkk.bim.exception.ServiceException;
 import com.fdkk.bim.mapper.BimFaceMapper;
 import com.fdkk.bim.service.BimFaceService;
 import lombok.extern.slf4j.Slf4j;
 import com.fdkk.bim.bimEntity.BimResult;
-import com.fdkk.bim.bimEntity.dto.*;
 import com.fdkk.bim.bimEntity.vo.FileBean;
 import com.fdkk.bim.bimEntity.vo.ProjectBean;
 import com.fdkk.bim.client.BimCallBackClient;
@@ -30,13 +28,10 @@ import com.fdkk.bim.config.BimConfig;
 import com.fdkk.bim.entity.dto.BimUploadDTO;
 import com.fdkk.bim.enums.BusinessStatus;
 import com.fdkk.bim.util.BimZipUtil;
-import com.fdkk.bim.util.FileUploadUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.io.File;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
@@ -106,6 +101,11 @@ public class BimFaceServiceImpl extends ServiceImpl<BimFaceMapper, BimFaceEntity
     }
 
     @Override
+    public long getAllCount() {
+        return count();
+    }
+
+    @Override
     public BimFaceEntity uploadFile(BimUploadDTO bimUploadDTO) throws IOException {
         if (StrUtil.isEmpty(bimUploadDTO.getFileUrl())||StrUtil.isEmpty(bimUploadDTO.getFileName())||!bimUploadDTO.getFileName().endsWith("ifc")){
             throw new ServiceException(HttpStatus.e3100);

+ 69 - 0
src/main/java/com/fdkk/bim/service/impl/IntegralInfoServiceImpl.java

@@ -0,0 +1,69 @@
+package com.fdkk.bim.service.impl;
+
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkk.bim.client.DingTalkClient;
+import com.fdkk.bim.config.BimConfig;
+import com.fdkk.bim.entity.dto.DingTalkDTO;
+import com.fdkk.bim.entity.dto.DingTalkTextDTO;
+import com.fdkk.bim.entity.entity.IntegralInfoEntity;
+import com.fdkk.bim.mapper.IntegralInfoMapper;
+import com.fdkk.bim.service.IntegralInfoService;
+import com.fdkk.bim.util.DateUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @author Xiewj
+ * @date 2022/10/9
+ */
+@Slf4j
+@Service
+public class IntegralInfoServiceImpl extends ServiceImpl<IntegralInfoMapper, IntegralInfoEntity> implements IntegralInfoService {
+    @Resource
+    BimConfig bimConfig;
+
+    @Override
+    public IntegralInfoEntity findOneByIntegral(Integer integral) {
+        LambdaQueryWrapper<IntegralInfoEntity> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(IntegralInfoEntity::getIntegral,integral);
+        return getOne(wrapper);
+    }
+
+    @Override
+    public void CheckData(String integral)   {
+        if (StrUtil.isNotEmpty(integral)&& NumberUtil.isNumber(integral)){
+            int i = NumberUtil.parseInt(integral);
+            IntegralInfoEntity integralInfoEntity = findOneByIntegral(i);
+            if (ObjectUtil.isNull(integralInfoEntity) &&i<bimConfig.getMixIntegral()){
+                DingTalkClient dingTalkClient= SpringUtil.getBean(DingTalkClient.class);
+                DingTalkDTO dto=new DingTalkDTO();
+                dto.setText(new DingTalkTextDTO("BIM:广联达剩余积分小于"+bimConfig.getMixIntegral()+"剩余积分:"+i));
+                dingTalkClient.pushData(dto);
+                integralInfoEntity =new IntegralInfoEntity();
+                integralInfoEntity.setIntegral(i);
+                integralInfoEntity.setPushCount(1);
+                save(integralInfoEntity);
+            }else if (ObjectUtil.isNotNull(integralInfoEntity) &&i<bimConfig.getMixIntegral() && integralInfoEntity.getPushCount()<=3){
+                long betweenHour = DateUtils.getDatePoorUnit(DateUtil.date(), integralInfoEntity.getCreateTime(), DateUnit.HOUR);
+                if (betweenHour>8L){
+                    DingTalkClient dingTalkClient= SpringUtil.getBean(DingTalkClient.class);
+                    DingTalkDTO dto=new DingTalkDTO();
+                    dto.setText(new DingTalkTextDTO("BIM:广联达剩余积分小于"+bimConfig.getMixIntegral()+"剩余积分:"+i));
+                    dingTalkClient.pushData(dto);
+                    integralInfoEntity.setPushCount(integralInfoEntity.getPushCount()+1);
+                    updateById(integralInfoEntity);
+                }
+            }
+        }
+    }
+}

+ 29 - 2
src/main/java/com/fdkk/bim/task/BizTask.java

@@ -1,20 +1,25 @@
 package com.fdkk.bim.task;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.fdkankan.redis.util.RedisUtil;
 import com.fdkk.bim.bimEntity.vo.DatabagDerivativeBean;
 import com.fdkk.bim.bimEntity.vo.FileStatusBean;
 import com.fdkk.bim.bimEntity.vo.FileTranslateBean;
 import com.fdkk.bim.client.BimFaceClient;
-import com.fdkk.bim.entity.po.BimFaceEntity;
+import com.fdkk.bim.entity.entity.BimFaceEntity;
 import com.fdkk.bim.enums.BusinessStatus;
 import com.fdkk.bim.service.BimFaceService;
+import com.fdkk.bim.service.IntegralInfoService;
+import com.fdkk.bim.util.BimFaceCheckUtil;
 import lombok.extern.slf4j.Slf4j;
 import com.fdkk.bim.bimEntity.BimResult;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @author Xiewj
@@ -27,9 +32,13 @@ public class BizTask {
    BimFaceService bimFaceService;
     @Resource
     BimFaceClient bimFaceClient;
+    @Autowired
+    RedisUtil cache;
+    @Resource
+    IntegralInfoService integralInfoService;
 
    @Scheduled(initialDelay=10*1000, fixedDelay=1000*30)
-   public void bizHandleTask(){
+   public void bizHandleTask()  {
       List<BimFaceEntity> faceEntities = bimFaceService.getByCallType("ne", "done","error");
       log.info("定时处理SIZE:{}",faceEntities.size());
       for (BimFaceEntity bimFace : faceEntities) {
@@ -109,4 +118,22 @@ public class BizTask {
       }
 
    }
+
+
+    @Scheduled(initialDelay=10*1000, fixedDelay=1000*30)
+    public void checkIntegral() throws InterruptedException {
+        long allCount = bimFaceService.getAllCount();
+        if (cache.hasKey("bim:count")){
+            String s = cache.get("bim:count");
+            if (Integer.valueOf(s)<allCount){
+                String integral = BimFaceCheckUtil.checkIntegral();
+                integralInfoService.CheckData(integral);
+                cache.set("bim:count", String.valueOf(allCount));
+            }
+        }else {
+                String integral = BimFaceCheckUtil.checkIntegral();
+                integralInfoService.CheckData(integral);
+                cache.set("bim:count", String.valueOf(allCount));
+        }
+    }
 }

+ 56 - 0
src/main/java/com/fdkk/bim/util/BimFaceCheckUtil.java

@@ -0,0 +1,56 @@
+package com.fdkk.bim.util;
+
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import cn.hutool.system.SystemUtil;
+import com.fdkk.bim.client.DingTalkClient;
+import com.fdkk.bim.config.BimConfig;
+import com.fdkk.bim.entity.dto.DingTalkDTO;
+import com.fdkk.bim.entity.dto.DingTalkTextDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.chrome.ChromeOptions;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author Xiewj
+ * @date 2022/10/18
+ */
+@Slf4j
+public class BimFaceCheckUtil {
+
+    public static String checkIntegral () throws InterruptedException {
+        BimConfig bimConfig =SpringUtil.getBean(BimConfig.class);
+        System.setProperty("webdriver.chrome.driver", bimConfig.getChromeDriver());
+        ChromeOptions options=new ChromeOptions();
+        options.addArguments("--headless");
+        options.addArguments("--no-sandbox");
+        options.addArguments("--disable-gpu");
+        options.addArguments("--disable-dev-shm-usage");   //初始化一个chrome浏览器实例
+        WebDriver driver = new ChromeDriver(options);
+        //最大化窗口
+//        driver.manage().window().maximize();
+        //设置隐性等待时间
+        driver.manage().timeouts().implicitlyWait(2, TimeUnit.MINUTES);
+        //打开百度
+        driver.get("https://bimface.com/user-console/login");
+        driver.findElement(By.xpath("//*[@id=\"container-login\"]/div/div[3]/div[1]/div[2]/input")).sendKeys("18666146602");
+        driver.findElement(By.xpath("//*[@id=\"container-login\"]/div/div[3]/div[1]/div[4]/input")).sendKeys("4dage168");
+        driver.findElement(By.xpath("//*[@id=\"container-login\"]/div/div[3]/button")).click();
+        Thread.sleep(5000);
+        new WebDriverWait(driver, 5).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"app\"]/section/header/div/ul/div/li[2]"))).click();
+        Thread.sleep(5000);
+        String integral = driver.findElement(By.xpath("//*[@id=\"app\"]/section/section/main/div[1]/div[2]/div/div/div[1]/div[2]/span[2]")).getText();
+        log.info("剩余积分{}",integral);
+        driver.quit();
+        return integral;
+    }
+}

+ 1 - 1
src/main/java/com/fdkk/bim/util/BimZipUtil.java

@@ -6,7 +6,7 @@ import cn.hutool.core.util.ZipUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.fdkankan.fyun.config.FYunFileConfig;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
-import com.fdkk.bim.entity.po.BimFaceEntity;
+import com.fdkk.bim.entity.entity.BimFaceEntity;
 import lombok.extern.slf4j.Slf4j;
 import com.fdkk.bim.config.BimConfig;
 

+ 224 - 0
src/main/java/com/fdkk/bim/util/DateUtils.java

@@ -0,0 +1,224 @@
+package com.fdkk.bim.util;
+
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.time.DateFormatUtils;
+
+import java.lang.management.ManagementFactory;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.*;
+import java.util.Date;
+import java.util.TimeZone;
+
+/**
+ * 时间工具类
+ *
+ * @author fdkk
+ */
+@Slf4j
+public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
+    public static String YYYY = "yyyy";
+
+    public static String YYYY_MM = "yyyy-MM";
+
+    private static String YYYY_MM_DD = "yyyy-MM-dd";
+
+    private static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
+
+    public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
+
+    private static String[] parsePatterns = {
+            "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
+            "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
+            "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
+
+    /**
+     * 获取当前Date型日期
+     *
+     * @return Date() 当前日期
+     */
+    public static Date getNowDate() {
+        return new Date();
+    }
+
+    /**
+     * 把时间戳转成北京时间的字符串表示
+     *
+     * @param input
+     * @return
+     */
+    public static String convert2CST(long input) {
+        SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        dff.setTimeZone(TimeZone.getTimeZone("GMT+08"));
+
+        try {
+            return dff.format(new Date(input));
+        } catch (Exception e) {
+            DateUtils.log.error("convert2CST meet exception.", e);
+        }
+
+        return "";
+    }
+
+    /**
+     * 获取当前日期, 默认格式为yyyy-MM-dd
+     *
+     * @return String
+     */
+    public static String getDate()
+    {
+        return dateTimeNow(YYYY_MM_DD);
+    }
+
+    public static final String getTime()
+    {
+        return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
+    }
+
+    public static final String dateTimeNow()
+    {
+        return dateTimeNow(YYYYMMDDHHMMSS);
+    }
+
+    public static final String dateTimeNow(final String format)
+    {
+        return parseDateToStr(format, new Date());
+    }
+
+    public static final String dateTime(final Date date)
+    {
+        return parseDateToStr(YYYY_MM_DD, date);
+    }
+
+    public static final String parseDateToStr(final String format, final Date date)
+    {
+        return new SimpleDateFormat(format).format(date);
+    }
+
+    public static final Date dateTime(final String format, final String ts)
+    {
+        try
+        {
+            return new SimpleDateFormat(format).parse(ts);
+        }
+        catch (ParseException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 日期路径 即年/月/日 如2018/08/08
+     */
+    public static final String datePath()
+    {
+        Date now = new Date();
+        return DateFormatUtils.format(now, "yyyy/MM/dd");
+    }
+
+    /**
+     * 日期路径 即年/月/日 如20180808
+     */
+    public static final String dateTime()
+    {
+        Date now = new Date();
+        return DateFormatUtils.format(now, "yyyyMMdd");
+    }
+
+    /**
+     * 日期型字符串转化为日期 格式
+     */
+    public static Date parseDate(Object str)
+    {
+        if (str == null)
+        {
+            return null;
+        }
+        try
+        {
+            return parseDate(str.toString(), parsePatterns);
+        }
+        catch (ParseException e)
+        {
+            return null;
+        }
+    }
+
+    /**
+     * 获取服务器启动时间
+     */
+    public static Date getServerStartDate()
+    {
+        long time = ManagementFactory.getRuntimeMXBean().getStartTime();
+        return new Date(time);
+    }
+
+    /**
+     * 计算两个时间差
+     */
+    public static String getDatePoor(Date endDate, Date nowDate)
+    {
+        long nd = 1000 * 24 * 60 * 60;
+        long nh = 1000 * 60 * 60;
+        long nm = 1000 * 60;
+        // long ns = 1000;
+        // 获得两个时间的毫秒时间差异
+        long diff = endDate.getTime() - nowDate.getTime();
+        // 计算差多少天
+        long day = diff / nd;
+        // 计算差多少小时
+        long hour = diff % nd / nh;
+        // 计算差多少分钟
+        long min = diff % nd % nh / nm;
+        // 计算差多少秒//输出结果
+        // long sec = diff % nd % nh % nm / ns;
+        return day + "天" + hour + "小时" + min + "分钟";
+    }
+    /**
+     * 增加 LocalDateTime ==> Date
+     */
+    public static Date toDate(LocalDateTime temporalAccessor)
+    {
+        ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault());
+        return Date.from(zdt.toInstant());
+    }
+
+    /**
+     * 增加 LocalDate ==> Date
+     */
+    public static Date toDate(LocalDate temporalAccessor)
+    {
+        LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0));
+        ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
+        return Date.from(zdt.toInstant());
+    }
+
+    public static long getDatePoorUnit(Date endDate, Date nowDate, DateUnit unit) {
+        // 获得两个时间的毫秒时间差异
+        long diff = endDate.getTime() - nowDate.getTime();
+
+        return diff / unit.getMillis();
+    }
+
+    public static int hoursToDay(int betweenHour) {
+        int i = 24;
+        int flag = betweenHour % i;
+        if (flag != 0) {
+            return betweenHour / 24 + 1;
+        }
+        return betweenHour / 24;
+    }
+
+    public static void main(String[] args) {
+        System.out.println(DateUtil.now());
+        long betweenHour = DateUtils.getDatePoorUnit(DateUtil.date(), DateUtil.parseDateTime("2022-10-18 12:03:00"), DateUnit.HOUR);
+        long HOUR = DateUtils.getDatePoorUnit(DateUtil.date(), DateUtil.parseDateTime("2022-07-13 18:03:00"), DateUnit.HOUR);
+        System.out.println(betweenHour);
+        System.out.println(HOUR);
+        System.out.println("`````````````````````betweenHour % 24L`````````````````````");
+        System.out.println(betweenHour / 60 / 60);
+        System.out.println(1000 / 60);
+    }
+}

+ 2 - 0
src/main/resources/application-dev.yml

@@ -71,6 +71,8 @@ bim:
   uploadPath: E://imgs//
   defaultFolder: bim
   webSite : https://8h9xtgjn91yg.ngrok.xiaomiqiu123.top
+  chromeDriver : C://Python310//chromedriver.exe
+  mixIntegral : 200
 #    type: oss      阿里云 oss
 #    type: aws      亚马逊
 #    type: local    本地化

+ 3 - 0
src/main/resources/application-uat.yml

@@ -73,6 +73,9 @@ bim:
   uploadPath: /mnt/fdkk_bim/uploadPath
   defaultFolder: bim
   webSite : https://uat-bim.4dkankan.com
+  chromeDriver: /home/chromedriver/chromedriver
+  mixIntegral : 200
+
 #    type: oss      阿里云 oss
 #    type: aws      亚马逊
 #    type: local    本地化