yang 3 yıl önce
işleme
ce60727495
100 değiştirilmiş dosya ile 5043 ekleme ve 0 silme
  1. 111 0
      beeboxs/beeboxs.iml
  2. BIN
      beeboxs/lib/commons-codec-1.6.jar
  3. BIN
      beeboxs/lib/commons-httpclient-3.1.jar
  4. BIN
      beeboxs/lib/commons-io-1.3.2.jar
  5. BIN
      beeboxs/lib/commons-logging-1.1.3.jar
  6. BIN
      beeboxs/lib/fastjson-1.1.24.jar
  7. BIN
      beeboxs/lib/httpclient-4.3.5.jar
  8. BIN
      beeboxs/lib/httpclient-cache-4.3.5.jar
  9. BIN
      beeboxs/lib/httpcore-4.3.2.jar
  10. BIN
      beeboxs/lib/httpmime-4.3.5.jar
  11. BIN
      beeboxs/lib/lcopen.jar
  12. 102 0
      beeboxs/pom.xml
  13. 15 0
      beeboxs/src/main/java/com/huimv/beeboxs/BeeboxsApplication.java
  14. 34 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/exception/ExceptionEnum.java
  15. 6 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/exception/MExceptionEnum.java
  16. 20 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/exception/MiException.java
  17. 20 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/token/TokenConstant.java
  18. 138 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/token/TokenSign.java
  19. 154 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/AirQualityIndexUtil.java
  20. 93 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/ChineseCharToEnUtil.java
  21. 149 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/DataUill.java
  22. 27 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/GeneratorCodeConfig.java
  23. 27 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/GetMD5Str.java
  24. 58 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/HttpUtils.java
  25. 27 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/IpTools.java
  26. 18 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/NumberUtils.java
  27. 79 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/PageFactory.java
  28. 8 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/PageResult.java
  29. 29 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/PercentUtil.java
  30. 38 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/PlatformException.java
  31. 79 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/Result.java
  32. 41 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/ResultCode.java
  33. 191 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/SnowflakeSequence.java
  34. 44 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/StringUtilsWork.java
  35. 120 0
      beeboxs/src/main/java/com/huimv/beeboxs/common/utils/VerifyUtil.java
  36. 60 0
      beeboxs/src/main/java/com/huimv/beeboxs/config/CorsConfig.java
  37. 26 0
      beeboxs/src/main/java/com/huimv/beeboxs/config/InterceptorConfig.java
  38. 81 0
      beeboxs/src/main/java/com/huimv/beeboxs/config/JWTInterceptor.java
  39. 26 0
      beeboxs/src/main/java/com/huimv/beeboxs/config/MybatisPlusConfig.java
  40. 93 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/AuthorizeController.java
  41. 67 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/BaseHiveFarmController.java
  42. 66 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveBaseBeehiveController.java
  43. 73 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveBaseStationController.java
  44. 33 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveBeehiveController.java
  45. 31 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveBeehiveOutController.java
  46. 21 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveBeehiveStatusController.java
  47. 21 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveStationController.java
  48. 21 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveStationStatusController.java
  49. 21 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveVideoAddrController.java
  50. 116 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/LoginController.java
  51. 47 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/MenuController.java
  52. 64 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/OpenCotroller.java
  53. 106 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/SysAccountMultilevelController.java
  54. 57 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/SysGroupController.java
  55. 43 0
      beeboxs/src/main/java/com/huimv/beeboxs/controller/SysUserController.java
  56. 11 0
      beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/business/UserManager.java
  57. 18 0
      beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/business/impl/UserManagerImpl.java
  58. 158 0
      beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/controller/CameraListController.java
  59. 125 0
      beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/controller/SetDahuaAccountToFarmInfoController.java
  60. 18 0
      beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/util/CONST.java
  61. 94 0
      beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/util/HttpSend.java
  62. 97 0
      beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/util/MySecureProtocolSocketFactory.java
  63. 36 0
      beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/util/MyX509TrustManager.java
  64. 35 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/AccountGroup.java
  65. 40 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/BaseHiveFarm.java
  66. 51 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/CamareDevideBind.java
  67. 61 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/FarmVideoAccount.java
  68. 37 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/Group.java
  69. 35 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/GroupMenu.java
  70. 144 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveBaseBeehive.java
  71. 111 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveBaseStation.java
  72. 117 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveBeehive.java
  73. 106 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveBeehiveOut.java
  74. 63 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveBeehiveStatus.java
  75. 98 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveStation.java
  76. 68 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveStationStatus.java
  77. 62 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveVideoAddr.java
  78. 52 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/Menu.java
  79. 49 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/SysAccountMultilevel.java
  80. 47 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/User.java
  81. 74 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/dto/HiveBaseBeeStationDao.java
  82. 80 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/dto/HiveBaseBeehiveDto.java
  83. 106 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/dto/MenuDto.java
  84. 29 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/dto/UserAccountDto.java
  85. 28 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/dto/UserAndAccountGroup.java
  86. 76 0
      beeboxs/src/main/java/com/huimv/beeboxs/entity/vo/HiveBaseStationVo.java
  87. 20 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/AccountGroupMapper.java
  88. 16 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/BaseHiveFarmMapper.java
  89. 13 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/FarmVideoAccountMapper.java
  90. 18 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/GroupMapper.java
  91. 21 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/GroupMenuMapper.java
  92. 16 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveBaseBeehiveMapper.java
  93. 16 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveBaseStationMapper.java
  94. 16 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveBeehiveMapper.java
  95. 16 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveBeehiveOutMapper.java
  96. 16 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveBeehiveStatusMapper.java
  97. 16 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveStationMapper.java
  98. 16 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveStationStatusMapper.java
  99. 16 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveVideoAddrMapper.java
  100. 0 0
      beeboxs/src/main/java/com/huimv/beeboxs/mapper/MenuMapper.java

+ 111 - 0
beeboxs/beeboxs.iml

@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
+    <facet type="web" name="Web">
+      <configuration>
+        <webroots />
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/src/main/java" />
+          <root url="file://$MODULE_DIR$/src/main/resources" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="lib" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.6.6" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.6.6" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.6.6" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.6.6" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.11" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.11" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.17.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.17.2" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.36" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.18" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.18" level="project" />
+    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.29" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.6.6" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.2" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.2" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.6.6" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.60" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.60" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.18" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.18" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.18" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.18" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.18" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.18" level="project" />
+    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.22" level="project" />
+    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.28" level="project" />
+    <orderEntry type="library" name="Maven: com.auth0:java-jwt:3.3.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.13.2.2" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.2" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.13.2" level="project" />
+    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
+    <orderEntry type="library" name="Maven: com.belerweb:pinyin4j:2.5.1" level="project" />
+    <orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
+    <orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.2.3" level="project" />
+    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.7.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2" level="project" />
+    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.4" level="project" />
+    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.28" level="project" />
+    <orderEntry type="library" name="Maven: cn.dustlight.captcha:redis-store:0.0.6" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.6.6" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.6.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.6.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.6.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.18" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.3.18" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.3.18" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.36" level="project" />
+    <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:6.1.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.75.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.75.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.75.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.75.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.75.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.75.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.4.16" level="project" />
+    <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.session:spring-session-data-redis:2.6.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.session:spring-session-core:2.6.2" level="project" />
+    <orderEntry type="library" name="Maven: cn.dustlight.captcha:captcha-core:0.0.6" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.6.6" level="project" />
+    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.7" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.60" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-annotations-api:9.0.60" level="project" />
+    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.7.11" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.2" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.6.6" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.6.6" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:4.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.18" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.2" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.2" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.2" level="project" />
+    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.6" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.5" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generator:3.2.0" level="project" />
+  </component>
+</module>

BIN
beeboxs/lib/commons-codec-1.6.jar


BIN
beeboxs/lib/commons-httpclient-3.1.jar


BIN
beeboxs/lib/commons-io-1.3.2.jar


BIN
beeboxs/lib/commons-logging-1.1.3.jar


BIN
beeboxs/lib/fastjson-1.1.24.jar


BIN
beeboxs/lib/httpclient-4.3.5.jar


BIN
beeboxs/lib/httpclient-cache-4.3.5.jar


BIN
beeboxs/lib/httpcore-4.3.2.jar


BIN
beeboxs/lib/httpmime-4.3.5.jar


BIN
beeboxs/lib/lcopen.jar


+ 102 - 0
beeboxs/pom.xml

@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.6.6</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+    <groupId>com.huimv</groupId>
+    <artifactId>beeboxs</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <name>beeboxs</name>
+    <description>Demo project for Spring Boot</description>
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.auth0</groupId>
+            <artifactId>java-jwt</artifactId>
+            <version>3.3.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.belerweb</groupId>
+            <artifactId>pinyin4j</artifactId>
+            <version>2.5.1</version>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt</artifactId>
+            <version>0.9.1</version>
+        </dependency>
+        <dependency>
+            <groupId>net.sf.json-lib</groupId>
+            <artifactId>json-lib</artifactId>
+            <version>2.2.3</version>
+            <classifier>jdk15</classifier>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.28</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.dustlight.captcha</groupId>
+            <artifactId>redis-store</artifactId>
+            <version>0.0.6</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.dustlight.captcha</groupId>
+            <artifactId>captcha-core</artifactId>
+            <version>0.0.6</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.7.11</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.4.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-extension</artifactId>
+            <version>3.4.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+            <version>3.2.0</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+
+</project>

+ 15 - 0
beeboxs/src/main/java/com/huimv/beeboxs/BeeboxsApplication.java

@@ -0,0 +1,15 @@
+package com.huimv.beeboxs;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+@MapperScan("com.huimv.beeboxs.mapper")
+public class BeeboxsApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(BeeboxsApplication.class, args);
+    }
+
+}

+ 34 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/exception/ExceptionEnum.java

@@ -0,0 +1,34 @@
+package com.huimv.beeboxs.common.exception;
+
+public enum ExceptionEnum implements MExceptionEnum{
+   //自定义的状态码
+   TOKEN_NULL("401","token为空"),
+   TOKEN_OVERDUE("403","token过期"),
+   VERIFCATION_FAID("410","验证码获取失败"),
+   VERIFCATION_OVERDUE("411","验证码获取失败");
+
+
+   //错误码
+   public String code;
+   //提示信息
+   public String message;
+
+   //构造函数
+   ExceptionEnum(String code, String message){
+      this.code = code;
+      this.message = message;
+   }
+
+   //获取状态码
+   @Override
+   public String getCode(){
+      return code;
+   }
+   
+   //获取提示信息
+   @Override
+   public String getMessage(){
+      return message;
+   }
+ 
+}

+ 6 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/exception/MExceptionEnum.java

@@ -0,0 +1,6 @@
+package com.huimv.beeboxs.common.exception;
+
+public interface MExceptionEnum{
+    public String getCode();
+    public String getMessage();
+}

+ 20 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/exception/MiException.java

@@ -0,0 +1,20 @@
+package com.huimv.beeboxs.common.exception;
+
+
+public class MiException extends RuntimeException {
+    private ExceptionEnum exceptionEnum;
+
+    public MiException(ExceptionEnum exceptionEnum){
+        this.exceptionEnum = exceptionEnum;
+    }
+
+    public ExceptionEnum getExceptionEnum(){
+        return exceptionEnum;
+    }
+
+    //用来输出异常信息和状态码
+    public void printException(MiException e){
+        ExceptionEnum exceptionEnum = e.getExceptionEnum();
+        System.out.println("异常代码:" + exceptionEnum.getCode() + ",异常信息:" + exceptionEnum.getMessage());
+    }
+}

+ 20 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/token/TokenConstant.java

@@ -0,0 +1,20 @@
+package com.huimv.beeboxs.common.token;
+ 
+import java.util.HashMap;
+import java.util.Map;
+
+public class TokenConstant {
+ 
+    private static Map<String, String> map=new HashMap();
+ 
+ 
+    public static String getToken(){
+            return map.get("token");
+    }
+ 
+    public static void updateTokenMap(String token){
+        map.put("token",token);
+    }
+ 
+ 
+}

+ 138 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/token/TokenSign.java

@@ -0,0 +1,138 @@
+package com.huimv.beeboxs.common.token;
+
+import io.jsonwebtoken.*;
+import org.apache.commons.lang.StringUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+
+public class TokenSign {
+
+    /**
+     * 过期时间60分钟
+     */
+    private static final long EXPIRE_TIME= 24 * 60 * 60 * 1000;
+
+    /**
+     * 私钥,使用它生成token,最好进行下加密
+     */
+    private static final String TOKEN_SECRET="Token";
+    private static final String APP_SECRET = "ukc8BDbRigUDaY6pZFfWus2jZWLPHO";
+    private static final int REFRESH_TIME = 300;
+
+
+    /**
+     * 产生token
+     * @return
+     */
+    public static String sign(String userName, Integer id, String farmIds){
+
+        String JwtToken = Jwts.builder()
+                //头部信息
+                .setHeaderParam("typ", "JWT")
+                .setHeaderParam("alg", "HS256")
+                .setSubject("hm-user")
+                .setIssuedAt(new Date())
+                //过期时间
+                .setExpiration(new Date(System.currentTimeMillis() + EXPIRE_TIME))
+                //token主体部分,存储用户信息
+                .claim("userName", userName)
+                .claim("id",id)
+                .claim("farmIds",farmIds)
+                .signWith(SignatureAlgorithm.HS256, APP_SECRET)
+                .compact();
+
+        return JwtToken;
+    }
+
+
+    /**
+     * token校验是否正确
+     * @param token
+     * @return
+     */
+
+    public static boolean verify(String token){
+
+        if (StringUtils.isBlank(token)) {
+            return false;
+        }
+        try {
+            Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(token);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+        return true;
+
+    }
+
+
+    /**
+     * 根据token获取会员id
+     *
+     * @param request
+     * @return
+     */
+    public static Integer getMemberIdByJwtToken(HttpServletRequest request) {
+        String jwtToken = request.getHeader("accessToken");
+        if (StringUtils.isBlank(jwtToken)) {
+            return null;
+        }
+        Claims claims = getClaims(jwtToken);
+        return (Integer) claims.get("id");
+    }
+
+    public static String getFarmIds(HttpServletRequest request) {
+        String jwtToken = request.getHeader("accessToken");
+        if (StringUtils.isBlank(jwtToken)) {
+            return null;
+        }
+        Claims claims = getClaims(jwtToken);
+        return (String) claims.get("farmIds");
+    }
+
+    /**
+     * 获取claims对象
+     *
+     * @param jwtToken
+     * @return
+     */
+    public static Claims getClaims(String jwtToken) {
+        try {
+            Jws<Claims> claimsJws = Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken);
+            return claimsJws.getBody();
+        }catch (ExpiredJwtException e){
+            return null;
+        }
+
+
+    }
+    /**
+     * 是否过期
+     *
+     * @param claims
+     * @return -1:有效,0:有效,1:过期,2:被篡改
+     */
+    public static int verifyToken(Claims claims) {
+        if (claims == null) {
+            return 1;
+        }
+        try {
+            claims.getExpiration()
+                    .before(new Date());
+            // 需要自动刷新TOKEN
+            if ((claims.getExpiration().getTime() - System.currentTimeMillis()) < REFRESH_TIME * 1000) {
+                return -1;
+            } else {
+                return 0;
+            }
+        } catch (ExpiredJwtException ex) {
+            return 1;
+        } catch (Exception e) {
+            return 2;
+        }
+    }
+
+
+}

+ 154 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/AirQualityIndexUtil.java

@@ -0,0 +1,154 @@
+package com.huimv.beeboxs.common.utils;
+
+
+import net.sf.json.JSONObject;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Author Anchor
+ * @Date 2021/7/16 10:30
+ * @Version 1.0.1
+ */
+public class AirQualityIndexUtil {
+
+
+
+    /**
+     * 天气情况查询接口地址
+     */
+    public static String API_URL = "http://apis.juhe.cn/simpleWeather/query";
+    /**
+     * 请求key  ---这个key是杨迪自己注册的.免费版.....希望公司后面买正式版
+     */
+    public static String API_KEY = "b9876f1d1eaec3ae987fcd54646060f7";
+
+    /**
+     * 根据城市名查询天气情况
+     *
+     * @param cityName
+     */
+    public  static String queryWeather(String cityName) {
+        //组合参数
+        Map<String, Object> params = new HashMap<>();
+        params.put("city", cityName);
+        params.put("key", API_KEY);
+        String queryParams = urlEncode(params);
+        String response = doGet(API_URL, queryParams);
+        System.out.println(response);
+        try {
+            JSONObject jsonObject = JSONObject.fromObject(response);
+            int errorCode = jsonObject.getInt("error_code");
+            if (errorCode == 0) {
+                System.out.println("调用接口成功");
+                JSONObject result = jsonObject.getJSONObject("result");
+                JSONObject realtime = result.getJSONObject("realtime");
+               /* System.out.printf("城市:%s%n", result.getString("city"));
+                System.out.printf("天气:%s%n", realtime.getString("info"));
+                System.out.printf("温度:%s%n", realtime.getString("temperature"));
+                System.out.printf("湿度:%s%n", realtime.getString("humidity"));
+                System.out.printf("风向:%s%n", realtime.getString("direct"));
+                System.out.printf("风力:%s%n", realtime.getString("power"));
+                System.out.printf("空气质量:%s%n", realtime.getString("aqi"));
+                */
+                return    realtime.getString("aqi");
+            } else {
+                System.out.println("调用接口失败:" + jsonObject.getString("reason"));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return   null;
+    }
+
+    /**
+     * get方式的http请求
+     *
+     * @param httpUrl 请求地址
+     * @return 返回结果
+     */
+    public static String doGet(String httpUrl, String queryParams) {
+        HttpURLConnection connection = null;
+        InputStream inputStream = null;
+        BufferedReader bufferedReader = null;
+        //返回结果字符串
+        String result = null;
+        try {
+            //创建远程url连接对象
+            URL url = new URL(new StringBuffer(httpUrl).append("?").append(queryParams).toString());
+            //通过远程url连接对象打开一个连接,强转成httpURLConnection类
+            connection = (HttpURLConnection) url.openConnection();
+            //设置连接方式:get
+            connection.setRequestMethod("GET");
+            //设置连接主机服务器的超时时间:5000毫秒
+            connection.setConnectTimeout(5000);
+            //设置读取远程返回的数据时间:6000毫秒
+            connection.setReadTimeout(6000);
+            //发送请求
+            connection.connect();
+            //通过connection连接,获取输入流
+            if (connection.getResponseCode() == 200) {
+                inputStream = connection.getInputStream();
+                //封装输入流,并指定字符集
+                bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
+                //存放数据
+                StringBuilder sbf = new StringBuilder();
+                String temp;
+                while ((temp = bufferedReader.readLine()) != null) {
+                    sbf.append(temp);
+                    sbf.append(System.getProperty("line.separator"));
+                }
+                result = sbf.toString();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            //关闭资源
+            if (null != bufferedReader) {
+                try {
+                    bufferedReader.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (null != inputStream) {
+                try {
+                    inputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (connection != null) {
+                //关闭远程连接
+                connection.disconnect();
+            }
+        }
+        return result;
+    }
+
+    /**
+     * 将map型转为请求参数型
+     *
+     * @param data
+     * @return
+     */
+    public static String urlEncode(Map<String, ?> data) {
+        StringBuilder sb = new StringBuilder();
+        for (Map.Entry<String, ?> i : data.entrySet()) {
+            try {
+                sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&");
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+        }
+        String result = sb.toString();
+        result = result.substring(0, result.lastIndexOf("&"));
+        return result;
+    }
+}

+ 93 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/ChineseCharToEnUtil.java

@@ -0,0 +1,93 @@
+package com.huimv.beeboxs.common.utils;
+
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
+
+public class ChineseCharToEnUtil {
+    /**
+     * 将字符串中的中文转化为拼音,其他字符不变
+     *
+     * @param inputString
+     * @return
+     */
+    public static String getPingYin(String inputString) {
+        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
+        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+        format.setVCharType(HanyuPinyinVCharType.WITH_V);
+ 
+        char[] input = inputString.trim().toCharArray();
+        String output = "";
+ 
+        try {
+            for (int i = 0; i < input.length; i++) {
+                if (Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {
+                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);
+                    output += temp[0];
+                } else
+                    output += Character.toString(input[i]);
+            }
+        } catch (BadHanyuPinyinOutputFormatCombination e) {
+            e.printStackTrace();
+        }
+        return output;
+    }
+    /**
+     * 获取汉字串拼音首字母,英文字符不变
+     * @param chinese 汉字串
+     * @return 汉语拼音首字母
+     */
+    public static String getFirstSpell(String chinese) {
+        StringBuffer pybf = new StringBuffer();
+        char[] arr = chinese.toCharArray();
+        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
+        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+        for (int i = 0; i < arr.length; i++) {
+            if (arr[i] > 128) {
+                try {
+                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
+                    if (temp != null && temp.length > 0){
+                        pybf.append(temp[0].charAt(0));
+                    }
+                } catch (BadHanyuPinyinOutputFormatCombination e) {
+                    e.printStackTrace();
+                }
+            } else {
+                pybf.append(arr[i]);
+            }
+        }
+        return pybf.toString().replaceAll("\\W", "").trim();
+    }
+    /**
+     * 获取汉字串拼音,英文字符不变
+     * @param chinese 汉字串
+     * @return 汉语拼音
+     */
+    public static String getFullSpell(String chinese) {
+        StringBuffer pybf = new StringBuffer();
+        char[] arr = chinese.toCharArray();
+        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
+        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+        for (int i = 0; i < arr.length; i++) {
+            if (arr[i] > 128) {
+                try {
+                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
+                } catch (BadHanyuPinyinOutputFormatCombination e) {
+                    e.printStackTrace();
+                }
+            } else {
+                pybf.append(arr[i]);
+            }
+        }
+        return pybf.toString();
+    }
+
+
+ 
+}

+ 149 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/DataUill.java

@@ -0,0 +1,149 @@
+package com.huimv.beeboxs.common.utils;
+  
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+public class DataUill {
+  
+
+  
+    // 获得当天0点时间
+    public static Date getTimesmorning() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+        return cal.getTime();
+  
+  
+    }
+    // 获得昨天0点时间
+    public static Date getYesterdaymorning() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeInMillis(getTimesmorning().getTime()-3600*24*1000);
+        return cal.getTime();
+    }
+    // 获得当天近7天时间
+    public static Date getWeekFromNow() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeInMillis( getTimesmorning().getTime()-3600*24*1000*7);
+        return cal.getTime();
+    }
+  
+    // 获得当天24点时间
+    public static Date getTimesnight() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.HOUR_OF_DAY, 24);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+        return cal.getTime();
+    }
+  
+    // 获得本周一0点时间
+    public static Date getTimesWeekmorning() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+        return cal.getTime();
+    }
+  
+    // 获得本周日24点时间
+    public static Date getTimesWeeknight() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(getTimesWeekmorning());
+        cal.add(Calendar.DAY_OF_WEEK, 7);
+        return cal.getTime();
+    }
+  
+    // 获得本月第一天0点时间
+    public static Date getTimesMonthmorning() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
+        return cal.getTime();
+    }
+  
+    // 获得本月最后一天24点时间
+    public static Date getTimesMonthnight() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+        cal.set(Calendar.HOUR_OF_DAY, 24);
+        return cal.getTime();
+    }
+  
+    public static Date getLastMonthStartMorning() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(getTimesMonthmorning());
+        cal.add(Calendar.MONTH, -1);
+        return cal.getTime();
+    }
+
+    public static Date getTwoLastMonthStartMorning() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(getTimesMonthmorning());
+        cal.add(Calendar.MONTH, -2);
+        return cal.getTime();
+    }
+  
+    public static Date getCurrentQuarterStartTime() {
+        Calendar c = Calendar.getInstance();
+        int currentMonth = c.get(Calendar.MONTH) + 1;
+        SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date now = null;
+        try {
+            if (currentMonth >= 1 && currentMonth <= 3)
+                c.set(Calendar.MONTH, 0);
+            else if (currentMonth >= 4 && currentMonth <= 6)
+                c.set(Calendar.MONTH, 3);
+            else if (currentMonth >= 7 && currentMonth <= 9)
+                c.set(Calendar.MONTH, 4);
+            else if (currentMonth >= 10 && currentMonth <= 12)
+                c.set(Calendar.MONTH, 9);
+            c.set(Calendar.DATE, 1);
+            now = longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return now;
+    }
+  
+    /**
+     * 当前季度的结束时间,即2012-03-31 23:59:59
+     *
+     * @return
+     */
+    public static Date getCurrentQuarterEndTime() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(getCurrentQuarterStartTime());
+        cal.add(Calendar.MONTH, 3);
+        return cal.getTime();
+    }
+  
+  
+    public static Date getCurrentYearStartTime() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.YEAR));
+        return cal.getTime();
+    }
+  
+    public static Date getCurrentYearEndTime() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(getCurrentYearStartTime());
+        cal.add(Calendar.YEAR, 1);
+        return cal.getTime();
+    }
+  
+    public static Date getLastYearStartTime() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(getCurrentYearStartTime());
+        cal.add(Calendar.YEAR, -1);
+        return cal.getTime();
+    }
+  
+}

+ 27 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/GeneratorCodeConfig.java

@@ -0,0 +1,27 @@
+package com.huimv.beeboxs.common.utils;
+
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+
+import java.util.Scanner;
+
+/**
+ * 自动生成mybatisplus的相关代码
+ */
+public class GeneratorCodeConfig {
+
+    public static String scanner(String tip) {
+        Scanner scanner = new Scanner(System.in);
+        StringBuilder help = new StringBuilder();
+        help.append("请输入" + tip + ":");
+        System.out.println(help.toString());
+        if (scanner.hasNext()) {
+            String ipt = scanner.next();
+            if (StringUtils.isNotBlank(ipt)) {
+                return ipt;
+            }
+        }
+        throw new MybatisPlusException("请输入正确的" + tip + "!");
+    }
+
+}

+ 27 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/GetMD5Str.java

@@ -0,0 +1,27 @@
+package com.huimv.beeboxs.common.utils;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+
+public class GetMD5Str {
+    /**
+     * 对字符串md5加密
+     *
+     * @param str
+     * @return
+     * @throws Exception
+     */
+    public static String getMD5Str(String str) throws Exception {
+        try {
+            // 生成一个MD5加密计算摘要
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            // 计算md5函数
+            md.update(str.getBytes());
+            // digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
+            // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
+            return new BigInteger(1, md.digest()).toString(16);
+        } catch (Exception e) {
+            throw new Exception("MD5加密出现错误,"+e.toString());
+        }
+    }
+}

+ 58 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/HttpUtils.java

@@ -0,0 +1,58 @@
+package com.huimv.beeboxs.common.utils;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * http 工具类
+ */
+public class HttpUtils {
+
+    public static String post(String requestUrl, String accessToken, String params) throws Exception {
+        String generalUrl = requestUrl + "?access_token=" + accessToken;
+        URL url = new URL(generalUrl);
+        // 打开和URL之间的连接
+        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+        connection.setRequestMethod("POST");
+        // 设置通用的请求属性
+        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+        connection.setRequestProperty("Connection", "Keep-Alive");
+        connection.setUseCaches(false);
+        connection.setDoOutput(true);
+        connection.setDoInput(true);
+
+        // 得到请求的输出流对象
+        DataOutputStream out = new DataOutputStream(connection.getOutputStream());
+        out.writeBytes(params);
+        out.flush();
+        out.close();
+
+        // 建立实际的连接
+        connection.connect();
+        // 获取所有响应头字段
+        Map<String, List<String>> headers = connection.getHeaderFields();
+        // 遍历所有的响应头字段
+        for (String key : headers.keySet()) {
+            System.out.println(key + "--->" + headers.get(key));
+        }
+        // 定义 BufferedReader输入流来读取URL的响应
+        BufferedReader in = null;
+        if (requestUrl.contains("nlp"))
+            in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "GBK"));
+        else
+            in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
+        String result = "";
+        String getLine;
+        while ((getLine = in.readLine()) != null) {
+            result += getLine;
+        }
+        in.close();
+        System.out.println("result:" + result);
+        return result;
+    }
+}

+ 27 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/IpTools.java

@@ -0,0 +1,27 @@
+package com.huimv.beeboxs.common.utils;
+
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @author yejijie
+ * @created 2020年7月17日 上午11:24:20
+*/
+@Component
+public class IpTools {
+
+    public static String getRemoteHost(HttpServletRequest request){
+        String ip = request.getHeader("x-forwarded-for");
+        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
+            ip = request.getHeader("Proxy-Client-IP");
+        }
+        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
+            ip = request.getHeader("WL-Proxy-Client-IP");
+        }
+        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
+            ip = request.getRemoteAddr();
+        }
+        return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;
+    }
+}

+ 18 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/NumberUtils.java

@@ -0,0 +1,18 @@
+package com.huimv.beeboxs.common.utils;
+
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+
+import java.text.DecimalFormat;
+
+public class NumberUtils {
+
+    public static DecimalFormat df = new DecimalFormat("#,##0.00");
+    public static String format(String str) {
+        if (StringUtils.isBlank(str)){
+            return "0.00";
+        }
+        return df.format(Double.valueOf(str));
+    }
+
+}

+ 79 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/PageFactory.java

@@ -0,0 +1,79 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package com.huimv.beeboxs.common.utils;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+
+/**
+ * 默认分页参数构建
+ *
+ * @author yubaoshan
+ * @date 2017/11/15 13:52
+ */
+public class PageFactory {
+
+    /**
+     * 每页大小(默认20)
+     */
+    private static final String PAGE_SIZE_PARAM_NAME = "pageSize";
+
+    /**
+     * 第几页(从1开始)
+     */
+    private static final String PAGE_NO_PARAM_NAME = "pageNo";
+
+    /**
+     * 默认分页,在使用时PageFactory.defaultPage会自动获取pageSize和pageNo参数
+     *
+     * @author xuyuxiang
+     * @date 2020/3/30 16:42
+     */
+    public static <T> Page<T> defaultPage() {
+
+        int pageSize = 20;
+        int pageNo = 1;
+
+
+        return new Page<>(pageNo, pageSize);
+    }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 8 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/PageResult.java

@@ -0,0 +1,8 @@
+package com.huimv.beeboxs.common.utils;
+
+import java.util.List;
+
+public class PageResult<T> {
+    private Long total;
+    private List<T> rows;
+}

+ 29 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/PercentUtil.java

@@ -0,0 +1,29 @@
+package com.huimv.beeboxs.common.utils;
+
+import java.text.DecimalFormat;
+
+/**
+ * @Author : yuxuexuan
+ * @Create : 2021/11/29 0029 10:52
+ **/
+public class PercentUtil {
+
+    public static String getGrowth(Double lastMonth, Double lastTwoMonth){
+        if (lastMonth.equals( lastTwoMonth)){
+            return "0";
+        }
+        if (lastMonth == 0.0){
+            return "-100";
+        }
+
+        if (lastTwoMonth == 0.0){
+            return "100";
+        }
+        DecimalFormat df = new DecimalFormat("0.00");
+
+        return df.format((lastMonth - lastTwoMonth)/ lastTwoMonth *100);
+    }
+
+
+
+}

+ 38 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/PlatformException.java

@@ -0,0 +1,38 @@
+/**
+ * @Copyright (C), 2014-2020, 杭州慧牧科技有限公司
+ * @ClassName: RobotException
+ * @Author: yejijie
+ * @E-mail: yejijie@huimv.com
+ * @Date: 2020年4月23日
+ * @Version: V1.0
+ * @Description:
+ */
+package com.huimv.beeboxs.common.utils;
+
+/**
+ * @author yejijie
+ *
+ */
+public class PlatformException extends RuntimeException {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 6529181147584750288L;
+	private String errCode;
+	private String errMsg;
+	public PlatformException() {
+		super();
+	}
+	public PlatformException(String code, String msg) {
+		super(msg);
+		this.errCode = code;
+		this.errMsg = msg;
+	}
+	public String getErrCode() {
+		return errCode;
+	}
+	public String getErrMsg() {
+		return errMsg;
+	}
+}

+ 79 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/Result.java

@@ -0,0 +1,79 @@
+package com.huimv.beeboxs.common.utils;
+
+import java.io.Serializable;
+
+public class Result implements Serializable {
+
+    private boolean success;
+    private Integer code;
+    private String message;
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    private Object data;
+
+    //不需要返回数据时使用
+    public Result(ResultCode code) {
+        this.success = code.success;
+        this.code = code.code;
+        this.message = code.message;
+    }
+
+    public Result(ResultCode code, Object data) {
+        this.success = code.success;
+        this.code = code.code;
+        this.message = code.message;
+        this.data = data;
+    }
+
+    public Result(Integer code, String message, boolean success) {
+        this.code = code;
+        this.message = message;
+        this.success = success;
+    }
+
+    /*
+     * 调用ResultCode类封装常用的返回数据
+     */
+    public static Result SUCCESS(){
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    public static Result ERROR(){
+        return new Result(ResultCode.SERVER_ERROR);
+    }
+
+    public static Result FAIL(){
+        return new Result(ResultCode.FAIL);
+    }
+}

+ 41 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/ResultCode.java

@@ -0,0 +1,41 @@
+package com.huimv.beeboxs.common.utils;
+
+public enum ResultCode {
+    SUCCESS(true,10000,"操作成功!"),
+    //---系统错误返回码-----
+    FAIL(false,10001,"操作失败"),
+    UNAUTHENTICATED(false,10002,"您还未登录"),
+    UNAUTHORISE(false,10003,"权限不足"),
+    SERVER_ERROR(false,99999,"抱歉,系统繁忙,请稍后重试!"),
+
+    //---用户操作返回码  2xxxx----
+    MOBILEORPASSWORDERROR(false,20001,"用户名或密码错误");
+    //---企业操作返回码  3xxxx----
+    //---权限操作返回码----
+    //---其他操作返回码----
+
+    //操作是否成功
+    boolean success;
+    //操作代码
+    int code;
+    //提示信息
+    String message;
+
+    ResultCode(boolean success,int code, String message){
+        this.success = success;
+        this.code = code;
+        this.message = message;
+    }
+
+    public boolean success() {
+        return success;
+    }
+
+    public int code() {
+        return code;
+    }
+
+    public String message() {
+        return message;
+    }
+}

+ 191 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/SnowflakeSequence.java

@@ -0,0 +1,191 @@
+package com.huimv.beeboxs.common.utils;
+
+import java.lang.management.ManagementFactory;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+
+/**
+ * Twitter_Snowflake<br>
+ * SnowFlake的结构如下(每部分用-分开):<br>
+ * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 <br>
+ * 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0<br>
+ * 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截)
+ * 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。41位的时间截,可以使用69年,年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69<br>
+ * 10位的数据机器位,可以部署在1024个节点,包括5位datacenterId和5位workerId<br>
+ * 12位序列,毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号<br>
+ * 加起来刚好64位,为一个Long型。<br>
+ * SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右。
+ */
+public class SnowflakeSequence {
+    // ==============================Fields===========================================
+    /** 开始时间截 (2017/11/29 18:25:29) */
+    private final long twepoch = 1511951129000L;
+
+    /** 机器id所占的位数 */
+    private final long workerIdBits = 5L;
+
+    /** 数据标识id所占的位数 */
+    private final long datacenterIdBits = 5L;
+
+    /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */
+    private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
+
+    /** 支持的最大数据标识id,结果是31 */
+    private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits);
+
+    /** 序列在id中占的位数 */
+    private final long sequenceBits = 12L;
+
+    /** 机器ID向左移12位 */
+    private final long workerIdShift = sequenceBits;
+
+    /** 数据标识id向左移17位(12+5) */
+    private final long datacenterIdShift = sequenceBits + workerIdBits;
+
+    /** 时间截向左移22位(5+5+12) */
+    private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits;
+
+    /** 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */
+    private final long sequenceMask = -1L ^ (-1L << sequenceBits);
+
+    /** 工作机器ID(0~31) */
+    private long workerId;
+
+    /** 数据中心ID(0~31) */
+    private long datacenterId;
+
+    /** 毫秒内序列(0~4095) */
+    private long sequence = 0L;
+
+    /** 上次生成ID的时间截 */
+    private long lastTimestamp = -1L;
+
+    //==============================构造函数=====================================
+    //根据mac地址产生datacenterid
+    public SnowflakeSequence() {
+        datacenterId = getDatacenterId(maxDatacenterId);
+        workerId = getMaxWorkerId(datacenterId, maxWorkerId);
+//        System.out.println("datacenterId:" + datacenterId + ",workerId:" + workerId);
+    }
+
+    /**
+     * 构造函数
+     * @param workerId 工作ID (0~31)
+     * @param datacenterId 数据中心ID (0~31)
+     */
+    public SnowflakeSequence(long workerId, long datacenterId) {
+        if (workerId > maxWorkerId || workerId < 0) {
+            throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
+        }
+        if (datacenterId > maxDatacenterId || datacenterId < 0) {
+            throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0", maxDatacenterId));
+        }
+        this.workerId = workerId;
+        this.datacenterId = datacenterId;
+    }
+
+    // ==============================Methods==========================================
+    /**
+     * 获得下一个ID (该方法是线程安全的)
+     * @return SnowflakeId
+     */
+    public synchronized long nextId() {
+        long timestamp = timeGen();
+
+        //如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
+        if (timestamp < lastTimestamp) {
+            throw new RuntimeException(
+                    String.format("Clock moved backwards.  Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
+        }
+
+        //如果是同一时间生成的,则进行毫秒内序列
+        if (lastTimestamp == timestamp) {
+            sequence = (sequence + 1) & sequenceMask;
+            //毫秒内序列溢出
+            if (sequence == 0) {
+                //阻塞到下一个毫秒,获得新的时间戳
+                timestamp = tilNextMillis(lastTimestamp);
+            }
+        }
+        //时间戳改变,毫秒内序列重置
+        else {
+            sequence = 0L;
+        }
+
+        //上次生成ID的时间截
+        lastTimestamp = timestamp;
+
+        //移位并通过或运算拼到一起组成64位的ID
+        return ((timestamp - twepoch) << timestampLeftShift) //
+                | (datacenterId << datacenterIdShift) //
+                | (workerId << workerIdShift) //
+                | sequence;
+    }
+
+    /**
+     * 阻塞到下一个毫秒,直到获得新的时间戳
+     * @param lastTimestamp 上次生成ID的时间截
+     * @return 当前时间戳
+     */
+    protected long tilNextMillis(long lastTimestamp) {
+        long timestamp = timeGen();
+        while (timestamp <= lastTimestamp) {
+            timestamp = timeGen();
+        }
+        return timestamp;
+    }
+
+    /**
+     * 返回以毫秒为单位的当前时间
+     * @return 当前时间(毫秒)
+     */
+    protected long timeGen() {
+        return System.currentTimeMillis();
+    }
+
+    /**
+     * <p>
+     * 数据标识id部分
+     * </p>
+     * @param maxDatacenterId
+     * @return
+     */
+    protected static long getDatacenterId(long maxDatacenterId) {
+        long id = 0L;
+        try {
+            InetAddress ip = InetAddress.getLocalHost();
+            NetworkInterface network = NetworkInterface.getByInetAddress(ip);
+            if (network == null) {
+                id = 1L;
+            } else {
+                byte[] mac = network.getHardwareAddress();
+                if (null != mac) {
+                    id = ((0x000000FF & (long) mac[mac.length - 1]) | (0x0000FF00 & (((long) mac[mac.length - 2]) << 8))) >> 6;
+                    id = id % (maxDatacenterId + 1);
+                }
+            }
+        } catch (Exception e) {
+            System.err.println(" getDatacenterId: " + e.getMessage());
+        }
+        return id;
+    }
+
+    /**
+     * 获取 maxWorkerId
+     * @param datacenterId   数据中心id
+     * @param maxWorkerId    机器id
+     * @return  maxWorkerId
+     */
+    protected static long getMaxWorkerId(long datacenterId, long maxWorkerId) {
+        StringBuilder mpid = new StringBuilder();
+        mpid.append(datacenterId);
+        String name = ManagementFactory.getRuntimeMXBean().getName();
+        if (name != null && "".equals(name)) {
+            // GET jvmPid
+            mpid.append(name.split("@")[0]);
+        }
+        //MAC + PID 的 hashcode 获取16个低位
+        return (mpid.toString().hashCode() & 0xffff) % (maxWorkerId + 1);
+    }
+
+}

+ 44 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/StringUtilsWork.java

@@ -0,0 +1,44 @@
+package com.huimv.beeboxs.common.utils;
+
+/**
+ * @Author Anchor
+ * @Date 2021/7/30 13:17
+ * @Version 1.0.1
+ */
+public class StringUtilsWork {
+
+
+    public static boolean isEmpty(String str) {
+        return str == null || str.length() == 0;
+    }
+
+    public static boolean isNotEmpty(String str) {
+        return !isEmpty(str);
+    }
+
+    public static boolean isBlank(String str) {
+        int strLen;
+        if (str != null && (strLen = str.length()) != 0) {
+            for(int i = 0; i < strLen; ++i) {
+                if (!Character.isWhitespace(str.charAt(i))) {
+                    return false;
+                }
+            }
+
+            return true;
+        } else {
+            return true;
+        }
+    }
+
+    public static boolean isNotBlank(String str) {
+        return !isBlank(str);
+    }
+
+
+}
+
+
+
+
+

+ 120 - 0
beeboxs/src/main/java/com/huimv/beeboxs/common/utils/VerifyUtil.java

@@ -0,0 +1,120 @@
+package com.huimv.beeboxs.common.utils;
+
+
+import com.huimv.beeboxs.common.exception.ExceptionEnum;
+import com.huimv.beeboxs.common.exception.MiException;
+
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.util.Random;
+
+
+public class VerifyUtil {
+//    public static final String RANDOMCODEKEY = "RANDOMREDISKEY";//放到session中的key
+    private String randString = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//随机产生数字与字母组合的字符串
+    private int width = 95;// 图片宽
+    private int height = 50;// 图片高
+    private int lineSize = 40;// 干扰线数量
+    private int stringNum = 4;// 随机产生字符数量
+
+    private Random random = new Random();
+
+    /**
+     * 获得字体
+     */
+    private Font getFont() {
+        return new Font("Fixedsys", Font.CENTER_BASELINE, 25);
+    }
+
+    /**
+     * 获得颜色
+     */
+    private Color getRandColor(int fc, int bc) {
+        if (fc > 255) {
+            fc = 255;
+        }
+        if (bc > 255) {
+            bc = 255;
+        }
+        int r = fc + random.nextInt(bc - fc - 16);
+        int g = fc + random.nextInt(bc - fc - 14);
+        int b = fc + random.nextInt(bc - fc - 18);
+        return new Color(r, g, b);
+    }
+
+    /**
+     * 生成随机图片
+     */
+    public String getRandcode(HttpServletRequest request, HttpServletResponse response) {
+        // BufferedImage类是具有缓冲区的Image类,Image类是用于描述图像信息的类
+        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
+        // 产生Image对象的Graphics对象,改对象可以在图像上进行各种绘制操作
+        Graphics g = image.getGraphics();
+        //图片大小
+        g.fillRect(0, 0, width, height);
+        //字体大小
+        g.setFont(new Font("Times New Roman", Font.ROMAN_BASELINE, 50));
+        //字体颜色
+        g.setColor(getRandColor(110, 133));
+        // 绘制干扰线
+        for (int i = 0; i <= lineSize; i++) {
+            drowLine(g);
+        }
+        // 绘制随机字符
+        String randomString = "";
+        for (int i = 1; i <= stringNum; i++) {
+            randomString = drowString(g, randomString, i);
+        }
+        //将生成的随机字符串保存到session中
+//        session.removeAttribute(RANDOMCODEKEY);
+//        session.setAttribute(RANDOMCODEKEY, randomString);
+        //设置失效时间1分钟
+//        session.setMaxInactiveInterval(60);
+        g.dispose();
+        try {
+            // 将内存中的图片通过流动形式输出到客户端
+            ImageIO.write(image, "JPEG", response.getOutputStream());
+            return randomString;
+        } catch (Exception e) {
+            throw new MiException(ExceptionEnum.VERIFCATION_FAID);
+        }
+
+    }
+
+    /**
+     * 绘制字符串
+     */
+    private String drowString(Graphics g, String randomString, int i) {
+        g.setFont(getFont());
+        g.setColor(new Color(random.nextInt(101), random.nextInt(111), random
+                .nextInt(121)));
+        String rand = String.valueOf(getRandomString(random.nextInt(randString
+                .length())));
+        randomString += rand;
+        g.translate(random.nextInt(3), random.nextInt(3));
+        g.drawString(rand, 13 * i, 33);
+        return randomString;
+    }
+
+    /**
+     * 绘制干扰线
+     */
+    private void drowLine(Graphics g) {
+        int x = random.nextInt(width);
+        int y = random.nextInt(height);
+        int xl = random.nextInt(13);
+        int yl = random.nextInt(15);
+        g.drawLine(x, y, x + xl, y + yl);
+    }
+
+    /**
+     * 获取随机的字符
+     */
+    public String getRandomString(int num) {
+        return String.valueOf(randString.charAt(num));
+    }
+}
+ 

+ 60 - 0
beeboxs/src/main/java/com/huimv/beeboxs/config/CorsConfig.java

@@ -0,0 +1,60 @@
+package com.huimv.beeboxs.config;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.reactive.CorsWebFilter;
+import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
+import org.springframework.web.util.pattern.PathPatternParser;
+
+
+/**listCost
+ * 跨域配置
+ * @author chengwenbing
+ */
+@Configuration
+public class CorsConfig {
+//    @Bean
+//    public WebFilter corsFilter() {
+//        return (ServerWebExchange ctx, WebFilterChain chain) -> {
+//            ServerHttpRequest request = ctx.getRequest();
+//            if (CorsUtils.isCorsRequest(request)) {
+//                ServerHttpResponse response = ctx.getResponse();
+//                HttpHeaders headers = response.getHeaders();
+//                headers.set(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, request.getHeaders().getOrigin());
+//                headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, "X-Token,Authorization,x-requested-with,Content-Type");
+//                headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "PUT,POST, GET, OPTIONS, DELETE");
+//                headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
+//                headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*");
+//                headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, "3600");
+//                if (request.getMethod() == HttpMethod.OPTIONS) {
+//                    response.setStatusCode(HttpStatus.OK);
+//                    return Mono.empty();
+//                }
+//            }
+//            return chain.filter(ctx);
+//        };
+//    }
+@Bean
+public CorsWebFilter corsFilter() {
+
+
+    CorsConfiguration config = new CorsConfiguration();
+    config.addAllowedMethod("*");
+    config.addAllowedOrigin("*");
+    config.addAllowedHeader("*");
+    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
+    source.registerCorsConfiguration("/**", config);
+    return new CorsWebFilter(source);
+}
+
+}

+ 26 - 0
beeboxs/src/main/java/com/huimv/beeboxs/config/InterceptorConfig.java

@@ -0,0 +1,26 @@
+package com.huimv.beeboxs.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @Description: 注册验证tocken的拦截器
+ * @Author
+ * @Date 2021/4/19 20:41
+ * @Version V1.0
+ */
+@Configuration
+public class InterceptorConfig implements WebMvcConfigurer {
+    @Bean
+    public JWTInterceptor jwtInterceptor(){
+        return new JWTInterceptor();
+    }
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(jwtInterceptor()).
+                excludePathPatterns("/admin/my/*","/hive/token");
+    }
+}

+ 81 - 0
beeboxs/src/main/java/com/huimv/beeboxs/config/JWTInterceptor.java

@@ -0,0 +1,81 @@
+package com.huimv.beeboxs.config;
+
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.beeboxs.common.token.TokenConstant;
+import com.huimv.beeboxs.common.token.TokenSign;
+import io.jsonwebtoken.Claims;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p>
+ *  jwt拦截器
+ * </p>
+ * @since 2021/4/19
+ */
+public class JWTInterceptor implements HandlerInterceptor {
+
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        // 如果不是映射到方法,则直接通过
+        if (!(handler instanceof HandlerMethod)) {
+            return true;
+        }
+
+        response.setContentType("application/json;charset=utf-8");
+        // 获取token
+        String token=request.getHeader("accessToken");
+
+
+        if (null==token){
+            Map<String, Object> map=new HashMap<>();
+            map.put("data","token is null");
+            map.put("code","401");
+            response.setStatus(401);
+            response.getWriter().write(JSONObject.toJSONString(map));
+            return false;
+        }else {
+            Claims claims = TokenSign.getClaims(token);
+            if (claims == null){
+                Map<String, Object> map=new HashMap<>();
+                map.put("data","token is overdue");
+                map.put("code","403");
+                response.setStatus(403);
+                response.getWriter().write(JSONObject.toJSONString(map));
+                return false;
+            }
+
+            boolean result= TokenSign.verify(token);
+            if (result){
+                //更新存储的token信息
+                TokenConstant.updateTokenMap(token);
+                return true;
+            }
+            Map<String, Object> map=new HashMap<>();
+            map.put("data","token is null");
+            map.put("code","401");
+            response.setStatus(401);
+            response.getWriter().write(JSONObject.toJSONString(map));
+            return false;
+
+        }
+    }
+
+
+    @Override
+    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
+
+    }
+
+    @Override
+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+
+    }
+}

+ 26 - 0
beeboxs/src/main/java/com/huimv/beeboxs/config/MybatisPlusConfig.java

@@ -0,0 +1,26 @@
+package com.huimv.beeboxs.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+
+    /**
+     * 分页插件
+     */
+//    @Bean
+//    public PaginationInterceptor paginationInterceptor() {
+//        return new PaginationInterceptor();
+//    }
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+}

+ 93 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/AuthorizeController.java

@@ -0,0 +1,93 @@
+package com.huimv.beeboxs.controller;
+
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.common.utils.ResultCode;
+import com.huimv.beeboxs.entity.Menu;
+import com.huimv.beeboxs.service.IAuthorizeService;
+import com.huimv.beeboxs.service.IMenuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@CrossOrigin
+@RestController
+@RequestMapping(value = "/admin/auth")
+public class AuthorizeController {
+
+    @Autowired
+    IAuthorizeService iAuthorizeService;
+    @Autowired
+    IMenuService iMenuService;
+
+    @PostMapping("/saveAccountGroup")
+    public Result saveAccountGroup(@RequestBody Map<String, String> map){
+        /*
+         * 保存账号关联权限组数据
+         */
+        String accountId = map.get("accountId");
+        String groupIds = map.get("groupIds");
+        return iAuthorizeService.saveAccountGroup(accountId,groupIds);
+    }
+
+    @PostMapping("/saveGroupMenu")
+    public Result saveGroupMenu(@RequestBody Map<String, String> map){
+        /*
+         * 保存权限组关联菜单数据
+         */
+        String groupId = map.get("groupId");
+        String menuIds = map.get("menuIds");
+        return iAuthorizeService.saveGroupMenu(groupId,menuIds);
+    }
+
+    @RequestMapping("/getGroupByAccount")
+    public Result getGroupByAccount(@RequestParam(name = "accountId", required = true) String accountId){
+        /*
+         * 根据账号获取权限组
+         */
+        return iAuthorizeService.getGroupByAccount (accountId);
+    }
+
+    @GetMapping("/getMenuByGroup")
+    public Result getMenuByGroup(String groupId){
+        /*
+         * 根据权限组获取菜单
+         */
+        return iAuthorizeService.getMenuByGroup(groupId);
+    }
+
+    @RequestMapping("/getMyMenu")
+    public Result getMyMenuAndButton(@RequestParam(name = "userId", required = true) String userId){
+        /*
+         * 获取用户的菜单数据
+         */
+        List<Menu> myMenu = iAuthorizeService.getMyMenuAll(userId);
+        List<Map> list = iMenuService.optimizeListUtil(0,myMenu);
+        return new Result(ResultCode.SUCCESS,list);
+    }
+//    //获取菜单-多级
+//    @RequestMapping("/getMyMenuMultilevel")
+//    public Result getMyMenuMultilevel(@RequestParam(name = "userId", required = true) String userId){
+//        return new Result(ResultCode.SUCCESS,iAuthorizeService.getMyMenuMultilevel(userId));
+//    }
+
+
+    @GetMapping("/getMyButton")
+    public Result getMyButton(@RequestParam(name = "userId", required = true) Integer userId){
+        /*
+         * 获取用户的菜单数据
+         */
+      List list = iAuthorizeService.getMyButton(userId);
+        return new Result(ResultCode.SUCCESS,list);
+    }
+
+
+    @GetMapping("/getAcountByGroup")
+    public Result getAccountByGroup(String groupId){
+        /*
+         * 根据权限组获取菜单
+         */
+        return iAuthorizeService.getAccountByGroup(groupId);
+    }
+}

+ 67 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/BaseHiveFarmController.java

@@ -0,0 +1,67 @@
+package com.huimv.beeboxs.controller;
+
+
+import com.huimv.beeboxs.common.token.TokenSign;
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.entity.BaseHiveFarm;
+import com.huimv.beeboxs.service.IBaseHiveFarmService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-22
+ */
+@RestController
+@RequestMapping("/admin/farm")
+@CrossOrigin
+public class BaseHiveFarmController {
+
+    @Autowired
+    private IBaseHiveFarmService farmService;
+
+    @GetMapping("/getFarm")
+    public Result getFarm(HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        return  farmService.getFarm(userId);
+    }
+
+
+    @PostMapping("/add")
+    public Result add(@RequestBody BaseHiveFarm farm, HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        if (userId != 1){
+            return new Result(10001,"该账号不能操作牧场",false);
+        }
+        return  farmService.add(farm);
+    }
+
+    @PostMapping("/edit")
+    public Result edit(@RequestBody BaseHiveFarm farm, HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        if (userId != 1){
+            return new Result(10001,"该账号不能操作牧场",false);
+        }
+        farmService.updateById(farm);
+        return new Result(10000,"修改成功",true);
+    }
+
+    @GetMapping("/remove")
+    public Result remove(@RequestParam(name = "ids") List<Integer> ids, HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        if (userId != 1){
+            return new Result(10001,"该账号不能操作牧场",false);
+        }
+        farmService.removeByIds(ids);
+        return new Result(10000,"删除成功",true);
+    }
+
+
+}

+ 66 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveBaseBeehiveController.java

@@ -0,0 +1,66 @@
+package com.huimv.beeboxs.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.entity.HiveBaseBeehive;
+import com.huimv.beeboxs.entity.HiveBaseStation;
+import com.huimv.beeboxs.service.IHiveBaseBeehiveService;
+import com.huimv.beeboxs.service.IHiveBaseStationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@RestController
+@CrossOrigin
+@RequestMapping("/hiveBaseBeehive")
+public class HiveBaseBeehiveController {
+    @Autowired
+    private IHiveBaseBeehiveService baseBeehiveService;
+    @Autowired
+    private IHiveBaseStationService baseStationService;
+
+    @PostMapping("/list")
+    public Result page(@RequestBody Map map){
+
+        return baseBeehiveService.searchList(map);
+    }
+
+
+    @PostMapping("/update")
+    public Result update(@RequestBody HiveBaseBeehive hiveBaseBeehive){
+        hiveBaseBeehive.setBindingDate(new Date());
+
+
+        HiveBaseStation hex = baseStationService.getOne(new QueryWrapper<HiveBaseStation>().eq("ap_uid_hex", hiveBaseBeehive.getApUidHex()));
+
+        hiveBaseBeehive.setFarmId(hex.getFarmId());
+        hiveBaseBeehive.setApName(hex.getApName());
+        baseBeehiveService.updateById(hiveBaseBeehive);
+        return new Result(10000,"绑定成功",true);
+    }
+
+    @PostMapping("/listAll")
+    public Result listAll(@RequestBody Map map){
+
+        return baseBeehiveService.listAll(map);
+    }
+
+    @PostMapping("/listCount")
+    public Result listCount(@RequestBody Map map){
+
+        return baseBeehiveService.listCount(map);
+    }
+
+
+}

+ 73 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveBaseStationController.java

@@ -0,0 +1,73 @@
+package com.huimv.beeboxs.controller;
+
+
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.entity.HiveBaseStation;
+import com.huimv.beeboxs.entity.vo.HiveBaseStationVo;
+import com.huimv.beeboxs.service.IBaseHiveFarmService;
+import com.huimv.beeboxs.service.IHiveBaseStationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/hiveBaseStation")
+public class HiveBaseStationController {
+
+    @Autowired
+    private IHiveBaseStationService baseStationService;
+
+    @Autowired
+    private IBaseHiveFarmService baseHiveFarmService;
+
+    @PostMapping("/list")
+    public Result page(@RequestBody Map map){
+
+        return baseStationService.searchList(map);
+    }
+
+    @PostMapping("/listCount")
+    public Result listCount(@RequestBody Map map){
+
+        return baseStationService.listCount(map);
+    }
+
+
+    @PostMapping("/listAll")
+    public Result listAll(@RequestBody Map map){
+
+        return baseStationService.listAll(map);
+    }
+
+    @PostMapping("/update")
+    public Result update(@RequestBody HiveBaseStationVo hiveBaseStationVo){
+
+
+        HiveBaseStation hiveBaseStation = new HiveBaseStation();
+        hiveBaseStation.setId(hiveBaseStationVo.getId());
+        Integer farmIds = hiveBaseStationVo.getFarmIds();
+        String farmName = baseHiveFarmService.getById(farmIds).getFarmName();
+        hiveBaseStation.setFarmId(farmIds);
+        hiveBaseStation.setFarmName(farmName);
+        hiveBaseStation.setBindingDate(new Date());
+        baseStationService.updateById(hiveBaseStation);
+        return new Result(10000,"绑定成功",true);
+    }
+
+
+
+
+
+
+}

+ 33 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveBeehiveController.java

@@ -0,0 +1,33 @@
+package com.huimv.beeboxs.controller;
+
+
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.service.IHiveBeehiveService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/hiveBeehive")
+public class HiveBeehiveController {
+
+    @Autowired
+    private IHiveBeehiveService beehiveService;
+
+    @PostMapping("/list")
+    public Result page(@RequestBody Map map){
+
+        return beehiveService.searchList(map);
+    }
+
+}

+ 31 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveBeehiveOutController.java

@@ -0,0 +1,31 @@
+package com.huimv.beeboxs.controller;
+
+
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.service.IHiveBeehiveOutService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-22
+ */
+@RestController
+@CrossOrigin
+@RequestMapping("/hiveBeehiveOut")
+public class HiveBeehiveOutController {
+    @Autowired
+    private IHiveBeehiveOutService beehiveService;
+
+    @PostMapping("/list")
+    public Result page(@RequestBody Map map){
+
+        return beehiveService.searchList(map);
+    }
+}

+ 21 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveBeehiveStatusController.java

@@ -0,0 +1,21 @@
+package com.huimv.beeboxs.controller;
+
+
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/hiveBeehiveStatus")
+public class HiveBeehiveStatusController {
+
+}

+ 21 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveStationController.java

@@ -0,0 +1,21 @@
+package com.huimv.beeboxs.controller;
+
+
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/hiveStation")
+public class HiveStationController {
+
+}

+ 21 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveStationStatusController.java

@@ -0,0 +1,21 @@
+package com.huimv.beeboxs.controller;
+
+
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/hiveStationStatus")
+public class HiveStationStatusController {
+
+}

+ 21 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/HiveVideoAddrController.java

@@ -0,0 +1,21 @@
+package com.huimv.beeboxs.controller;
+
+
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/hiveVideoAddr")
+public class HiveVideoAddrController {
+
+}

+ 116 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/LoginController.java

@@ -0,0 +1,116 @@
+package com.huimv.beeboxs.controller;
+
+import com.huimv.beeboxs.common.exception.ExceptionEnum;
+import com.huimv.beeboxs.common.exception.MiException;
+import com.huimv.beeboxs.common.token.TokenSign;
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.common.utils.ResultCode;
+import com.huimv.beeboxs.common.utils.VerifyUtil;
+import com.huimv.beeboxs.entity.SysAccountMultilevel;
+import com.huimv.beeboxs.service.ILoginService;
+import com.huimv.beeboxs.session.AccessToken;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+@CrossOrigin
+@RestController
+@RequestMapping(value = "/admin/my")
+public class LoginController {
+
+
+    @Autowired
+    ILoginService iLoginService;
+
+
+
+    @RequestMapping("/logout")
+    public Result logout(@RequestParam(name = "accountName", required = true) String accountName, @RequestParam(name = "password", required = true) String password) {
+        return iLoginService.logout();
+    }
+
+
+    @Autowired
+    private RedisTemplate<String, String> redisTemplate;
+
+    @GetMapping("/send")
+    public void createImg(HttpServletRequest request, HttpServletResponse response)  {
+        try {
+            //设置响应类型,告诉浏览器输出的内容为图片
+            response.setContentType("image/jpeg");
+            //设置响应头信息,告诉浏览器不要缓存此内容
+            response.setHeader("Pragma", "No-cache");
+            response.setHeader("Cache-Control", "no-cache");
+            response.setDateHeader("Expire", 0);
+            VerifyUtil randomValidateCode = new VerifyUtil();
+            //输出验证码图片
+            String code = randomValidateCode.getRandcode(request, response);
+            System.out.println(code);
+            //将生成的随机验证码存放到redis中
+            String remoteHost = request.getRemoteHost();
+            redisTemplate.opsForValue().set(remoteHost,code,300, TimeUnit.SECONDS);
+        } catch (Exception e) {
+            System.out.println("获取验证码异常:"+e);
+            throw new MiException(ExceptionEnum.VERIFCATION_FAID);
+        }
+    }
+
+    //登录-多牧场
+    @PostMapping(value = "/loginMultilevel")
+    public Result loginMultilevel(HttpServletRequest req, @RequestBody Map<String, String> map)  {
+
+
+        String accountName = map.get("accountName");
+        String password = map.get("password");
+//        String code = map.get("code");
+
+        String remoteHost = req.getRemoteHost();
+
+//        String redisCode = redisTemplate.opsForValue().get(remoteHost);
+//        if (redisCode == null) {
+//            return  new Result(10005,"验证码过期,点击刷新",false);
+//        }
+//        if (!redisCode.equals(code.toUpperCase())) {
+//            return  new Result(10006,"验证码错误,登录失败",false);
+//        }
+        // 未对密码加密
+        Result result = iLoginService.loginMultilevel(accountName, password);
+        if(result.getCode() == 10000){
+
+            SysAccountMultilevel accountEntity = (SysAccountMultilevel) result.getData();
+            Integer id = accountEntity.getId();
+
+
+            AccessToken accessToken = new AccessToken();
+            accessToken.setCreated(new Date());
+            accessToken.setAccountName(accountName);
+            accessToken.setCode(result.getCode());
+            accessToken.setMessage(result.getMessage());
+            accessToken.setFarmId(accountEntity.getFarmIds());
+            String token = TokenSign.sign(accountName,id,accountEntity.getFarmIds());
+            accessToken.setToken(token);
+
+            accessToken.setId(id);
+            accessToken.setLoginIp(remoteHost);
+            accessToken.setType(accountEntity.getType());
+            return new Result(ResultCode.SUCCESS,accessToken);
+        }
+        return  result;
+    }
+
+    //测试-token
+    @PostMapping(value = "/getToken")
+    public String getToken(HttpServletRequest req)  {
+        String token =  TokenSign.sign("superbeeboxs",1,null);
+        return  token;
+    }
+
+
+
+}

+ 47 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/MenuController.java

@@ -0,0 +1,47 @@
+package com.huimv.beeboxs.controller;
+
+import com.huimv.beeboxs.common.token.TokenSign;
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.entity.Menu;
+import com.huimv.beeboxs.service.IMenuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+
+@CrossOrigin
+@RestController
+@RequestMapping("/admin/menu")
+public class MenuController {
+    @Autowired
+    private IMenuService menuService;
+
+    @PostMapping("/add")
+    public Result addMenu(@RequestBody Menu menu , HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+
+        return menuService.addMenu(menu,userId);
+    }
+
+
+    @PostMapping("/edit")
+    public Result editMenu(@RequestBody Menu menu){
+        return menuService.editMenu(menu);
+    }
+
+
+    @RequestMapping("/remove")
+    public Result removeMenu(@RequestParam(name = "menuId") Integer menuId){
+        return menuService.removeMenu(menuId);
+    }
+
+    @PostMapping("/list")
+    public Result optimizeList() {
+        return menuService.optimizeList();
+    }
+
+    @PostMapping("/list1")
+    public Result list1() {
+        return menuService.list1();
+    }
+}

+ 64 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/OpenCotroller.java

@@ -0,0 +1,64 @@
+package com.huimv.beeboxs.controller;
+
+import com.huimv.beeboxs.common.token.TokenSign;
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.common.utils.ResultCode;
+import com.huimv.beeboxs.entity.SysAccountMultilevel;
+import com.huimv.beeboxs.service.ILoginService;
+import com.huimv.beeboxs.session.AccessToken;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+
+@RestController
+@RequestMapping("/hive")
+public class OpenCotroller {
+
+    @Autowired
+    ILoginService iLoginService;
+
+    @GetMapping("/token")
+    public  Result test(@RequestParam(name = "account") String account,
+                        @RequestParam(name = "password") String password,
+                        HttpServletRequest req){
+
+//        String code = map.get("code");
+
+        String remoteHost = req.getRemoteHost();
+        Result result = iLoginService.loginMultilevel(account, password);
+        if(result.getCode() == 10000){
+
+            SysAccountMultilevel accountEntity = (SysAccountMultilevel) result.getData();
+            Integer id = accountEntity.getId();
+
+
+            AccessToken accessToken = new AccessToken();
+            accessToken.setCreated(new Date());
+            accessToken.setAccountName(account);
+            accessToken.setCode(result.getCode());
+            accessToken.setMessage(result.getMessage());
+            accessToken.setFarmId(accountEntity.getFarmIds());
+            String token = TokenSign.sign(account,id,accountEntity.getFarmIds());
+            accessToken.setToken(token);
+
+            accessToken.setId(id);
+            accessToken.setLoginIp(remoteHost);
+            accessToken.setType(accountEntity.getType());
+            return new Result(ResultCode.SUCCESS,accessToken);
+        }
+        return  result;
+    }
+
+    @GetMapping("/station/list")
+    public  Result test(@RequestParam(name = "pageNo") String pageNo,
+                        @RequestParam(name = "pageSize") String pageSize,
+                        @RequestParam(name = "netstatus") String netstatus){
+
+return null;
+    }
+}

+ 106 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/SysAccountMultilevelController.java

@@ -0,0 +1,106 @@
+package com.huimv.beeboxs.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.beeboxs.common.token.TokenSign;
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.common.utils.ResultCode;
+import com.huimv.beeboxs.entity.AccountGroup;
+import com.huimv.beeboxs.entity.SysAccountMultilevel;
+import com.huimv.beeboxs.service.IAccountGroupService;
+import com.huimv.beeboxs.service.ISysAccountMultilevelService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-10-14
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/admin/accountMultilevel")
+public class SysAccountMultilevelController {
+    @Autowired
+    private ISysAccountMultilevelService accountMultilevelService;
+
+    @Autowired
+    private IAccountGroupService accountGroupService;
+
+
+
+    @PostMapping("/list")
+    public Result list(@RequestBody Map map , HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        int pageNum = (Integer)map.get("pageNum");
+        int pageSize = (Integer)map.get("pageSize");
+        String searchStr = (String)map.get("searchStr");
+
+        return accountMultilevelService.findUserAccount(searchStr,pageNum,pageSize,userId);
+
+    }
+
+    @PostMapping("/listSubordinate")
+    public Result listSubordinate(@RequestBody Map map , HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        int pageNum = (Integer)map.get("pageNum");
+        int pageSize = (Integer)map.get("pageSize");
+        String searchStr = (String)map.get("searchStr");
+
+        return accountMultilevelService.listSubordinate(searchStr,pageNum,pageSize,userId);
+
+    }
+
+    @PostMapping("/add")
+    public Result add(@RequestBody SysAccountMultilevel sysAccountMultilevel , HttpServletRequest request){
+
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        return accountMultilevelService.add(sysAccountMultilevel,userId);
+
+    }
+
+    @PostMapping("/update")
+    public Result update(@RequestBody SysAccountMultilevel sysAccountMultilevel){
+        accountMultilevelService.updateById(sysAccountMultilevel);
+
+        return new Result(10000,"修改成功",true);
+
+    }
+
+    @GetMapping("/remove")
+    public Result remove(@RequestParam(name ="userIds") List<Integer> userIds){
+
+        accountGroupService.remove(new QueryWrapper<AccountGroup>().in("account_id",userIds));
+        accountMultilevelService.removeByIds(userIds);
+
+        return new Result(10000,"删除成功",true);
+
+    }
+
+    @GetMapping("/setAccountStatus")
+    public Result setAccountStatus(@RequestParam(name = "ids") List<Integer> ids, @RequestParam(name = "status") Integer status){
+        /* 设置账号状态 */
+        return accountMultilevelService.setAccountStatus(ids,status);
+    }
+
+    @GetMapping("/findOne")
+    public Result findOne(Integer id){
+        return new Result(ResultCode.SUCCESS, accountMultilevelService.getById(id));
+    }
+
+
+    @GetMapping("/getLastFarmId")
+    public Result getLastFarmId(HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        return  accountMultilevelService.getLastFarmId(userId);
+    }
+
+
+}

+ 57 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/SysGroupController.java

@@ -0,0 +1,57 @@
+package com.huimv.beeboxs.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.huimv.beeboxs.common.token.TokenSign;
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.entity.AccountGroup;
+import com.huimv.beeboxs.entity.Group;
+import com.huimv.beeboxs.service.IAccountGroupService;
+import com.huimv.beeboxs.service.IGroupService;
+import com.huimv.beeboxs.service.ISysAccountMultilevelService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+@CrossOrigin
+@RestController
+@RequestMapping("/admin/group")
+public class SysGroupController {
+
+    @Autowired
+    private IGroupService groupService;
+
+    @Autowired
+    private IAccountGroupService accountGroupService;
+    @Autowired
+    private ISysAccountMultilevelService accountMultilevelService;
+
+    @PostMapping("/add")
+    public Result addGroup (@RequestBody Group group, HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        return groupService.addGroup(group,userId);
+    }
+
+
+    @PostMapping("/edit")
+    public Result updateGroup(@RequestBody Group group ){
+        return groupService.updateGroup( group);
+    }
+
+    @RequestMapping("/remove")
+    public Result removeGroup(@RequestParam("groupId") Integer groupId) {
+
+        accountGroupService.remove(new QueryWrapper<AccountGroup>().in("group_id",groupId));
+        return groupService.removeGroup(groupId);
+    }
+
+    @PostMapping("/list")
+    public IPage<Group> listGroup(@RequestBody Map map , HttpServletRequest request) {
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        List<Integer> allChildId = accountMultilevelService.getAllChildId(userId);
+        return groupService.listGroup(map,allChildId);
+    }
+}

+ 43 - 0
beeboxs/src/main/java/com/huimv/beeboxs/controller/SysUserController.java

@@ -0,0 +1,43 @@
+package com.huimv.beeboxs.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.beeboxs.service.IUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@CrossOrigin
+@RestController
+@RequestMapping("/admin/user")
+public class SysUserController {
+    @Autowired
+    private IUserService iUserService;
+
+//    @PostMapping("/add")
+//    public Result addUser(@RequestBody User user){
+//        return  iUserService.addUser(user);
+//    }
+//
+//    @PostMapping("/edit")
+//    public Result updateUser(@RequestBody User user){
+//        return iUserService.updateUser(user);
+//    }
+//
+//    @RequestMapping("/remove")
+//    public Result removeUser(@RequestParam("userIds") List<Integer> userIds) {
+//
+//        return iUserService.removeUser(userIds);
+//    }
+
+    @PostMapping("/list")
+    public JSONObject listUser(@RequestBody Map map) {
+        System.out.println();
+        int pageNum = (Integer)map.get("pageNum");
+        int pageSize = (Integer)map.get("pageSize");
+        String searchStr = (String)map.get("searchStr");
+        return iUserService.findUserAccount(searchStr,pageNum,pageSize);
+    }
+
+}

+ 11 - 0
beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/business/UserManager.java

@@ -0,0 +1,11 @@
+package com.huimv.beeboxs.dahuaVideo.business;
+
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.HashMap;
+
+public interface UserManager {
+
+    JSONObject accessToken(HashMap<String, Object> paramMap);
+
+}

+ 18 - 0
beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/business/impl/UserManagerImpl.java

@@ -0,0 +1,18 @@
+package com.huimv.beeboxs.dahuaVideo.business.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.beeboxs.dahuaVideo.business.UserManager;
+import com.huimv.beeboxs.dahuaVideo.util.HttpSend;
+
+import java.util.HashMap;
+
+
+public class UserManagerImpl implements UserManager {
+
+    @Override
+    public JSONObject accessToken(HashMap<String, Object> paramMap) {
+        String method = "accessToken";
+        return HttpSend.execute(paramMap, method);
+    }
+
+}

+ 158 - 0
beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/controller/CameraListController.java

@@ -0,0 +1,158 @@
+package com.huimv.beeboxs.dahuaVideo.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.common.utils.ResultCode;
+import com.huimv.beeboxs.dahuaVideo.business.impl.UserManagerImpl;
+import com.huimv.beeboxs.dahuaVideo.util.HttpSend;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * TODO
+ *
+ * @author CodeYang.
+ * @date 2022/4/22 13:58
+ */
+
+
+
+
+@CrossOrigin
+@RestController
+@RequestMapping(value = "/dahua")
+public class CameraListController {
+
+
+
+    //展示账号下面所有的设备
+    @PostMapping("/listDevice")
+    public  Result page( ){
+
+        HttpSend httpSend = new HttpSend();
+        Map<String, Object>   parmap   = new HashMap<>();
+        parmap.put("token",getToken());
+        parmap.put("bindId","-1");
+        parmap.put("limit",128);
+        parmap.put("type","bindAndShare");
+        parmap.put("needApInfo","false");
+        JSONObject deviceBaseList = httpSend.execute(parmap, "deviceBaseList");
+        //{"result":{"msg":"操作成功。","code":"0","data":{"count":1,"deviceList":[{"channels":[{"channelName":"IPDome-FF35","channelId":"0"}],"deviceId":
+        // "8B06F91PAJ1FF35","bindId":1,"aplist":[]}]}},"id":"23"}
+        System.out.println(deviceBaseList);
+        JSONObject jsonResult = deviceBaseList.getJSONObject("result");
+        JSONObject jsonData = jsonResult.getJSONObject("data");
+        return new Result(ResultCode.SUCCESS, jsonData );
+
+    }
+
+
+    /**
+     * 拿到视频流  返回数据
+     *kitToken  :拿视屏的token
+     * 视频流 url长这样 --前端自己拼拼:   'imou://open.lechange.com/8B06F91PAJ1FF35/0/1?streamId=1'
+      param map
+     * @return
+     */
+    @PostMapping("/getVideoStream")
+    public Result getVideo(@RequestBody Map map){
+
+
+        HttpSend httpSend = new HttpSend();
+        Map<String, Object>   parmap   = new HashMap<>();
+        parmap.put("token",getToken());
+        parmap.put("channelId",map.get("channelId"));
+        parmap.put("enable",true);
+        parmap.put("deviceId",map.get("deviceId"));
+        JSONObject deviceBaseList = httpSend.execute(parmap, "getKitToken");
+
+         String  VideoUrl = "imou://open.lechange.com/"+map.get("deviceId")+"/"+map.get("channelId")+"/1?streamId=1";
+        JSONObject jsonResult = deviceBaseList.getJSONObject("result");
+        JSONObject jsonData = jsonResult.getJSONObject("data");
+        String token = jsonData.getString("kitToken");
+         String  kitToken =token;
+
+        HashMap<String, String> jectHashMap = new HashMap<>();
+        jectHashMap.put("VideoUrl",VideoUrl);
+        jectHashMap.put("kitToken",kitToken);
+
+        System.out.println(deviceBaseList);
+        return new Result(ResultCode.SUCCESS, jectHashMap  );
+
+    }
+
+
+    /**
+     * 拿到视频流  返回数据
+     *kitToken  :拿视屏的token
+     * 视频流 url长这样 --前端自己拼拼:   'imou://open.lechange.com/8B06F91PAJ1FF35/0/1?streamId=1'
+     param map
+     * @return
+     */
+    @PostMapping("/changeDirection")
+    public Result changeDirection(@RequestBody Map map){
+        HttpSend httpSend = new HttpSend();
+        Map<String, Object>   parmap   = new HashMap<>();
+        parmap.put("token",getToken());
+        parmap.put("deviceId",map.get("deviceId"));
+        parmap.put("channelId",map.get("channelId"));
+        parmap.put("operation",map.get("operation"));
+        parmap.put("duration",map.get("duration"));
+        JSONObject deviceBaseList = httpSend.execute(parmap, "controlMovePTZ");
+        System.out.println(deviceBaseList);
+        return new Result(ResultCode.SUCCESS);
+
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    public  String   getToken(){
+        UserManagerImpl userManager = new UserManagerImpl();
+        HashMap<String, Object> paramsMap = new HashMap<String, Object>();
+        JSONObject json = userManager.accessToken(paramsMap);
+
+        JSONObject jsonResult = json.getJSONObject("result");
+        JSONObject jsonData = jsonResult.getJSONObject("data");
+        String token = jsonData.getString("accessToken");
+
+        return token;
+
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}

+ 125 - 0
beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/controller/SetDahuaAccountToFarmInfoController.java

@@ -0,0 +1,125 @@
+package com.huimv.beeboxs.dahuaVideo.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.beeboxs.common.utils.Result;
+import com.huimv.beeboxs.common.utils.ResultCode;
+import com.huimv.beeboxs.entity.FarmVideoAccount;
+import com.huimv.beeboxs.entity.HiveBaseStation;
+import com.huimv.beeboxs.mapper.FarmVideoAccountMapper;
+import com.huimv.beeboxs.mapper.HiveBaseStationMapper;
+import com.huimv.beeboxs.service.FarmVideoAccountService;
+import com.huimv.beeboxs.service.IBaseHiveFarmService;
+import com.huimv.beeboxs.service.IHiveBaseStationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * TODO
+ *添加大华的账号到牧场信息上
+ * @author CodeYang.
+ * @date 2022/4/24 16:16
+ */
+
+
+@CrossOrigin
+@RestController
+@RequestMapping(value = "/dahua")
+public class SetDahuaAccountToFarmInfoController {
+
+
+    @Autowired
+    private FarmVideoAccountMapper farmVideoAccountMapper;
+
+    @Autowired
+    private IBaseHiveFarmService  iBaseHiveFarmService;
+
+ 
+
+    @Autowired
+    private IHiveBaseStationService baseStationService;
+
+
+
+    @Autowired
+    private HiveBaseStationMapper hiveBaseStationMapper;
+
+
+    @Autowired
+    private FarmVideoAccountService   farmVideoAccountService;
+
+    /**
+     * 给牧场绑定大华账户
+     * @param map
+     * @return
+     */
+    @PostMapping("/showDahuaaccount")
+    public Result changeDirection(@RequestBody Map map) {
+
+        QueryWrapper<FarmVideoAccount> FarmVideoAccountQueryWrapper = new QueryWrapper<>();
+        FarmVideoAccountQueryWrapper.eq("farm_id", map.get("farmId"));
+        FarmVideoAccount farmVideoAccounts = farmVideoAccountMapper.selectOne(FarmVideoAccountQueryWrapper);
+
+        return new Result(ResultCode.SUCCESS, farmVideoAccounts);
+
+    }
+
+
+        /**
+         * 给牧场绑定大华账户  账号唯一
+         * @param map
+         * @return
+         */
+        @PostMapping("/addDahuaAccount")
+        public Result addDahuaaccount(@RequestBody Map map){
+
+            QueryWrapper<FarmVideoAccount> FarmVideoAccountQueryWrapper = new QueryWrapper<>();
+            FarmVideoAccountQueryWrapper.eq("farm_id",map.get("farmId"));
+            FarmVideoAccount farmVideoAccounts = farmVideoAccountMapper.selectOne(FarmVideoAccountQueryWrapper);
+            if(farmVideoAccounts!=null){
+                return new Result(ResultCode.FAIL,"一个牧场只能绑定一个账号, 请勿重复添加");
+            }
+            FarmVideoAccount farmVideoAccount = new FarmVideoAccount();
+            farmVideoAccount.setFarmId((Integer)map.get("farmId"));
+            farmVideoAccount.setDahuaAppid((String) map.get("DahuaAppid"));
+            farmVideoAccount.setDahuaSecret((String) map.get("DahuaSecret"));
+            farmVideoAccount.setFarmName( iBaseHiveFarmService.getById((Integer)map.get("farmId")).getFarmName());
+            farmVideoAccount.setRemark((String) map.get("Remark"));
+            farmVideoAccountService.save(farmVideoAccount);
+            return new Result(ResultCode.SUCCESS  );
+
+}
+
+    /**
+     * 给牧场绑定大华账户
+     * @param
+     * @return
+     */
+    @PostMapping("/updateDahuaAccount")
+    public Result updateDahuaaccount(@RequestBody Map map){
+        FarmVideoAccount farmVideoAccount = farmVideoAccountService.getOne(new QueryWrapper<FarmVideoAccount>().eq("farm_id", map.get("farmId")));
+        System.out.println(farmVideoAccount);
+        //只能更改大华的信息  牧场信息不能变
+        farmVideoAccount.setDahuaAppid((String) map.get("DahuaAppid"));
+        farmVideoAccount.setDahuaSecret((String) map.get("DahuaSecret"));
+        farmVideoAccount.setFarmName( iBaseHiveFarmService.getById((Integer)map.get("farmId")).getFarmName());
+        farmVideoAccount.setRemark((String) map.get("Remark"));
+        farmVideoAccountService.updateById(farmVideoAccount);
+        return new Result(ResultCode.SUCCESS );
+    }
+     //绑定摄像头到基站
+
+
+    @PostMapping("/updateCameraToDevice")
+    public Result updateVideo(@RequestBody Map map){
+
+        HiveBaseStation hex = baseStationService.getOne(new QueryWrapper<HiveBaseStation>().eq("id", (String)map.get("Id")));
+        hex.setDeviceId((String) map.get("deviceId"));
+        hex.setChannelId((String) map.get("channelId"));
+        hex.setChannelName((String) map.get("channelName"));
+        baseStationService.updateById(hex);
+        return new Result(10000,"操作成功",true);
+    }
+
+}

+ 18 - 0
beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/util/CONST.java

@@ -0,0 +1,18 @@
+package com.huimv.beeboxs.dahuaVideo.util;
+
+
+
+//客户信息列表----参数在这里修改
+public class CONST {
+
+    public static String PORT = "443";
+
+    public static String HOST = "https://openapi.lechange.cn";
+
+    // 如果不知道appid,请登录open.lechange.com,开发者服务模块中创建应用
+    public static String APPID = "lc8d7fbafc45b74d6d";
+
+    // 如果不知道appsecret,请登录open.lechange.com,开发者服务模块中创建应用
+    public static String SECRET = "3b80b23d58e4461b8238827b560a69";
+
+}

+ 94 - 0
beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/util/HttpSend.java

@@ -0,0 +1,94 @@
+package com.huimv.beeboxs.dahuaVideo.util;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.RequestEntity;
+import org.apache.commons.httpclient.methods.StringRequestEntity;
+import org.apache.commons.httpclient.params.HttpMethodParams;
+import org.apache.commons.httpclient.protocol.Protocol;
+import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
+import org.apache.commons.io.IOUtils;
+
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+
+public class HttpSend {
+
+    public static JSONObject execute(Map<String, Object> paramsMap, String method) {
+        Map<String, Object> map = paramsInit(paramsMap);
+        // 返回json
+        JSONObject jsonObj = doPost(CONST.HOST + ":" + CONST.PORT + "/openapi/" + method, map);
+        System.out.println("=============================");
+        System.out.println("返回结果:" + jsonObj.toJSONString());
+        return jsonObj;
+
+    }
+
+    public static JSONObject doPost(String url, Map<String, Object> map) {
+        
+        String json = JSON.toJSONString(map);
+        ProtocolSocketFactory factory = new MySecureProtocolSocketFactory();
+        Protocol.registerProtocol("https", new Protocol("https", factory, 443));
+        HttpClient client = new HttpClient();
+        client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
+        PostMethod method = new PostMethod(url);
+        System.out.println(url);
+        JSONObject jsonObject = new JSONObject();
+        try {
+            RequestEntity entity = new StringRequestEntity(json, "application/json", "UTF-8");
+            method.setRequestEntity(entity);
+            client.executeMethod(method);
+
+            InputStream inputStream = method.getResponseBodyAsStream();
+            String result = IOUtils.toString(inputStream, "UTF-8");
+            jsonObject = JSONObject.parseObject(result);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            method.releaseConnection();
+        }
+        return jsonObject;
+    }
+
+    protected static Map<String, Object> paramsInit(Map<String, Object> paramsMap) {
+        long time = System.currentTimeMillis() / 1000;
+        String nonce = UUID.randomUUID().toString();
+        String id = UUID.randomUUID().toString();
+
+        StringBuilder paramString = new StringBuilder();
+        paramString.append("time:").append(time).append(",");
+        paramString.append("nonce:").append(nonce).append(",");
+        paramString.append("appSecret:").append(CONST.SECRET);
+
+        String sign = "";
+        // 计算MD5得值
+        try {
+            System.out.println("传入参数:" + paramString.toString().trim());
+            sign = DigestUtils.md5Hex(paramString.toString().trim().getBytes("UTF-8"));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        Map<String, Object> systemMap = new HashMap<String, Object>();
+        systemMap.put("ver", "1.0");
+        systemMap.put("sign", sign);
+        systemMap.put("appId", CONST.APPID);
+        systemMap.put("nonce", nonce);
+        systemMap.put("time", time);
+
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("system", systemMap);
+        map.put("params", paramsMap);
+        map.put("id", id);
+        return map;
+    }
+    
+    
+
+}

+ 97 - 0
beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/util/MySecureProtocolSocketFactory.java

@@ -0,0 +1,97 @@
+package com.huimv.beeboxs.dahuaVideo.util;
+
+
+import org.apache.commons.httpclient.ConnectTimeoutException;
+import org.apache.commons.httpclient.HttpClientError;
+import org.apache.commons.httpclient.params.HttpConnectionParams;
+import org.apache.commons.httpclient.protocol.ControllerThreadSocketFactory;
+import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.UnknownHostException;
+
+public class MySecureProtocolSocketFactory implements SecureProtocolSocketFactory {
+
+    private SSLContext sslContext = null;
+
+    /**
+     * Constructor for MySecureProtocolSocketFactory.
+     */
+    public MySecureProtocolSocketFactory() {
+    }
+
+    /**
+     * @return
+     */
+    private static SSLContext createEasySSLContext() {
+        try {
+            SSLContext context = SSLContext.getInstance("SSL");
+            context.init(null, new TrustManager[] {new MyX509TrustManager()}, null);
+            return context;
+        } catch (Exception e) {
+            throw new HttpClientError(e.toString());
+        }
+    }
+
+    /**
+     * @return
+     */
+    private SSLContext getSSLContext() {
+        if (this.sslContext == null) {
+            this.sslContext = createEasySSLContext();
+        }
+        return this.sslContext;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see
+     * org.apache.commons.httpclient.protocol.ProtocolSocketFactory#createSocket(java.lang.String,
+     * int, java.net.InetAddress, int)
+     */
+    public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort) throws IOException,
+        UnknownHostException {
+
+        return getSSLContext().getSocketFactory().createSocket(host, port, clientHost, clientPort);
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see
+     * org.apache.commons.httpclient.protocol.ProtocolSocketFactory#createSocket(java.lang.String,
+     * int, java.net.InetAddress, int, org.apache.commons.httpclient.params.HttpConnectionParams)
+     */
+    public Socket createSocket(final String host, final int port, final InetAddress localAddress, final int localPort,
+            final HttpConnectionParams params) throws IOException, UnknownHostException, ConnectTimeoutException {
+        if (params == null) {
+            throw new IllegalArgumentException("Parameters may not be null");
+        }
+        int timeout = params.getConnectionTimeout();
+        if (timeout == 0) {
+            return createSocket(host, port, localAddress, localPort);
+        } else {
+            return ControllerThreadSocketFactory.createSocket(this, host, port, localAddress, localPort, timeout);
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see SecureProtocolSocketFactory#createSocket(java.lang.String,int)
+     */
+    public Socket createSocket(String host, int port) throws IOException, UnknownHostException {
+        return getSSLContext().getSocketFactory().createSocket(host, port);
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see SecureProtocolSocketFactory#createSocket(java.net.Socket,java.lang.String,int,boolean)
+     */
+    public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException,
+        UnknownHostException {
+        return getSSLContext().getSocketFactory().createSocket(socket, host, port, autoClose);
+    }
+}

+ 36 - 0
beeboxs/src/main/java/com/huimv/beeboxs/dahuaVideo/util/MyX509TrustManager.java

@@ -0,0 +1,36 @@
+package com.huimv.beeboxs.dahuaVideo.util;
+
+
+import javax.net.ssl.X509TrustManager;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+public class MyX509TrustManager implements X509TrustManager {
+
+    /*
+     * (non-Javadoc)
+     * @see javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.X509Certificate[],
+     * java.lang.String)
+     */
+    public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
+
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.X509Certificate[],
+     * java.lang.String)
+     */
+    public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
+
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers()
+     */
+    public X509Certificate[] getAcceptedIssuers() {
+        return null;
+    }
+
+}

+ 35 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/AccountGroup.java

@@ -0,0 +1,35 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("sys_account_group")
+public class AccountGroup extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private Integer accountId;
+
+    private Integer groupId;
+
+
+}

+ 40 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/BaseHiveFarm.java

@@ -0,0 +1,40 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("base_hive_farm")
+public class BaseHiveFarm implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String farmName;
+
+    private String location;
+
+    private String frontLocation;
+
+    private Boolean rowStatus;
+
+
+}

+ 51 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/CamareDevideBind.java

@@ -0,0 +1,51 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 
+ * 
+ * @author chenshun
+ * @email sunlightcs@gmail.com
+ * @date 2022-04-24 19:20:53
+ */
+@Data
+@TableName("camare_devide_bind")
+public class CamareDevideBind implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 
+	 */
+	private Integer farmId;
+	/**
+	 * 
+	 */
+	private String camareName;
+	/**
+	 * 
+	 */
+	private String camareId;
+	/**
+	 * 
+	 */
+	private String camareChannle;
+	/**
+	 * 
+	 */
+	private String stationId;
+	/**
+	 * 
+	 */
+	private String remark;
+
+}

+ 61 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/FarmVideoAccount.java

@@ -0,0 +1,61 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * TODO
+ *
+ * @author CodeYang.
+ * @date 2022/4/24 16:19
+ */
+
+@Data
+@EqualsAndHashCode()
+@Accessors(chain = true)
+@TableName("farm_video_account")
+public class FarmVideoAccount {
+
+    
+    private static final long serialVersionUID = 1L;
+
+    
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+
+    /**
+     * 牧场id
+     */
+    private Integer farmId;
+
+    /**
+     * 账户Id
+     */
+    private String dahuaAppid;
+
+    /**
+     * 密码
+     */
+    private String  dahuaSecret ;
+    
+    /**
+     * 密码
+     */
+    private String  farmName ;
+
+    /**
+     * 密码
+     */
+    private String  remark ;
+    
+    
+    
+    
+    
+    
+}

+ 37 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/Group.java

@@ -0,0 +1,37 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("sys_group")
+public class Group extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String groupName;
+
+    private String remark;
+
+    private Integer accountId;
+
+
+}

+ 35 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/GroupMenu.java

@@ -0,0 +1,35 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("sys_group_menu")
+public class GroupMenu extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private Integer groupId;
+
+    private Integer menuId;
+
+
+}

+ 144 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveBaseBeehive.java

@@ -0,0 +1,144 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("hive_base_beehive")
+public class HiveBaseBeehive implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 标签ID
+     */
+    private String uidHex;
+
+    /**
+     * 网关ID
+     */
+    private String apUidHex;
+
+    /**
+     * 标签别名
+     */
+    private String tagName;
+
+    /**
+     * 标签型号
+     */
+    private String model;
+
+    /**
+     * 0-表示在线;1-表示离线
+     */
+    private Integer tagState;
+
+    /**
+     * 最近一次上报时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Long uploadTime;
+
+    /**
+     * 标签电压
+     */
+    private String voltage;
+
+    /**
+     * 标签剩余天数
+     */
+    private Integer surPlusdays;
+
+    /**
+     * 标签经度
+     */
+    private String latitude;
+
+    /**
+     * 标签纬度
+     */
+    private String longitude;
+
+    /**
+     * 标签发送序号, 设备每发送一次序号加1
+     */
+    private Integer sentNum;
+
+    /**
+     * 信号强度 ,负数
+     */
+    private Integer rssi;
+
+    /**
+     * 牧场
+     */
+    private Integer farmId;
+
+    /**
+     * 室内温度
+     */
+    private String indoorTem;
+
+    /**
+     *  室内湿度
+     */
+    private String indoorHum;
+
+
+    /**
+     *  室外温度
+     */
+    private String outdoorTem;
+
+    /**
+     *  室外湿度
+     */
+    private String outdoorHum;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date bindingDate;
+
+
+    /**
+     *  基站名字
+     */
+    private String apName;
+
+    /**
+     * 电池状态:(1:电量正常,0:低电量)
+     */
+    private Integer beeStatus0;
+
+    /**
+     * 蜜蜂状态:(1:有蜂,0:无蜂)
+     */
+    private Integer beeStatus1;
+
+    private Integer beeStatus2;
+
+    private Integer beeStatus3;
+
+    private Integer beeStatus4;
+}

+ 111 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveBaseStation.java

@@ -0,0 +1,111 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("hive_base_station")
+public class HiveBaseStation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 网关 ID
+     */
+    private String apUidHex;
+
+    /**
+     * 网关型号
+     */
+    private String model;
+
+    /**
+     * 网关别名
+     */
+    private String apName;
+
+    /**
+     * 0-表示在线;1-表示离线
+     */
+    private Integer apState;
+
+    /**
+     * 1-仓库内;2-室内;3车载;4-出入库闸门;5-电子围栏;6-便携手持;
+0-其他
+     */
+    private Integer purpose;
+
+    /**
+     * 网关经度
+     */
+    private String latitude;
+
+    /**
+     * 网关纬度
+     */
+    private String longitude;
+
+    /**
+     * 环境温度
+     */
+    private String envTem;
+
+
+    /**
+     * 环境湿度
+     */
+    private String envHum;
+
+
+    /**
+     * 牧场id
+     */
+    private Integer farmId;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date bindingDate;
+
+    /**
+     * 牧场id
+     */
+    private String farmName;
+
+
+    /**
+     * 摄像头ID
+     */
+    private String deviceId;
+
+    /**
+     * 通道ID
+     */
+    private String channelId;
+
+    /**
+     * 通道ID
+     */
+    private String channelName;
+
+
+}

+ 117 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveBeehive.java

@@ -0,0 +1,117 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("hive_beehive")
+public class HiveBeehive implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 传感器 ID
+     */
+    private String hiveId;
+
+    /**
+     * 基站ID
+     */
+    private String stationId;
+
+    /**
+     * 蜂箱编码
+     */
+    private String hiveCode;
+
+    /**
+     * 网络状态
+     */
+    private Integer netStatus;
+
+    /**
+     * 电量
+     */
+    private String bat;
+
+    /**
+     * 信号强度
+     */
+    private String rssi;
+
+    /**
+     * 状态
+     */
+    private Integer beeStatus;
+
+    /**
+     * 温度
+     */
+    private String temp;
+
+    /**
+     * 湿度
+     */
+    private String humi;
+
+    /**
+     * 上传时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date uploadTime;
+
+    /**
+     * 拓展字段 1
+     */
+    private String other1;
+
+    /**
+     * 拓展字段 2
+     */
+    private String other2;
+
+    /**
+     * 日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createDate;
+
+    /**
+     * 牧场id
+     */
+    private Integer farmId;
+
+    /**
+     * 室外温度
+     */
+    private String tempOut;
+
+
+    /**
+     * 室外湿度
+     */
+    private String humiOut;
+
+
+}

+ 106 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveBeehiveOut.java

@@ -0,0 +1,106 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("hive_beehive_out")
+public class HiveBeehiveOut implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 传感器 ID
+     */
+    private String hiveId;
+
+    /**
+     * 基站ID
+     */
+    private String stationId;
+
+    /**
+     * 蜂箱编码
+     */
+    private String hiveCode;
+
+    /**
+     * 网络状态
+     */
+    private Integer netStatus;
+
+    /**
+     * 电量
+     */
+    private String bat;
+
+    /**
+     * 信号强度
+     */
+    private String rssi;
+
+    /**
+     * 状态
+     */
+    private Integer beeStatus;
+
+    /**
+     * 温度
+     */
+    private String temp;
+
+    /**
+     * 湿度
+     */
+    private String humi;
+
+    /**
+     * 上传时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date uploadTime;
+
+    /**
+     * 拓展字段 1
+     */
+    private String other1;
+
+    /**
+     * 拓展字段 2
+     */
+    private String other2;
+
+    /**
+     * 日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createDate;
+
+    /**
+     * 牧场id
+     */
+    private Integer farmId;
+
+
+}

+ 63 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveBeehiveStatus.java

@@ -0,0 +1,63 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("hive_beehive_status")
+public class HiveBeehiveStatus implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 蜂箱 ID
+     */
+    private String hiveId;
+
+    /**
+     * 蜂箱编码
+     */
+    private String hiveCode;
+
+    /**
+     * 状态类型
+     */
+    private String abnormal;
+
+    /**
+     * 状态描述
+     */
+    private String desc;
+
+    /**
+     * 日期
+     */
+    private LocalDateTime createDate;
+
+    /**
+     * 牧场id
+     */
+    private Integer farmId;
+
+
+}

+ 98 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveStation.java

@@ -0,0 +1,98 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("hive_station")
+public class HiveStation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 基站ID
+     */
+    private String stationId;
+
+    /**
+     * GPS 经度
+     */
+    private String longitude;
+
+    /**
+     * GPS 纬度
+     */
+    private String latitude;
+
+    /**
+     * 天气
+     */
+    private String weather;
+
+    /**
+     * 温度数据(室外)
+     */
+    private String temp;
+
+    /**
+     * 湿度数据(室外)
+     */
+    private String humi;
+
+    /**
+     * 网络状态
+     */
+    private Integer netStatus;
+
+    /**
+     * 基站电量
+     */
+    private Integer bat;
+
+    /**
+     * 基站上传时间
+     */
+    private LocalDateTime uploadTime;
+
+    /**
+     * 拓展字段 1
+     */
+    private String other1;
+
+    /**
+     * 拓展字段 2
+     */
+    private String other2;
+
+    /**
+     * 日期
+     */
+    private LocalDateTime createDate;
+
+    /**
+     * 牧场id
+     */
+    private Integer farmId;
+
+
+}

+ 68 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveStationStatus.java

@@ -0,0 +1,68 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("hive_station_status")
+public class HiveStationStatus implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 基站ID
+     */
+    private String stationId;
+
+    /**
+     * GPS 经度
+     */
+    private String longitude;
+
+    /**
+     * GPS 纬度
+     */
+    private String latitude;
+
+    /**
+     * 状态类型
+     */
+    private String abnormal;
+
+    /**
+     * 状态描述
+     */
+    private String desc;
+
+    /**
+     * 日期
+     */
+    private LocalDateTime createDate;
+
+    /**
+     * 牧场id
+     */
+    private Integer farmId;
+
+
+}

+ 62 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/HiveVideoAddr.java

@@ -0,0 +1,62 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("hive_video_addr")
+public class HiveVideoAddr implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 地点
+     */
+    private String site;
+
+    /**
+     * rtsp协议
+     */
+    private String rtsp协议;
+
+    /**
+     * ws协议
+     */
+    private String ws协议;
+
+    /**
+     * 账号
+     */
+    private String 账号;
+
+    /**
+     * 密码
+     */
+    private String 密码;
+
+    /**
+     * 牧场id
+     */
+    private Integer 牧场id;
+
+
+}

+ 52 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/Menu.java

@@ -0,0 +1,52 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("sys_menu")
+public class Menu extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String title;
+
+    private String url;
+
+    private String remark;
+
+    private Integer parentId;
+
+    private Integer sort;
+
+    private Integer weight;
+
+    private String permission;
+
+    private Boolean ifShow;
+
+
+
+//    private List<Menu> children;
+
+
+
+}

+ 49 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/SysAccountMultilevel.java

@@ -0,0 +1,49 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-10-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+public class SysAccountMultilevel extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String account;
+
+    private String password;
+
+    private Integer pid;
+
+    private String pids;
+
+    private Integer accountStatus;
+
+    private String farmIds;
+
+    private String color;
+
+    private Boolean mode;
+
+    private Integer lastFarmId;
+
+    private String userName;
+    private Integer type;
+
+}

+ 47 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/User.java

@@ -0,0 +1,47 @@
+package com.huimv.beeboxs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("sys_user")
+public class User extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String userName;
+
+    private Integer male;
+
+    private String birthday;
+
+    private String mobile;
+
+    private String address;
+
+    private String job;
+
+    private String remark;
+
+    private String userId;
+
+
+}

+ 74 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/dto/HiveBaseBeeStationDao.java

@@ -0,0 +1,74 @@
+package com.huimv.beeboxs.entity.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class HiveBaseBeeStationDao {
+    private Integer id;
+
+    /**
+     * 网关 ID
+     */
+    private String apUidHex;
+
+    /**
+     * 网关型号
+     */
+    private String model;
+
+    /**
+     * 网关别名
+     */
+    private String apName;
+
+    /**
+     * 0-表示在线;1-表示离线
+     */
+    private Integer apState;
+
+    /**
+     * 1-仓库内;2-室内;3车载;4-出入库闸门;5-电子围栏;6-便携手持;
+     0-其他
+     */
+    private Integer purpose;
+
+    /**
+     * 网关经度
+     */
+    private String latitude;
+
+    /**
+     * 网关纬度
+     */
+    private String longitude;
+
+    /**
+     * 环境温度
+     */
+    private String envTem;
+
+
+    /**
+     * 环境湿度
+     */
+    private String envHum;
+
+
+    /**
+     * 牧场id
+     */
+    private Integer farmId;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date bindingDate;
+
+    private Integer beeBoxNum;
+
+    private Integer onBeeBoxNum;
+
+    private Integer offBeeBoxNum;
+
+}

+ 80 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/dto/HiveBaseBeehiveDto.java

@@ -0,0 +1,80 @@
+package com.huimv.beeboxs.entity.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.beeboxs.entity.dto
+ * @Description : TODO
+ * @Author : yuxuexuan
+ * @Create : 2022/4/21 0021 14:10
+ **/
+@Data
+public class HiveBaseBeehiveDto {
+    private Integer id;
+
+    /**
+     * 标签ID
+     */
+    private String uidHex;
+
+    /**
+     * 网关ID
+     */
+    private String apUidHex;
+
+    /**
+     * 标签别名
+     */
+    private String tagName;
+
+    /**
+     * 标签型号
+     */
+    private String model;
+
+    /**
+     * 0-表示在线;1-表示离线
+     */
+    private Integer tagState;
+
+    /**
+     * 最近一次上报时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date uploadTime;
+
+    /**
+     * 标签电压
+     */
+    private String voltage;
+
+    /**
+     * 标签剩余天数
+     */
+    private Integer surPlusdays;
+
+    /**
+     * 标签经度
+     */
+    private String latitude;
+
+    /**
+     * 标签纬度
+     */
+    private String longitude;
+
+    /**
+     * 标签发送序号, 设备每发送一次序号加1
+     */
+    private Integer sentNum;
+
+    /**
+     * 信号强度 ,负数
+     */
+    private Integer rssi;
+
+}

+ 106 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/dto/MenuDto.java

@@ -0,0 +1,106 @@
+package com.huimv.beeboxs.entity.dto;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.huimv.beeboxs.entity.Menu;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+public class MenuDto extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+
+    private String menuName;
+
+    private String url;
+
+    private String remark;
+
+    private Integer parentId;
+
+    private Integer sort;
+
+    private List<Menu> children;
+
+    public MenuDto() {
+    }
+
+    public MenuDto(Integer id, String menuName, String url, String remark, Integer parentId, Integer sort, List<Menu> children) {
+        this.id = id;
+        this.menuName = menuName;
+        this.url = url;
+        this.remark = remark;
+        this.parentId = parentId;
+        this.sort = sort;
+        this.children = children;
+    }
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getMenuName() {
+        return menuName;
+    }
+
+    public void setMenuName(String menuName) {
+        this.menuName = menuName;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Integer getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Integer parentId) {
+        this.parentId = parentId;
+    }
+
+    public Integer getSort() {
+        return sort;
+    }
+
+    public void setSort(Integer sort) {
+        this.sort = sort;
+    }
+
+    public List<Menu> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<Menu> children) {
+        this.children = children;
+    }
+}

+ 29 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/dto/UserAccountDto.java

@@ -0,0 +1,29 @@
+package com.huimv.beeboxs.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class UserAccountDto {
+
+     private Integer id;
+
+     private String userName;
+
+     private Integer male;
+
+     private String birthday;
+
+     private String mobile;
+
+     private String address;
+
+     private String job;
+
+     private String remark;
+
+     private String userId;
+
+     private String accountName;
+
+     private Integer accountStatus;
+}

+ 28 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/dto/UserAndAccountGroup.java

@@ -0,0 +1,28 @@
+package com.huimv.beeboxs.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class UserAndAccountGroup {
+    private String accountName;
+
+    private Integer accountStatus;
+
+    private Integer id;
+
+    private String userName;
+
+    private Integer male;
+
+    private String birthday;
+
+    private String mobile;
+
+    private String address;
+
+    private String job;
+
+    private String remark;
+
+    private Long userId;
+}

+ 76 - 0
beeboxs/src/main/java/com/huimv/beeboxs/entity/vo/HiveBaseStationVo.java

@@ -0,0 +1,76 @@
+package com.huimv.beeboxs.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class HiveBaseStationVo {
+    private Integer id;
+
+    /**
+     * 网关 ID
+     */
+    private String apUidHex;
+
+    /**
+     * 网关型号
+     */
+    private String model;
+
+    /**
+     * 网关别名
+     */
+    private String apName;
+
+    /**
+     * 0-表示在线;1-表示离线
+     */
+    private Integer apState;
+
+    /**
+     * 1-仓库内;2-室内;3车载;4-出入库闸门;5-电子围栏;6-便携手持;
+     0-其他
+     */
+    private Integer purpose;
+
+    /**
+     * 网关经度
+     */
+    private String latitude;
+
+    /**
+     * 网关纬度
+     */
+    private String longitude;
+
+    /**
+     * 环境温度
+     */
+    private String envTem;
+
+
+    /**
+     * 环境湿度
+     */
+    private String envHum;
+
+
+    /**
+     * 牧场id
+     */
+    private Integer farmIds;
+
+    
+    /**
+     * 云台编号
+     */
+    private String cameraId ;
+
+    
+    /**
+     * 云台通道
+     */
+    private String cameraChannelId;
+
+
+
+}

+ 20 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/AccountGroupMapper.java

@@ -0,0 +1,20 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.AccountGroup;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Repository
+public interface AccountGroupMapper extends BaseMapper<AccountGroup> {
+
+    void removeAccountGroup(@Param("groupIds") String groupIds);
+}

+ 16 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/BaseHiveFarmMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.BaseHiveFarm;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-22
+ */
+public interface BaseHiveFarmMapper extends BaseMapper<BaseHiveFarm> {
+
+}

+ 13 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/FarmVideoAccountMapper.java

@@ -0,0 +1,13 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.FarmVideoAccount;
+
+/**
+ * TODO
+ *
+ * @author CodeYang.
+ * @date 2022/4/24 16:39
+ */
+public interface FarmVideoAccountMapper extends BaseMapper<FarmVideoAccount> {
+}

+ 18 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/GroupMapper.java

@@ -0,0 +1,18 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.Group;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Repository
+public interface GroupMapper extends BaseMapper<Group> {
+
+}

+ 21 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/GroupMenuMapper.java

@@ -0,0 +1,21 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.GroupMenu;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Repository
+public interface GroupMenuMapper extends BaseMapper<GroupMenu> {
+
+    void removeGroupMenu(@Param("groupId") String groupId);
+
+}

+ 16 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveBaseBeehiveMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.HiveBaseBeehive;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+public interface HiveBaseBeehiveMapper extends BaseMapper<HiveBaseBeehive> {
+
+}

+ 16 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveBaseStationMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.HiveBaseStation;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+public interface HiveBaseStationMapper extends BaseMapper<HiveBaseStation> {
+
+}

+ 16 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveBeehiveMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.HiveBeehive;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+public interface HiveBeehiveMapper extends BaseMapper<HiveBeehive> {
+
+}

+ 16 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveBeehiveOutMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.HiveBeehiveOut;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-22
+ */
+public interface HiveBeehiveOutMapper extends BaseMapper<HiveBeehiveOut> {
+
+}

+ 16 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveBeehiveStatusMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.HiveBeehiveStatus;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+public interface HiveBeehiveStatusMapper extends BaseMapper<HiveBeehiveStatus> {
+
+}

+ 16 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveStationMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.HiveStation;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+public interface HiveStationMapper extends BaseMapper<HiveStation> {
+
+}

+ 16 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveStationStatusMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.HiveStationStatus;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+public interface HiveStationStatusMapper extends BaseMapper<HiveStationStatus> {
+
+}

+ 16 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/HiveVideoAddrMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.beeboxs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.beeboxs.entity.HiveVideoAddr;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2022-04-21
+ */
+public interface HiveVideoAddrMapper extends BaseMapper<HiveVideoAddr> {
+
+}

+ 0 - 0
beeboxs/src/main/java/com/huimv/beeboxs/mapper/MenuMapper.java


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor