溪鸭夏 2 роки тому
батько
коміт
dc303b6b60
100 змінених файлів з 6887 додано та 1010 видалено
  1. 389 298
      .idea/workspace.xml
  2. 7 0
      pom.xml
  3. 9 0
      src/main/java/com/template/api/SmartUserControllerAPI.java
  4. 75 0
      src/main/java/com/template/common/utils/DingTalkInterface.java
  5. 151 0
      src/main/java/com/template/common/utils/HttpClientDingUtils.java
  6. 23 23
      src/main/java/com/template/common/utils/HttpClientUtils.java
  7. 61 11
      src/main/java/com/template/common/utils/RequestUtils.java
  8. 10 0
      src/main/java/com/template/common/utils/TimeExchange.java
  9. 25 0
      src/main/java/com/template/config/DingConfig.java
  10. 2 0
      src/main/java/com/template/controller/ScheduleController.java
  11. 1221 678
      src/main/java/com/template/controller/SmartUserController.java
  12. 6 0
      src/main/resources/application-dev.yml
  13. 6 0
      src/main/resources/application-prod.yml
  14. 6 0
      target/classes/application-dev.yml
  15. 6 0
      target/classes/application-prod.yml
  16. 3 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  17. 3 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  18. BIN
      target/mybatis_plus-0.0.1-SNAPSHOT.jar.original
  19. 57 0
      wanzai/.gitignore
  20. 1 0
      wanzai/README.md
  21. 84 0
      wanzai/src/main/java/com/template/AutoCode.java
  22. 19 0
      wanzai/src/main/java/com/template/MybatisPlusApplication.java
  23. 12 0
      wanzai/src/main/java/com/template/annotation/ControllerIsShow.java
  24. 17 0
      wanzai/src/main/java/com/template/annotation/DESRespondSecret.java
  25. 18 0
      wanzai/src/main/java/com/template/annotation/ExcelExport.java
  26. 20 0
      wanzai/src/main/java/com/template/annotation/ExcelImport.java
  27. 28 0
      wanzai/src/main/java/com/template/annotation/PassToken.java
  28. 14 0
      wanzai/src/main/java/com/template/annotation/UserLoginCheck.java
  29. 96 0
      wanzai/src/main/java/com/template/aop/DESResponseSecretAspect.java
  30. 45 0
      wanzai/src/main/java/com/template/aop/LoginCheckAspect.java
  31. 32 0
      wanzai/src/main/java/com/template/api/DriverStockControllerAPI.java
  32. 18 0
      wanzai/src/main/java/com/template/api/ExcelControllerAPI.java
  33. 29 0
      wanzai/src/main/java/com/template/api/HikvisionAPI.java
  34. 21 0
      wanzai/src/main/java/com/template/api/LogInfoControllerAPI.java
  35. 36 0
      wanzai/src/main/java/com/template/api/LoginControllerAPI.java
  36. 12 0
      wanzai/src/main/java/com/template/api/OutdoorScreenControllerAPI.java
  37. 37 0
      wanzai/src/main/java/com/template/api/RepairAdminControllerAPI.java
  38. 49 0
      wanzai/src/main/java/com/template/api/SmartApplyControllerAPI.java
  39. 64 0
      wanzai/src/main/java/com/template/api/SmartAttendanceControllerAPI.java
  40. 75 0
      wanzai/src/main/java/com/template/api/SmartAuthorGroupControllerAPI.java
  41. 35 0
      wanzai/src/main/java/com/template/api/SmartAuthorityControllerAPI.java
  42. 35 0
      wanzai/src/main/java/com/template/api/SmartBuildControllerAPI.java
  43. 36 0
      wanzai/src/main/java/com/template/api/SmartBuildMeterControllerAPI.java
  44. 7 0
      wanzai/src/main/java/com/template/api/SmartCarAccessControllerAPI.java
  45. 51 0
      wanzai/src/main/java/com/template/api/SmartClassControllerAPI.java
  46. 7 0
      wanzai/src/main/java/com/template/api/SmartCodeOpenIdControllerAPI.java
  47. 37 0
      wanzai/src/main/java/com/template/api/SmartDataClassControllerAPI.java
  48. 46 0
      wanzai/src/main/java/com/template/api/SmartDataSourceControllerAPI.java
  49. 55 0
      wanzai/src/main/java/com/template/api/SmartDataSourceLogControllerAPI.java
  50. 138 0
      wanzai/src/main/java/com/template/api/SmartDataTaskControllerAPI.java
  51. 48 0
      wanzai/src/main/java/com/template/api/SmartDepartmentControllerAPI.java
  52. 35 0
      wanzai/src/main/java/com/template/api/SmartDeviceControllerAPI.java
  53. 50 0
      wanzai/src/main/java/com/template/api/SmartDutiesControllerAPI.java
  54. 46 0
      wanzai/src/main/java/com/template/api/SmartEvaluateStudentControlle2API.java
  55. 44 0
      wanzai/src/main/java/com/template/api/SmartEvaluateStudentControllerAPI.java
  56. 57 0
      wanzai/src/main/java/com/template/api/SmartEvaluateTeacherControllerAPI.java
  57. 35 0
      wanzai/src/main/java/com/template/api/SmartExamtypeControllerAPI.java
  58. 21 0
      wanzai/src/main/java/com/template/api/SmartFaceDiscernControllerAPI.java
  59. 49 0
      wanzai/src/main/java/com/template/api/SmartFreezeRecordControllerAPI.java
  60. 46 0
      wanzai/src/main/java/com/template/api/SmartGradeControllerAPI.java
  61. 46 0
      wanzai/src/main/java/com/template/api/SmartIdentityControllerAPI.java
  62. 40 0
      wanzai/src/main/java/com/template/api/SmartMenuControllerAPI.java
  63. 35 0
      wanzai/src/main/java/com/template/api/SmartMeterControllerAPI.java
  64. 36 0
      wanzai/src/main/java/com/template/api/SmartMeterDetailControllerAPI.java
  65. 16 0
      wanzai/src/main/java/com/template/api/SmartNotificationControllerAPI.java
  66. 28 0
      wanzai/src/main/java/com/template/api/SmartQrcodeControllerAPI.java
  67. 40 0
      wanzai/src/main/java/com/template/api/SmartSchoolControllerAPI.java
  68. 109 0
      wanzai/src/main/java/com/template/api/SmartScoreControllerAPI.java
  69. 41 0
      wanzai/src/main/java/com/template/api/SmartScreenshotControllerAPI.java
  70. 45 0
      wanzai/src/main/java/com/template/api/SmartScreenshotRecordControllerAPI.java
  71. 36 0
      wanzai/src/main/java/com/template/api/SmartSemesterControllerAPI.java
  72. 36 0
      wanzai/src/main/java/com/template/api/SmartSubjectControllerAPI.java
  73. 222 0
      wanzai/src/main/java/com/template/api/SmartUserControllerAPI.java
  74. 128 0
      wanzai/src/main/java/com/template/api/SmartVisitorControllerAPI.java
  75. 83 0
      wanzai/src/main/java/com/template/api/SmartWarningControllerAPI.java
  76. 16 0
      wanzai/src/main/java/com/template/api/SmsCodeControllerAPI.java
  77. 50 0
      wanzai/src/main/java/com/template/api/SystemMenuControllerAPI.java
  78. 31 0
      wanzai/src/main/java/com/template/api/UploadControllerAPI.java
  79. 104 0
      wanzai/src/main/java/com/template/api/WechatScanLoginControllerAPI.java
  80. 26 0
      wanzai/src/main/java/com/template/api/WxGzhControllerAPI.java
  81. 16 0
      wanzai/src/main/java/com/template/common/constanst/Constanst.java
  82. 14 0
      wanzai/src/main/java/com/template/common/exception/EmsException.java
  83. 199 0
      wanzai/src/main/java/com/template/common/exception/EmsExceptionHandler.java
  84. 29 0
      wanzai/src/main/java/com/template/common/exception/MyCustomException.java
  85. 43 0
      wanzai/src/main/java/com/template/common/jh/ReqRespResearchProductQuestionnaireItem.java
  86. 243 0
      wanzai/src/main/java/com/template/common/jh/SectionUtil.java
  87. 7 0
      wanzai/src/main/java/com/template/common/result/Code.java
  88. 83 0
      wanzai/src/main/java/com/template/common/result/ResponseStatusEnum.java
  89. 23 0
      wanzai/src/main/java/com/template/common/utils/AccessToken.java
  90. 85 0
      wanzai/src/main/java/com/template/common/utils/AesTestOne.java
  91. 165 0
      wanzai/src/main/java/com/template/common/utils/AesUtil.java
  92. 199 0
      wanzai/src/main/java/com/template/common/utils/AesUtils.java
  93. 47 0
      wanzai/src/main/java/com/template/common/utils/Base64Util.java
  94. 53 0
      wanzai/src/main/java/com/template/common/utils/ClassYear.java
  95. 254 0
      wanzai/src/main/java/com/template/common/utils/CommonUtil.java
  96. 269 0
      wanzai/src/main/java/com/template/common/utils/DBUtil.java
  97. 9 0
      wanzai/src/main/java/com/template/common/utils/DataBliu.java
  98. 241 0
      wanzai/src/main/java/com/template/common/utils/DateUtils.java
  99. 75 0
      wanzai/src/main/java/com/template/common/utils/DingTalkInterface.java
  100. 0 0
      wanzai/src/main/java/com/template/common/utils/EncryptUtil.java

Різницю між файлами не показано, бо вона завелика
+ 389 - 298
.idea/workspace.xml


+ 7 - 0
pom.xml

@@ -256,6 +256,13 @@
             <artifactId>easyexcel</artifactId>
             <version>2.2.11</version>
         </dependency>
+
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>dingtalk</artifactId>
+            <version>2.1.14</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 9 - 0
src/main/java/com/template/api/SmartUserControllerAPI.java

@@ -149,6 +149,15 @@ public interface SmartUserControllerAPI {
     CommonResult downloadUserExcel();
 
     /**
+     * 导出教师模板
+     *
+     * @return
+     */
+    @GetMapping(value = "/downloadTeacherExcel")
+    @ApiOperation(value = "导出教师Excel模板", notes = "导出教师Excel模板", httpMethod = "GET")
+    CommonResult downloadTeacherExcel();
+
+    /**
      * 导出更新人员模板
      *
      * @return

+ 75 - 0
src/main/java/com/template/common/utils/DingTalkInterface.java

@@ -0,0 +1,75 @@
+package com.template.common.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import com.template.config.CosConfig;
+import com.template.config.DingConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Author: binguo
+ * @Date: 2024/5/8 星期三 9:51
+ * @Description: com.template.common.utils
+ * @Version: 1.0
+ */
+@Component
+public class DingTalkInterface {
+    private static Logger logger = LoggerFactory.getLogger( DingTalkInterface.class);
+
+    @Resource
+    private DingConfig dingConfig;
+
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    //获取accesstoken
+    public String getAccessToken() throws Exception {
+        Map<String, String> headerMap = new HashMap<>();
+        String result = HttpClientDingUtils.sendGet(dingConfig.getBaseurl()+"/gettoken",headerMap,"UTF-8");
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        String status = String.valueOf(jsonObject.get("errcode"));
+        if(!status.equals("0")){
+
+        }
+        String accessToken = String.valueOf(jsonObject.get("access_token"));
+        return accessToken;
+    }
+
+    //获取考勤报表列定义
+    public JSONObject getattcolumns() throws Exception {
+        Map<String, String> headerMap = new HashMap<>();
+        headerMap.put("access_token",this.getAccessToken());
+        logger.info("getattcolumns入参:======="+headerMap + "=====");
+        String result = HttpClientDingUtils.sendPost(dingConfig.getBaseurl()+"/topapi/attendance/getattcolumns",null,headerMap);
+        logger.info("getattcolumns出参:======="+result+"====");
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        String errcode = String.valueOf(jsonObject.get("errcode"));
+
+        return jsonObject;
+    }
+
+    //获取考勤表表列值
+    public JSONObject getcolumnval(String userId,String columId,String startTime,String endTime) throws Exception {
+        Map<String, String> headerMap = new HashMap<>();
+        headerMap.put("access_token",this.getAccessToken());
+        JSONObject json = new JSONObject();
+        json.put("userid", userId);
+        json.put("column_id_list", columId);
+        json.put("from_date", startTime);
+        json.put("to_date", endTime);
+        logger.info("getcolumnval入参:======="+json.toString() + "=====");
+        String result = HttpClientDingUtils.sendPost(dingConfig.getBaseurl()+"/topapi/attendance/getcolumnval",json,headerMap);
+        logger.info("getcolumnval出参:======="+result+"====");
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        String errcode = String.valueOf(jsonObject.get("errcode"));
+
+        return jsonObject;
+    }
+}

+ 151 - 0
src/main/java/com/template/common/utils/HttpClientDingUtils.java

@@ -0,0 +1,151 @@
+package com.template.common.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.http.Header;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicHeader;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Component;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @Author: binguo
+ * @Date: 2024/5/8 星期三 10:02
+ * @Description: com.template.common.utils
+ * @Version: 1.0
+ */
+@Component
+public class HttpClientDingUtils {
+    // 默认字符集
+
+    public static final String ENCODING = "UTF-8";
+
+    private static final int CONNECT_TIMEOUT = 6000;
+
+    private static final int SOCKET_TIMEOUT = 6000;
+
+    public  static String sendPost(String serviceUrl, Map<String, String> headers, JSONObject params, String encoding) {
+        String resultJson = null;
+        CloseableHttpClient client = HttpClients.createDefault();
+        HttpPost httpPost = new HttpPost();
+        try {
+            httpPost.setURI(new URI(serviceUrl));
+            if(headers != null){
+                Header[] allHeader = new BasicHeader[headers.size()];
+                int i = 0;
+                for (Map.Entry<String, String> entry: headers.entrySet()){
+                    allHeader[i] = new BasicHeader(entry.getKey(), entry.getValue());
+                    i++;
+                }
+                httpPost.setHeaders(allHeader);
+            }
+            RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build();
+            httpPost.setConfig(requestConfig);
+            httpPost.setEntity(new StringEntity(JSON.toJSONString(params)));
+            CloseableHttpResponse response = client.execute(httpPost);
+            int status = response.getStatusLine().getStatusCode();
+            if (status == HttpStatus.SC_OK) {
+                resultJson = EntityUtils.toString(response.getEntity(),encoding);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            httpPost.releaseConnection();
+        }
+        return resultJson;
+    }
+
+    public  static String sendGet(String serviceUrl, Map<String, String> headers,Map<String, String> params,String encoding){
+        String resultJson = null;
+        CloseableHttpClient client = HttpClients.createDefault();
+        HttpGet httpGet = null;
+        try {
+            URIBuilder uriBuilder = new URIBuilder(serviceUrl);
+            if (params != null) {
+                Set<Map.Entry<String, String>> entrySet = params.entrySet();
+                for (Map.Entry<String, String> entry : entrySet) {
+                    uriBuilder.setParameter(entry.getKey(), entry.getValue());
+                }
+            }
+            httpGet = new HttpGet(uriBuilder.build());
+            RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build();
+            httpGet.setConfig(requestConfig);
+            if (headers != null) {
+                Set<Map.Entry<String, String>> entrySet = headers.entrySet();
+                for (Map.Entry<String, String> entry : entrySet) {
+                    // 设置到请求头到HttpRequestBase对象中
+                    httpGet.setHeader(entry.getKey(), entry.getValue());
+                }
+            }
+            CloseableHttpResponse httpResponse = null;
+            httpResponse = client.execute(httpGet);
+            if (httpResponse != null && httpResponse.getStatusLine() != null) {
+                if (httpResponse.getEntity() != null) {
+                    resultJson = EntityUtils.toString(httpResponse.getEntity(), ENCODING);
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            httpGet.releaseConnection();
+        }
+        return resultJson;
+    }
+
+    public static String sendPost(String url, JSONObject data,String token) {
+        // 设置默认请求头
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json; charset=UTF-8");
+        headers.put("Accept", "application/json");
+        headers.put("Accept-Encoding", ENCODING);
+        headers.put("Authorization","Bearer "+token);
+        return sendPost(url, headers, data, ENCODING);
+    }
+
+    public static String sendPost(String url, JSONObject data, Map<String, String> headers) {
+        return sendPost(url, headers, data, ENCODING);
+    }
+
+    public static String sendPost(String url, JSONObject data) {
+        // 设置默认请求头
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json; charset=UTF-8");
+        headers.put("Accept", "application/json");
+        headers.put("Accept-Encoding", ENCODING);
+        return sendPost(url, headers, data, ENCODING);
+    }
+
+    public static String sendGet(String url, Map<String, String> params) {
+        // 设置默认请求头
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json; charset=UTF-8");
+        headers.put("Accept", "application/json");
+        headers.put("Accept-Encoding", ENCODING);
+        return sendGet(url, headers, params, ENCODING);
+
+    }
+
+    public static String sendGet(String url, Map<String, String> params,String token) {
+        // 设置默认请求头
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json; charset=UTF-8");
+        headers.put("Accept", "application/json");
+        headers.put("Accept-Encoding", ENCODING);
+        headers.put("Authorization","Bearer "+token);
+        return sendGet(url, headers, params, ENCODING);
+
+    }
+}

+ 23 - 23
src/main/java/com/template/common/utils/HttpClientUtils.java

@@ -29,7 +29,7 @@ import java.util.Map;
  * @date 2018年9月7日
  */
 public class HttpClientUtils {
-	
+
 	/**
 	 * 默认参数设置
 	 * setConnectTimeout:设置连接超时时间,单位毫秒。
@@ -37,37 +37,37 @@ public class HttpClientUtils {
 	 * setSocketTimeout:请求获取数据的超时时间,单位毫秒。访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。 暂时定义15分钟
 	 */
 	private RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(600000).setConnectTimeout(600000).setConnectionRequestTimeout(600000).build();
-	
+
 	/**
 	 * 静态内部类---作用:单例产生类的实例
 	 * @author Administrator
 	 *
 	 */
-	private static class LazyHolder {    
-       private static final HttpClientUtils INSTANCE = new HttpClientUtils();    
-       
-    }  
+	private static class LazyHolder {
+       private static final HttpClientUtils INSTANCE = new HttpClientUtils();
+
+    }
 	private HttpClientUtils(){}
 	public static HttpClientUtils getInstance(){
-		return LazyHolder.INSTANCE;    
+		return LazyHolder.INSTANCE;
 	}
-	
+
 	/**
 	 * 发送 post请求
 	 * @param httpUrl 地址
 	 */
 	public String sendHttpPost(String httpUrl) {
-		HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost  
+		HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
 		return sendHttpPost(httpPost);
 	}
-	
+
 	/**
 	 * 发送 post请求
 	 * @param httpUrl 地址
 	 * @param params 参数(格式:key1=value1&key2=value2)
 	 */
 	public String sendHttpPost(String httpUrl, String params) {
-		HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost  
+		HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
 		try {
 			//设置参数
 			StringEntity stringEntity = new StringEntity(params, "UTF-8");
@@ -78,15 +78,15 @@ public class HttpClientUtils {
 		}
 		return sendHttpPost(httpPost);
 	}
-	
+
 	/**
 	 * 发送 post请求
 	 * @param httpUrl 地址
 	 * @param maps 参数
 	 */
 	public String sendHttpPost(String httpUrl, Map<String, String> maps) {
-		HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost  
-		// 创建参数队列  
+		HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
+		// 创建参数队列
 		List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
 		for (String key : maps.keySet()) {
 			nameValuePairs.add(new BasicNameValuePair(key, maps.get(key)));
@@ -98,7 +98,7 @@ public class HttpClientUtils {
 		}
 		return sendHttpPost(httpPost);
 	}
-	
+
 	/**
 	 * 发送Post请求
 	 * @param httpPost
@@ -149,7 +149,7 @@ public class HttpClientUtils {
 		HttpGet httpGet = new HttpGet(httpUrl);// 创建get请求
 		return sendHttpGet(httpGet);
 	}
-	
+
 	/**
 	 * 发送 get请求Https
 	 * @param httpUrl
@@ -158,10 +158,10 @@ public class HttpClientUtils {
 		HttpGet httpGet = new HttpGet(httpUrl);// 创建get请求
 		return sendHttpsGet(httpGet);
 	}
-	
+
 	/**
 	 * 发送Get请求
-	 * @param httpPost
+	 * @param httpGet
 	 * @return
 	 */
 	private String sendHttpGet(HttpGet httpGet) {
@@ -172,7 +172,7 @@ public class HttpClientUtils {
 		try {
 			// 创建默认的httpClient实例.
 
-			
+
 			httpClient = HttpClients.createDefault();
 
 			httpGet.setConfig(requestConfig);
@@ -197,7 +197,7 @@ public class HttpClientUtils {
 		}
 		return responseContent;
 	}
-	
+
 	/**
 	 * 发送Get请求Https
 	 * @param httpPost
@@ -235,7 +235,7 @@ public class HttpClientUtils {
 		}
 		return responseContent;
 	}
-	
-	
-	
+
+
+
 }

+ 61 - 11
src/main/java/com/template/common/utils/RequestUtils.java

@@ -1,11 +1,8 @@
 package com.template.common.utils;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.net.URL;
-import java.net.URLConnection;
+import javax.net.ssl.HttpsURLConnection;
+import java.io.*;
+import java.net.*;
 import java.util.List;
 import java.util.Map;
 
@@ -18,11 +15,12 @@ import java.util.Map;
 public class RequestUtils {
     /**
      * GET请求
-     * @param url 请求地址
+     *
+     * @param url   请求地址
      * @param param 请求参数
      * @return
      */
-    public static String httpGet(String url,String param){
+    public static String httpGet(String url, String param) {
         String result = "";
         BufferedReader in = null;
         try {
@@ -70,12 +68,12 @@ public class RequestUtils {
 
     /**
      * POST请求
-     * @param url 请求的url
+     *
+     * @param url   请求的url
      * @param param 参数
      * @return
      */
-    public static String httpPost(String url, String param){
-        String dummyData = param.replace("%", "").replace(",", "").replace(" ", "+").replace("/","");
+    public static String httpPost(String url, String param) {
         PrintWriter out = null;
         BufferedReader in = null;
         String result = "";
@@ -101,6 +99,8 @@ public class RequestUtils {
             in = new BufferedReader(
                     new InputStreamReader(conn.getInputStream()));
             String line;
+
+            int sds = conn.getInputStream().available();
             while ((line = in.readLine()) != null) {
                 result += line;
             }
@@ -123,4 +123,54 @@ public class RequestUtils {
         }
         return result;
     }
+
+
+    /**
+     * POST请求
+     *
+     * @param urlStr 请求的url
+     * @param param  参数
+     * @return
+     */
+    public static String httpPosts(String urlStr, String param) throws IOException {
+        String result = "";
+        try {
+            URL url = new URL(urlStr);
+
+            HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
+            connection.setRequestMethod("POST");
+            connection.setDoOutput(true);
+            connection.setConnectTimeout(3000); // 设置连接超时为3秒
+            connection.setReadTimeout(5000);    // 设置读取超时为5秒
+            // 设置请求属性,如Content-Type
+            connection.setRequestProperty("Content-Type", "application/json");
+
+            // 写入POST数据
+            String postData = param;
+            byte[] outputInBytes = postData.getBytes("UTF-8");
+            OutputStream os = connection.getOutputStream();
+            os.write(outputInBytes);
+            os.close();
+            // 获取响应码
+            int responseCode = connection.getResponseCode();
+            System.out.println("POST Response Code :: " + responseCode);
+
+            // 读取响应内容
+            if (responseCode == HttpsURLConnection.HTTP_OK) {
+                String line;
+                java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(connection.getInputStream()));
+
+                int sds = connection.getInputStream().available();
+                while ((line = in.readLine()) != null) {
+                    result += line;
+                }
+                in.close();
+            }
+        } catch (
+                Exception e) {
+            e.printStackTrace();
+        }
+
+        return result;
+    }
 }

+ 10 - 0
src/main/java/com/template/common/utils/TimeExchange.java

@@ -249,6 +249,12 @@ public class TimeExchange {
         return sp.format(new Date());
     }
 
+    // 获取当前日期
+    public static String getDateMillS() {
+        SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:sss");
+        return sp.format(new Date());
+    }
+
     // 获取当前日期的年月
     public static String getDateMonth() {
         SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-");
@@ -744,6 +750,10 @@ public class TimeExchange {
     }
 
     public static void main(String[] args) {
+        int bzValue = 1 / 2;
+        String sdsd ="";
+        System.out.println(bzValue);
+
     }
 
 

+ 25 - 0
src/main/java/com/template/config/DingConfig.java

@@ -0,0 +1,25 @@
+package com.template.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Component
+@ConfigurationProperties(prefix = "ding")
+@Data
+public class DingConfig {
+    /**
+     * key
+     */
+    private String appKey;
+    /**
+     * 密钥
+     */
+    private String appSecrets;
+    /**
+     * 调用接口地址
+     */
+    private String baseurl;
+
+}
+

+ 2 - 0
src/main/java/com/template/controller/ScheduleController.java

@@ -201,4 +201,6 @@ public class ScheduleController {
     }
 
 
+
+
 }

Різницю між файлами не показано, бо вона завелика
+ 1221 - 678
src/main/java/com/template/controller/SmartUserController.java


Різницю між файлами не показано, бо вона завелика
+ 6 - 0
src/main/resources/application-dev.yml


Різницю між файлами не показано, бо вона завелика
+ 6 - 0
src/main/resources/application-prod.yml


Різницю між файлами не показано, бо вона завелика
+ 6 - 0
target/classes/application-dev.yml


Різницю між файлами не показано, бо вона завелика
+ 6 - 0
target/classes/application-prod.yml


+ 3 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -96,6 +96,7 @@ com\template\model\evaluate\teacher\SmartScoreManageList.class
 com\template\annotation\UserLoginCheck.class
 com\template\model\seewo\StudentServiceBatchSaveClassStudentsParam$StudentInfo$StudentInfoBuilder.class
 com\template\model\pojo\SystemMenu.class
+com\template\common\utils\DingTalkInterface.class
 com\template\model\request\insertSmartGradeRequest.class
 com\template\services\impl\SmartEvaluateTeacherServiceImpl.class
 com\template\common\jh\SectionUtil.class
@@ -216,6 +217,7 @@ com\template\model\vo\TimeGroupVo.class
 com\template\services\impl\SmartUploadServiceImpl.class
 com\template\controller\WechatScanLoginController.class
 com\template\services\impl\SmartAuthorityServiceImpl.class
+com\template\common\utils\HttpClientDingUtils.class
 com\template\model\phoneBook\ClassBook.class
 com\template\common\result\Code.class
 com\template\common\utils\Base64Util.class
@@ -686,6 +688,7 @@ com\template\model\vo\BsDeviceNoVo.class
 com\template\mapper\SmartAuthorGroupMapper.class
 com\template\model\seewo\PersonalLeaveListSchoolPeriodRecordsResult$Data.class
 com\template\services\impl\RepairAdminServiceImpl.class
+com\template\config\DingConfig.class
 com\template\config\ControlConfig.class
 com\template\services\impl\SmartScoreManageServiceImpl.class
 com\template\model\vo\EvaluateTeacherVo.class

+ 3 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -68,6 +68,7 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\evaluate\teacher\SmartEvaluateTdetailList.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\insertDepartmentRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\UploadControllerAPI.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\HttpClientDingUtils.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\HttpUtils.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartDataTask.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartCodeOpenIdServiceImpl.java
@@ -231,6 +232,7 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\SmartFreezeRecordPageVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartCodeOpenIdService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartTimeGroup.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\DingTalkInterface.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartScoreManageServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartBuildControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\seewo\AttendanceServiceListAttendClassRecordsParam.java
@@ -277,6 +279,7 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\weixin\AccessToken.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartUser.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\insertSmartGradeRequest.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\config\DingConfig.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartClassServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartMenuMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartAttendanceServiceImpl.java

BIN
target/mybatis_plus-0.0.1-SNAPSHOT.jar.original


+ 57 - 0
wanzai/.gitignore

@@ -0,0 +1,57 @@
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+
+### Spring Boot
+
+target/
+!target/classes/
+!target/dependency-reduced-pom.xml
+!target/maven-archiver/pom.properties
+!target/maven-archiver/pom.xml
+!**/.mvn/wrapper/maven-wrapper.jar
+!**/.mvn/wrapper/maven-wrapper.properties
+
+### IntelliJ IDEA
+
+.idea/
+*.iml
+*.ipr
+*.iws
+*.xml
+
+### Eclipse
+
+.project
+.classpath
+.settings/
+
+### Windows
+
+Thumbs.db
+*.DS_Store
+
+### macOS
+
+.DS_Store

+ 1 - 0
wanzai/README.md

@@ -0,0 +1 @@
+#backend_code

+ 84 - 0
wanzai/src/main/java/com/template/AutoCode.java

@@ -0,0 +1,84 @@
+package com.template;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+import com.baomidou.mybatisplus.generator.config.PackageConfig;
+import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+import com.baomidou.mybatisplus.generator.config.po.TableFill;
+import com.baomidou.mybatisplus.generator.config.rules.DateType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+
+import java.util.ArrayList;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 15:46
+ * @Description: com.video
+ * @Version: 1.0
+ */
+public class AutoCode {
+    public static void main(String[] args) {
+// 需要构建一个 代码自动生成器 对象
+        AutoGenerator mpg = new AutoGenerator();
+// 配置策略
+// 1、全局配置
+        GlobalConfig gc = new GlobalConfig();
+        String projectPath = System.getProperty("user.dir");
+        gc.setOutputDir(projectPath + "/src/main/java");
+        gc.setAuthor("ceshi");
+        gc.setOpen(false);
+        gc.setFileOverride(false); // 是否覆盖
+        gc.setServiceName("%sService"); // 去Service的I前缀
+        gc.setIdType(IdType.UUID);
+        gc.setDateType(DateType.ONLY_DATE);
+        gc.setSwagger2(true);
+        mpg.setGlobalConfig(gc);
+//2、设置数据源
+        DataSourceConfig dsc = new DataSourceConfig();
+        dsc.setUrl("jdbc:mysql://111.231.169.217:3306/smart_middle?useUnicode=tru&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai");
+        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+        dsc.setUsername("root");
+        dsc.setPassword("Chuanghai2023.");
+        dsc.setDbType(DbType.MYSQL);
+        mpg.setDataSource(dsc);
+        //3、包的配置
+        PackageConfig pc = new PackageConfig();
+        pc.setModuleName("auto");
+        pc.setParent("com.template");
+        pc.setEntity("model");
+        pc.setMapper("mapper");
+        pc.setService("services");
+        pc.setController("controller");
+        mpg.setPackageInfo(pc);
+        //4、策略配置
+        StrategyConfig strategy = new StrategyConfig();
+        strategy.setInclude("smart_family_index"); // 设置要映射的表名"smart_class","smart_grade","smart_attendance"
+        strategy.setNaming(NamingStrategy.underline_to_camel);//下划线转驼峰
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//下划线转驼峰
+        strategy.setEntityLombokModel(true); // 自动lombok;
+        strategy.setLogicDeleteFieldName("deleted");//逻辑删除 调用service的删除方法不会真删除 会把deleted字段的值改为1 (未删除="0",删除="1")
+        // 自动填充配置
+        TableFill deletedCreate = new TableFill("deleted", FieldFill.INSERT);
+        TableFill timeCreate = new TableFill("create_time", FieldFill.INSERT);
+        TableFill userCreate = new TableFill("create_user", FieldFill.INSERT);
+        TableFill timeModified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+        TableFill userModified = new TableFill("update_user", FieldFill.INSERT_UPDATE);
+        ArrayList<TableFill> tableFills = new ArrayList<>();
+        tableFills.add(deletedCreate);
+        tableFills.add(timeCreate);
+        tableFills.add(userCreate);
+        tableFills.add(timeModified);
+        tableFills.add(userModified);
+        strategy.setTableFillList(tableFills);
+        // 乐观锁
+        strategy.setVersionFieldName("version");
+        strategy.setRestControllerStyle(true);
+        strategy.setControllerMappingHyphenStyle(true); //localhost:8080/hello_id_2
+        mpg.setStrategy(strategy);
+        mpg.execute(); //执行
+    }
+}

+ 19 - 0
wanzai/src/main/java/com/template/MybatisPlusApplication.java

@@ -0,0 +1,19 @@
+package com.template;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+@EnableCaching//开启缓存
+@SpringBootApplication
+@EnableTransactionManagement //开启事务回滚
+@EnableScheduling // 开启定时任务
+public class MybatisPlusApplication {
+
+    public static void main(String[] args) {
+
+        SpringApplication.run(MybatisPlusApplication.class, args);
+    }
+}

+ 12 - 0
wanzai/src/main/java/com/template/annotation/ControllerIsShow.java

@@ -0,0 +1,12 @@
+package com.template.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(value = {ElementType.METHOD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ControllerIsShow {
+    String value() default "";
+}

+ 17 - 0
wanzai/src/main/java/com/template/annotation/DESRespondSecret.java

@@ -0,0 +1,17 @@
+package com.template.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 返回参数加密注解
+ */
+
+//可以作用在类上和方法上
+@Target(value = {ElementType.METHOD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DESRespondSecret {
+    boolean validated() default true;
+}

+ 18 - 0
wanzai/src/main/java/com/template/annotation/ExcelExport.java

@@ -0,0 +1,18 @@
+package com.template.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExcelExport {
+    String value();
+
+    int sort() default 0;
+
+    String kv() default "";
+
+    String example() default "";
+}

+ 20 - 0
wanzai/src/main/java/com/template/annotation/ExcelImport.java

@@ -0,0 +1,20 @@
+package com.template.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExcelImport {
+    String value();
+
+    String kv() default "";
+
+    boolean required() default false;
+
+    int maxLength() default 255;
+
+    boolean unique() default false;
+}

+ 28 - 0
wanzai/src/main/java/com/template/annotation/PassToken.java

@@ -0,0 +1,28 @@
+package com.template.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/** 说明
+ * 在方法上加入本注解 即可接口拦截
+ * @interface:代表当前类是注解
+ * @Target:描述当前的注解可以定义在扫描资源上。
+ * 属性value:
+ *     定义具体的资源。包括:
+ *     ElementType.METHOD:可以定义在方法上
+ *     ElementType.TYPE:可以定义在类上
+ *     ElementType.FIELD:可以定义在属性上
+ *     ElementType.PARAMETER:可以定义在方法参数上
+ * @Retention:当前注解在什么时候有效
+ *     定义具体的生效标记
+ *     RetentionPolicy.RUNTIME:运行时有效
+ *     RetentionPolicy.SOURCE:源码中有效
+ *     RetentionPolicy.CLASS:字节码有效
+ *///说明 该注解要加在控制器中的方法上才会生效 加在api中无法生效
+@Target(value = {ElementType.METHOD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface PassToken {
+    boolean requeired() default true;
+}

+ 14 - 0
wanzai/src/main/java/com/template/annotation/UserLoginCheck.java

@@ -0,0 +1,14 @@
+package com.template.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/4/10 星期一 14:04
+ * @Description: com.video.services.annotation
+ * @Version: 1.0
+ */
+@Target(ElementType.METHOD)
+public @interface UserLoginCheck {
+}

+ 96 - 0
wanzai/src/main/java/com/template/aop/DESResponseSecretAspect.java

@@ -0,0 +1,96 @@
+package com.template.aop;
+
+import com.alibaba.fastjson.JSON;
+import com.template.annotation.DESRespondSecret;
+import com.template.common.utils.EncryptUtil;
+import com.template.model.result.CommonResult;
+import com.template.model.seewo.OrganizationNodeServiceInitSchoolClassesParam;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Method;
+
+/**
+ * @Author: binguo
+ * @Date: 2024/2/26 星期一 10:02
+ * @Description: com.template.aop
+ * @Version: 1.0
+ */
+@Component
+@Aspect
+//规定AOP的执行顺序
+//Order(1) 多个aop时可通过该注解来确定执行顺序
+public class DESResponseSecretAspect {
+
+    // 定义切点,使用了@DESRespondSecret注解的类 或 使用了@DESRespondSecret注解的方法
+
+    /**
+     * 切点,方法上有注解或类上有注解
+     * 拦截类或者是方法上标注注解的方法
+     */
+    @Pointcut("@within(com.template.annotation.DESRespondSecret) || @annotation(com.template.annotation.DESRespondSecret)")
+    public void pointCut() {
+    }
+
+    @Around("pointCut()")
+    public Object after(ProceedingJoinPoint joinPoint) throws Throwable {
+        Object rvt = joinPoint.proceed(joinPoint.getArgs());
+        return rvt;
+    }
+
+    /**
+     * 与After的区别在于AfterReturning只有在方法执行成功之后才会被植入,如果After和
+     * AfterReturning同时存在于一个文件中,谁写在前面谁先运行
+     *
+     * @param joinpoint
+     * @param rvt
+     * @return
+     */
+    @AfterReturning(pointcut = "execution(public * com.template.controller.*.*(..))", returning = "rvt")
+    public Object log(JoinPoint joinpoint, Object rvt) {
+        //获取被代理对象
+        Object target = joinpoint.getTarget();
+        //获取通知签名 获取方法上的DESRespondSecret注解
+        MethodSignature signature = (MethodSignature) joinpoint.getSignature();
+        try {
+            // 获取被代理方法
+            Method pointMethod = target.getClass().getMethod(signature.getName(), signature.getParameterTypes());
+            // 获取被代理方法上面的注解@DESRespondSecret
+            DESRespondSecret secret = pointMethod.getAnnotation(DESRespondSecret.class);
+            // 被代理方法上没有,则说明@DESRespondSecret注解在被代理类上
+            if (secret == null) {
+                secret = target.getClass().getAnnotation(DESRespondSecret.class);
+            }
+            //类上也没有 直接返回
+            if (secret == null) {
+                return rvt;
+            }
+            // 如果有,并且值为false,则不进行加密
+            if (secret != null && !secret.validated()) {
+                return rvt;
+            } else {
+                CommonResult baseVo1 = (CommonResult) rvt;
+                // 获取返回值json字符串
+                Object data = baseVo1.getData();
+                if (null != data) {
+                    String jsonString = JSON.toJSONString(data);
+                    // 加密
+                    String s = EncryptUtil.encrypt(jsonString);
+                    baseVo1.setData(s);
+                }
+                return baseVo1;
+
+            }
+        } catch (Throwable throwable) {
+            throwable.printStackTrace();
+        }
+        return rvt;
+    }
+
+}

+ 45 - 0
wanzai/src/main/java/com/template/aop/LoginCheckAspect.java

@@ -0,0 +1,45 @@
+package com.template.aop;
+
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.After;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/4/10 星期一 14:10
+ * @Description: com.video.aop
+ * @Version: 1.0
+ */
+@Aspect//把当前类标识作为一个切面供容器读取
+@Component//将此类标记为Spring容器中的一个Bean
+@Order(0)//order的值越小,优先级越高 order如果不标注数字,默认最低优先级,因为其默认值是int最大值
+public class LoginCheckAspect {
+
+    @Around("@annotation(com.template.annotation.UserLoginCheck)")
+    public Object userLoginCheck(ProceedingJoinPoint process) throws Throwable {
+        System.out.println("用户登录检测机制");
+        if(1 == 1){
+           //通过抛异常方式拦截
+           // throw new Exception("非法登录");
+        }
+
+        Object proceed;
+        proceed = process.proceed();//执行目标方法
+        return proceed;//将执行目标方法后的返回值返回出去
+    }
+
+    @After("@annotation(com.template.annotation.UserLoginCheck)")
+    public void test(){
+        System.out.println("测试After");
+    }
+
+    @Before("@annotation(com.template.annotation.UserLoginCheck)")
+    public void test1(){
+        System.out.println("测试Before");
+    }
+
+}

+ 32 - 0
wanzai/src/main/java/com/template/api/DriverStockControllerAPI.java

@@ -0,0 +1,32 @@
+package com.template.api;
+
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@RequestMapping("/api/driver")
+@Api(tags = {"DriverStockController"}, value = "驾驶舱")
+public interface DriverStockControllerAPI {
+
+    @RequestMapping(value = "/getClassTj")
+    @ResponseBody
+    public CommonResult getClassTj();
+
+    @RequestMapping(value = "/getVisitorTj")
+    @ResponseBody
+    public CommonResult getVisitorTj();
+
+    @RequestMapping(value = "/queryPageSmartWarning")
+    @ResponseBody
+    public CommonResult queryPageSmartWarning(int currentPage, int pageCount, String name, String state);
+
+    @RequestMapping(value = "/getEnergyTj")
+    @ResponseBody
+    public CommonResult getEnergyTj();
+
+    @RequestMapping(value = "/getEnergyTjAvg")
+    @ResponseBody
+    public CommonResult getEnergyTjAvg();
+
+}

+ 18 - 0
wanzai/src/main/java/com/template/api/ExcelControllerAPI.java

@@ -0,0 +1,18 @@
+package com.template.api;
+
+import com.template.annotation.PassToken;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Api(tags = {"ExcelController"}, value = "导入excel表")
+@RequestMapping("/api/excel")
+public interface ExcelControllerAPI {
+
+    @PostMapping("/toExcel")
+    @ApiOperation(value = "导入excel表更新用户",httpMethod = "POST")
+    @PassToken
+    void toExcel(String fileUrl);
+
+}

+ 29 - 0
wanzai/src/main/java/com/template/api/HikvisionAPI.java

@@ -0,0 +1,29 @@
+package com.template.api;
+
+import com.alibaba.fastjson.JSONObject;
+import io.swagger.annotations.Api;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@RequestMapping({"/eventRcv"})
+@Api(tags = {"HikvisionController"}, value = "海康威视回调地址")
+public interface HikvisionAPI {
+    @PostMapping({"/subscription"})
+    void subscription(HttpServletRequest request);
+
+    @PostMapping({"/faceComparison"})
+    void faceComparison(HttpServletRequest request);
+
+    @PostMapping({"/emphasisFace"})
+    void emphasisFace(HttpServletRequest request);
+
+    @PostMapping({"/playback"})
+    JSONObject playback();
+
+    @PostMapping({"/general"})
+    JSONObject general(@RequestBody JSONObject jsonObject);
+}

+ 21 - 0
wanzai/src/main/java/com/template/api/LogInfoControllerAPI.java

@@ -0,0 +1,21 @@
+package com.template.api;
+
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+@Api(tags = {"LogInfoController"}, value = "登入接口")
+@RequestMapping("/api/logInfo")
+public interface LogInfoControllerAPI {
+
+    @GetMapping("/verify")
+    @ApiOperation(value = "验证手机号phone",httpMethod = "GET")
+    CommonResult verifyPhone(String phone);
+
+
+    @PostMapping("/logIn")
+    @ApiOperation(value = "短信验证",httpMethod = "POST")
+    CommonResult logInfo(String phone,String code);
+}

+ 36 - 0
wanzai/src/main/java/com/template/api/LoginControllerAPI.java

@@ -0,0 +1,36 @@
+package com.template.api;
+
+import com.template.annotation.PassToken;
+import com.template.model.pojo.RepairAdmin;
+import com.template.model.request.changePasswordRequest;
+import com.template.model.request.loginRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+
+@RequestMapping("/api/login")
+@Api(tags = {"LoginController"}, value = "登录")
+public interface LoginControllerAPI {
+
+    @GetMapping(value = "/queryReduce")
+    @ApiOperation(value = "查看系统版本", notes = "查看系统版本", httpMethod = "GET")
+    CommonResult queryReduce();
+
+    @PostMapping(value = "/Register")
+    @ApiOperation(value = "注册", notes = "注册", httpMethod = "POST")
+    CommonResult Register(@Validated @RequestBody RepairAdmin loginRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/Login")
+    @ApiOperation(value = "登录", notes = "登录", httpMethod = "POST")
+    CommonResult Login(@Validated @RequestBody loginRequest lr, BindingResult bindingResult);
+
+    @PostMapping(value = "/ChangePassword")
+    @ApiOperation(value = "修改密码", notes = "修改密码", httpMethod = "POST")
+    CommonResult ChangePassword(@Validated @RequestBody changePasswordRequest cpr, @RequestHeader("user_head") String userhead, BindingResult bindingResult);
+}

+ 12 - 0
wanzai/src/main/java/com/template/api/OutdoorScreenControllerAPI.java

@@ -0,0 +1,12 @@
+package com.template.api;
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+
+@RequestMapping("/api/outdoorScreen")
+@Api(tags = {"OutdoorScreenController"}, value = "户外大屏")
+public interface OutdoorScreenControllerAPI {
+
+
+}

+ 37 - 0
wanzai/src/main/java/com/template/api/RepairAdminControllerAPI.java

@@ -0,0 +1,37 @@
+package com.template.api;
+
+import com.template.model.pojo.RepairAdmin;
+import com.template.model.pojo.SystemMenu;
+import com.template.model.request.freezeRepairAdminRequest;
+import com.template.model.request.updateRepairAdminRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@RequestMapping("/api/repairAdmin")
+@Api(tags = {"RepairAdminController"}, value = "账号")
+public interface RepairAdminControllerAPI {
+
+    @PostMapping(value = "/insertRepairAdmin")
+    @ApiOperation(value = "添加账号", notes = "添加账号数据", httpMethod = "POST")
+    CommonResult InsertRepairAdmin(@Validated @RequestBody RepairAdmin repairAdmin, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageRepairAdmins")
+    @ApiOperation(value = "账号分页数据", notes = "账号分页数据", httpMethod = "POST")
+    CommonResult queryPageRepairAdmins(@RequestParam int currentPage, @RequestParam int pageCount, String account, String phone, String userName);
+
+    @PostMapping(value = "/freezeRepairAdminById")
+    @ApiOperation(value = "根据ID冻结指定账号", notes = "根据ID冻结指定账户", httpMethod = "POST")
+    CommonResult freezeRepairAdminById(@Validated @RequestBody freezeRepairAdminRequest frar, BindingResult bindingResult);
+
+    @GetMapping(value = "/deleteRepairAdminById")
+    @ApiOperation(value = "根据ID删除指定账号", notes = "根据ID删除指定账号", httpMethod = "POST")
+    CommonResult deleteRepairAdminById(@RequestParam String id);
+
+    @PostMapping(value = "/updateRepairAdminById")
+    @ApiOperation(value = "编辑账号数据", notes = "编辑账号数据", httpMethod = "POST")
+    CommonResult updateRepairAdminById(@Validated @RequestBody updateRepairAdminRequest ra, @RequestHeader("user_head") String userhead, BindingResult bindingResult);
+}

+ 49 - 0
wanzai/src/main/java/com/template/api/SmartApplyControllerAPI.java

@@ -0,0 +1,49 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartApply;
+import com.template.model.pojo.SystemMenu;
+import com.template.model.result.CommonResult;
+import com.template.model.vo.SystemMenuTreeVo;
+import com.template.model.vo.SystemMenuVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartApply")
+@Api(tags = {"SmartApplyControllerAPI"}, value = "应用管理")
+public interface SmartApplyControllerAPI {
+    @GetMapping(value = "/queryApplys")
+    @ApiOperation(value = "查询应用管理", notes = "查询应用管理", httpMethod = "GET")
+    CommonResult queryApplys();
+
+    @PostMapping(value = "/insertSmartApply")
+    @ApiOperation(value = "添加应用管理", notes = "添加应用管理数据", httpMethod = "POST")
+    CommonResult insertSmartApply(@Validated @RequestBody SmartApply smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartApplyById")
+    @ApiOperation(value = "编辑应用管理数据", notes = "编辑应用管理数据", httpMethod = "POST")
+    CommonResult updateSmartApplyById(@Validated @RequestBody SmartApply ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartApply")
+    @ApiOperation(value = "应用管理分页数据", notes = "应用管理分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartApplys(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartApplyById")
+    @ApiOperation(value = "根据ID删除指定应用管理", notes = "根据ID删除指定应用管理", httpMethod = "GET")
+    CommonResult deleteSmartApplyById(@RequestParam int id);
+
+    @GetMapping(value = "/queryAppletApplys")
+    @ApiOperation(value = "获取小程序应用权限", notes = "获取小程序应用权限", httpMethod = "GET")
+    CommonResult queryAppletApplys();
+}

+ 64 - 0
wanzai/src/main/java/com/template/api/SmartAttendanceControllerAPI.java

@@ -0,0 +1,64 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartAttendance;
+import com.template.model.request.askForLeaveRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartAttendance")
+@Api(tags = {"SmartAttendanceControllerAPI"}, value = "考勤")
+public interface SmartAttendanceControllerAPI {
+    @PostMapping(value = "/insertSmartAttendance")
+    @ApiOperation(value = "添加考勤", notes = "添加考勤数据", httpMethod = "POST")
+    CommonResult insertSmartAttendance(@Validated @RequestBody SmartAttendance smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartAttendanceById")
+    @ApiOperation(value = "编辑考勤数据", notes = "编辑考勤数据", httpMethod = "POST")
+    CommonResult updateSmartAttendanceById(@Validated @RequestBody SmartAttendance ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartAttendance")
+    @ApiOperation(value = "考勤分页数据", notes = "考勤分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartAttendances(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartAttendanceById")
+    @ApiOperation(value = "根据ID删除指定考勤", notes = "根据ID删除指定考勤", httpMethod = "GET")
+    CommonResult deleteSmartAttendanceById(@RequestParam int id);
+
+    /**
+     * 获取请假记录数据
+     */
+    @GetMapping(value = "/queryLeaveRecords")
+    @ApiOperation(value = "获取请假记录数据", notes = "获取请假记录数据", httpMethod = "GET")
+    CommonResult queryLeaveRecords();
+
+    /**
+     * 首页班级考勤数据
+     * 获取当月
+     * 可查询的时间范围不清楚
+     */
+    @GetMapping(value = "/queryAttendanceList")
+    @ApiOperation(value = "首页班级考勤数据", notes = "首页班级考勤数据", httpMethod = "GET")
+    CommonResult queryAttendanceList();
+
+
+    /**
+     * 百胜学生请假接口
+     * @param request
+     * @param bindingResult
+     * @return
+     * @throws Exception
+     */
+    @PostMapping(value = "/askForLeave")
+    @ApiOperation(value = "百胜学生请假接口", notes = "百胜学生请假接口", httpMethod = "POST")
+    CommonResult askForLeave(@Validated @RequestBody askForLeaveRequest request, BindingResult bindingResult) throws Exception;
+}

+ 75 - 0
wanzai/src/main/java/com/template/api/SmartAuthorGroupControllerAPI.java

@@ -0,0 +1,75 @@
+package com.template.api;
+
+import com.alibaba.fastjson.JSONObject;
+import com.template.annotation.PassToken;
+import com.template.model.pojo.SmartAuthorGroup;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.ParseException;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartAuthorGroup")
+@Api(tags = {"SmartAuthorGroupControllerAPI"}, value = "权限组")
+public interface SmartAuthorGroupControllerAPI {
+    @RequestMapping(value = "/insertSmartAuthorGroup")
+    @ApiOperation(value = "添加权限组", notes = "添加权限组数据", httpMethod = "POST")
+    CommonResult insertSmartAuthorGroup(@Validated @RequestBody JSONObject jsonObject, Integer samePower) throws ParseException;
+
+    @RequestMapping(value = "/updateSmartAuthorGroup")
+    @ApiOperation(value = "编辑权限组数据", notes = "编辑权限组数据", httpMethod = "POST")
+    CommonResult updateSmartAuthorGroup(@Validated @RequestBody JSONObject jsonObject, Integer samePower) throws ParseException;
+
+    @RequestMapping(value = "/addSmartAuthorGroup")
+    @ApiOperation(value = "添加权限组", notes = "添加权限组数据", httpMethod = "POST")
+    public CommonResult addSmartAuthorGroup(@Validated @RequestBody JSONObject jsonObject) throws ParseException;
+
+    @RequestMapping(value = "/delSmartAuthorGroup")
+    @ApiOperation(value = "删除权限组", notes = "删除权限组数据", httpMethod = "POST")
+    public CommonResult delSmartAuthorGroup(Integer id);
+
+    @RequestMapping(value = "/operateSmartAuthorGroupUser")
+    @ApiOperation(value = "操作管理员", notes = "操作管理员", httpMethod = "POST")
+    public CommonResult operateSmartAuthorGroupUser(Integer id, String userId) throws ParseException;
+
+    @RequestMapping(value = "/operateSmartAuthorGroupApply")
+    @ApiOperation(value = "操作管理员", notes = "操作管理员", httpMethod = "POST")
+    public CommonResult operateSmartAuthorGroupApply(Integer id, String applyId);
+
+    @RequestMapping(value = "/getSmartAuthorGroupManager")
+    @ApiOperation(value = "查看管理组编辑数据", notes = "查看管理组编辑数据", httpMethod = "POST")
+    public CommonResult getSmartAuthorGroupManager(String groupId);
+
+    @RequestMapping(value = "/operateSmartAuthorDepartment")
+    @ApiOperation(value = "修改权限组权限", notes = "修改权限组权限", httpMethod = "POST")
+    public CommonResult operateSmartAuthorDepartment(@Validated @RequestBody JSONObject jsonObject);
+
+    @RequestMapping(value = "/getSmartAuthorGroupMenu")
+    @ApiOperation(value = "获取权限组菜单", notes = "获取权限组菜单", httpMethod = "POST")
+    public CommonResult getSmartAuthorGroupMenu(Integer id);
+
+    @RequestMapping(value = "/updateSmartAuthorGroupName")
+    @ApiOperation(value = "修改权限组菜单名称", notes = "修改权限组菜单名称", httpMethod = "POST")
+    public CommonResult updateSmartAuthorGroupName(@Validated @RequestBody JSONObject jsonObject);
+
+    @RequestMapping(value = "/queryUserAuthor")
+    @ApiOperation(value = "查看用户个人权限", notes = "编辑权限组数据", httpMethod = "POST")
+    public CommonResult queryUserAuthor(@RequestParam String userId, @RequestHeader("user_head") String userhead);
+
+    @RequestMapping(value = "/querySmartAuthorGroup")
+    @ApiOperation(value = "权限组分页数据", notes = "权限组分页数据", httpMethod = "GET")
+    CommonResult querySmartAuthorGroup(@RequestParam Integer authorGroupId);
+
+    @RequestMapping(value = "/deleteSmartAuthorGroupById")
+    @ApiOperation(value = "根据ID删除指定权限组", notes = "根据ID删除指定权限组", httpMethod = "GET")
+    CommonResult deleteSmartAuthorGroupById(@RequestParam int id);
+}

+ 35 - 0
wanzai/src/main/java/com/template/api/SmartAuthorityControllerAPI.java

@@ -0,0 +1,35 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartAuthority;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartAuthority")
+@Api(tags = {"SmartAuthorityControllerAPI"}, value = "权限管理")
+public interface SmartAuthorityControllerAPI {
+    @PostMapping(value = "/insertSmartAuthority")
+    @ApiOperation(value = "添加权限管理", notes = "添加权限管理数据", httpMethod = "POST")
+    CommonResult insertSmartAuthority(@Validated @RequestBody SmartAuthority smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartAuthorityById")
+    @ApiOperation(value = "编辑权限管理数据", notes = "编辑权限管理数据", httpMethod = "POST")
+    CommonResult updateSmartAuthorityById(@Validated @RequestBody SmartAuthority ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartAuthority")
+    @ApiOperation(value = "权限管理分页数据", notes = "权限管理分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartAuthoritys(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartAuthorityById")
+    @ApiOperation(value = "根据ID删除指定权限管理", notes = "根据ID删除指定权限管理", httpMethod = "GET")
+    CommonResult deleteSmartAuthorityById(@RequestParam int id);
+}

+ 35 - 0
wanzai/src/main/java/com/template/api/SmartBuildControllerAPI.java

@@ -0,0 +1,35 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartBuild;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartBuild")
+@Api(tags = {"SmartBuildControllerAPI"}, value = "楼栋")
+public interface SmartBuildControllerAPI {
+    @PostMapping(value = "/insertSmartBuild")
+    @ApiOperation(value = "添加楼栋", notes = "添加楼栋数据", httpMethod = "POST")
+    CommonResult insertSmartBuild(@Validated @RequestBody SmartBuild smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartBuildById")
+    @ApiOperation(value = "编辑楼栋数据", notes = "编辑楼栋数据", httpMethod = "POST")
+    CommonResult updateSmartBuildById(@Validated @RequestBody SmartBuild ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartBuild")
+    @ApiOperation(value = "楼栋分页数据", notes = "楼栋分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartBuilds(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartBuildById")
+    @ApiOperation(value = "根据ID删除指定楼栋", notes = "根据ID删除指定楼栋", httpMethod = "GET")
+    CommonResult deleteSmartBuildById(@RequestParam int id);
+}

+ 36 - 0
wanzai/src/main/java/com/template/api/SmartBuildMeterControllerAPI.java

@@ -0,0 +1,36 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartBuild;
+import com.template.model.pojo.SmartBuildMeter;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartBuildMeter")
+@Api(tags = {"SmartBuildMeterControllerAPI"}, value = "楼栋水电表")
+public interface SmartBuildMeterControllerAPI {
+    @PostMapping(value = "/insertSmartBuildMeter")
+    @ApiOperation(value = "添加楼栋水电表", notes = "添加楼栋水电表数据", httpMethod = "POST")
+    CommonResult insertSmartBuildMeter(@Validated @RequestBody SmartBuildMeter smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartBuildMeterById")
+    @ApiOperation(value = "编辑楼栋水电表数据", notes = "编辑楼栋水电表数据", httpMethod = "POST")
+    CommonResult updateSmartBuildMeterById(@Validated @RequestBody SmartBuildMeter ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartBuildMeter")
+    @ApiOperation(value = "楼栋水电表分页数据", notes = "楼栋水电表分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartBuildMeters(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartBuildMeterById")
+    @ApiOperation(value = "根据ID删除指定楼栋水电表", notes = "根据ID删除指定楼栋水电表", httpMethod = "GET")
+    CommonResult deleteSmartBuildMeterById(@RequestParam int id);
+}

+ 7 - 0
wanzai/src/main/java/com/template/api/SmartCarAccessControllerAPI.java

@@ -0,0 +1,7 @@
+package com.template.api;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@RequestMapping("/auto/smart-car-access")
+public interface SmartCarAccessControllerAPI {
+}

+ 51 - 0
wanzai/src/main/java/com/template/api/SmartClassControllerAPI.java

@@ -0,0 +1,51 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartClass;
+import com.template.model.request.insertSmartClassRequest;
+import com.template.model.request.updateClassRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartClass")
+@Api(tags = {"SmartClassControllerAPI"}, value = "班级")
+public interface SmartClassControllerAPI {
+    @PostMapping(value = "/insertSmartClass")
+    @ApiOperation(value = "添加班级", notes = "添加班级数据", httpMethod = "POST")
+    CommonResult insertSmartClass(@Validated @RequestBody SmartClass smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartClassById")
+    @ApiOperation(value = "编辑班级数据", notes = "编辑班级数据", httpMethod = "POST")
+    CommonResult updateSmartClassById(@Validated @RequestBody updateClassRequest ra, BindingResult bindingResult) throws Exception;
+
+    @GetMapping(value = "/queryPageSmartClass")
+    @ApiOperation(value = "班级分页数据", notes = "班级分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartClasss(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartClassById")
+    @ApiOperation(value = "根据ID删除指定班级", notes = "根据ID删除指定班级", httpMethod = "GET")
+    CommonResult deleteSmartClassById(@RequestParam int id);
+
+    @GetMapping(value = "/querySmartClasss")
+    @ApiOperation(value = "班级集合列表数据", notes = "班级集合列表数据", httpMethod = "GET")
+    CommonResult querySmartClasss(@RequestParam int gradeId);
+
+    @PostMapping(value = "/insertSmartClassToBaisheng")
+    @ApiOperation(value = "将班级数据添加到百胜系统", notes = "将班级数据添加到百胜系统", httpMethod = "POST")
+    CommonResult insertSmartClassToBaisheng(@Validated @RequestBody insertSmartClassRequest iscr, BindingResult bindingResult) throws Exception;
+
+
+    @GetMapping(value = "/initSchoolClasses")
+    @ApiOperation(value = "初始化班级", notes = "初始化班级", httpMethod = "GET")
+    CommonResult initSchoolClasses();
+}

+ 7 - 0
wanzai/src/main/java/com/template/api/SmartCodeOpenIdControllerAPI.java

@@ -0,0 +1,7 @@
+package com.template.api;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@RequestMapping("/api/smart-code-open-id")
+public interface SmartCodeOpenIdControllerAPI {
+}

+ 37 - 0
wanzai/src/main/java/com/template/api/SmartDataClassControllerAPI.java

@@ -0,0 +1,37 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartDataClass;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartDataClass")
+@Api(tags = {"SmartDataClassControllerAPI"}, value = "数据源类别")
+public interface SmartDataClassControllerAPI {
+    @PostMapping(value = "/insertSmartDataClass")
+    @ApiOperation(value = "添加数据源类别", notes = "添加数据源类别数据", httpMethod = "POST")
+    CommonResult insertSmartDataClass(@Validated @RequestBody SmartDataClass smartDataClass, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartDataClassById")
+    @ApiOperation(value = "编辑数据源类别数据", notes = "编辑数据源类别数据", httpMethod = "POST")
+    CommonResult updateSmartDataClassById(@Validated @RequestBody SmartDataClass smartDataClass, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartDataClass")
+    @ApiOperation(value = "数据源类别分页数据", notes = "数据源类别分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartDataClass(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartDataClassById")
+    @ApiOperation(value = "根据ID删除指定数据源类别", notes = "根据ID删除指定数据源类别", httpMethod = "GET")
+    CommonResult deleteSmartDataClassById(@RequestParam int id, HttpServletRequest httpServletRequest);
+}

+ 46 - 0
wanzai/src/main/java/com/template/api/SmartDataSourceControllerAPI.java

@@ -0,0 +1,46 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartDataSource;
+import com.template.model.pojo.SmartDataClass;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartDataClass")
+@Api(tags = {"SmartDataClassControllerAPI"}, value = "数据源")
+public interface SmartDataSourceControllerAPI {
+    @PostMapping(value = "/insertSmartDataSource")
+    @ApiOperation(value = "添加数据源", notes = "添加数据源数据", httpMethod = "POST")
+    CommonResult insertSmartDataSource(@Validated @RequestBody SmartDataSource smartDataSource, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/vcoSmartDataSource")
+    @ApiOperation(value = "测试数据源连接有效性", notes = "测试数据源连接有效性", httpMethod = "POST")
+    CommonResult vcoSmartDataSource(@Validated @RequestBody SmartDataSource smartDataSource, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartDataSourceById")
+    @ApiOperation(value = "编辑数据源数据", notes = "编辑数据源数据", httpMethod = "POST")
+    CommonResult updateSmartDataSourceById(@Validated @RequestBody SmartDataSource smartDataSource, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartDataSource")
+    @ApiOperation(value = "数据源分页数据", notes = "数据源分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartDataSources(@RequestParam int currentPage, @RequestParam int pageCount, SmartDataSource smartDataSource);
+
+    @GetMapping(value = "/querySmartDataSourceById")
+    @ApiOperation(value = "根据ID查询数据源数据", notes = "根据ID查询数据源数据", httpMethod = "GET")
+    CommonResult querySmartDataSourceById(@RequestParam int id);
+
+    @GetMapping(value = "/deleteSmartDataSourceById")
+    @ApiOperation(value = "根据ID删除指定数据源", notes = "根据ID删除指定数据源", httpMethod = "GET")
+    CommonResult deleteSmartDataSourceById(@RequestParam int id, HttpServletRequest httpServletRequest);
+}

+ 55 - 0
wanzai/src/main/java/com/template/api/SmartDataSourceLogControllerAPI.java

@@ -0,0 +1,55 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartDataSourceLog;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartDataSourceLog")
+@Api(tags = {"SmartDataSourceLogControllerAPI"}, value = "操作日志记录")
+public interface SmartDataSourceLogControllerAPI {
+    @PostMapping(value = "/insertSmartDataSourceLog")
+    @ApiOperation(value = "添加操作日志记录", notes = "添加操作日志记录数据", httpMethod = "POST")
+    CommonResult insertSmartDataSourceLog(@Validated @RequestBody SmartDataSourceLog smartDataSourceLog, BindingResult bindingResult);
+
+//    @PostMapping(value = "/updateSmartDataSourceLogById")
+//    @ApiOperation(value = "编辑操作日志记录数据", notes = "编辑操作日志记录数据", httpMethod = "POST")
+//    CommonResult updateSmartDataSourceLogById(@Validated @RequestBody SmartDataSourceLog ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartDataSourceLog")
+    @ApiOperation(value = "操作日志记录分页数据", notes = "操作日志记录分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartDataSourceLogs(@RequestParam int currentPage,
+                                              @RequestParam int pageCount,
+                                              @RequestParam(required = false) String startTime,
+                                              @RequestParam(required = false) String endTime,
+                                              SmartDataSourceLog smartDataSourceLog);
+
+    @GetMapping(value = "/queryDistinctActionName")
+    @ApiOperation(value = "操作日志记录操作名称数据", notes = "操作日志记录操作名称数据", httpMethod = "GET")
+    CommonResult queryDistinctActionName();
+
+    @GetMapping(value = "/queryDistinctActionPeople")
+    @ApiOperation(value = "操作日志记录操作人数据", notes = "操作日志记录操作人数据", httpMethod = "GET")
+    CommonResult queryDistinctActionPeople();
+
+    @GetMapping(value = "/queryDistinctActionModule")
+    @ApiOperation(value = "操作日志记录操作模块数据", notes = "操作日志记录操作模块数据", httpMethod = "GET")
+    CommonResult queryDistinctActionModule();
+
+    @GetMapping(value = "/queryDistinctActionBusiness")
+    @ApiOperation(value = "操作日志记录操作业务数据", notes = "操作日志记录操作业务数据", httpMethod = "GET")
+    CommonResult queryDistinctActionBusiness();
+
+//    @GetMapping(value = "/deleteSmartDataSourceLogById")
+//    @ApiOperation(value = "根据ID删除指定操作日志记录", notes = "根据ID删除指定操作日志记录", httpMethod = "GET")
+//    CommonResult deleteSmartDataSourceLogById(@RequestParam int id);
+}

+ 138 - 0
wanzai/src/main/java/com/template/api/SmartDataTaskControllerAPI.java

@@ -0,0 +1,138 @@
+package com.template.api;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.template.model.pojo.SmartDataTask;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartDataTask")
+@Api(tags = {"SmartDataTaskControllerAPI"}, value = "操作记录")
+public interface SmartDataTaskControllerAPI {
+    @PostMapping(value = "/createJob")
+    @ApiOperation(value = "创建定时任务", notes = "创建定时任务", httpMethod = "POST")
+    CommonResult createJob(@Validated @RequestBody SmartDataTask smartDataTask, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/pauseJob")
+    @ApiOperation(value = "暂定定时任务", notes = "暂停定时任务", httpMethod = "POST")
+    CommonResult pauseJob(@Validated @RequestBody SmartDataTask smartDataTask, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/resumeJob")
+    @ApiOperation(value = "恢复定时任务", notes = "恢复定时任务", httpMethod = "POST")
+    CommonResult resumeJob(@Validated @RequestBody SmartDataTask smartDataTask, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateJob")
+    @ApiOperation(value = "修改定时任务", notes = "修改定时任务", httpMethod = "POST")
+    CommonResult updateJob(@Validated @RequestBody SmartDataTask smartDataTask, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/deleteJob")
+    @ApiOperation(value = "修改定时任务", notes = "修改定时任务", httpMethod = "POST")
+    CommonResult deleteJob(@Validated @RequestBody SmartDataTask smartDataTask, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/runOnceJob")
+    @ApiOperation(value = "运行一次定时任务", notes = "运行一次定时任务", httpMethod = "POST")
+    CommonResult runOnceJob(@Validated @RequestBody SmartDataTask smartDataTask, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @GetMapping(value = "/getDepart")
+    @ApiOperation(value = "获取部门", notes = "获取部门", httpMethod = "GET")
+    CommonResult getDepart();
+
+    @GetMapping(value = "/getSyncPolicy")
+    @ApiOperation(value = "同步策略", notes = "同步策略", httpMethod = "GET")
+    CommonResult getSyncPolicy();
+
+    @GetMapping(value = "/getExchangeType")
+    @ApiOperation(value = "交换方式", notes = "交换方式", httpMethod = "GET")
+    CommonResult getExchangeType();
+
+    @PostMapping(value = "/testSql")
+    @ApiOperation(value = "测试sql", notes = "测试sql", httpMethod = "POST")
+    CommonResult testSql(@RequestBody String json);
+
+    @PostMapping(value = "/getTables")
+    @ApiOperation(value = "根据数据源获取所有的表", notes = "根据数据源获取所有的表", httpMethod = "POST")
+    CommonResult getTables(@RequestBody String json);
+
+    @PostMapping(value = "/getViews")
+    @ApiOperation(value = "根据数据源获取所有的视图", notes = "根据数据源获取所有的视图", httpMethod = "POST")
+    CommonResult getViews(@RequestBody String json);
+
+    @PostMapping(value = "/insertSmartDataTask1")
+    @ApiOperation(value = "添加数据源任务管理数据", notes = "添加数据源任务管理数据-任务基本信息", httpMethod = "POST")
+    CommonResult insertSmartDataTask1(@Validated @RequestBody SmartDataTask smartDataTask, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/insertSmartDataTask2")
+    @ApiOperation(value = "添加数据源任务管理数据", notes = "添加数据源任务管理数据-字段配置", httpMethod = "POST")
+    CommonResult insertSmartDataTask2(@Validated @RequestBody JSONObject json, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/insertSmartDataTask3")
+    @ApiOperation(value = "添加数据源任务管理数据", notes = "添加数据源任务管理数据-定时信息", httpMethod = "POST")
+    CommonResult insertSmartDataTask3(@Validated @RequestBody SmartDataTask smartDataTask, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartDataTaskById1")
+    @ApiOperation(value = "编辑数据源任务管理数据", notes = "编辑数据源任务管理数据-任务基本信息", httpMethod = "POST")
+    CommonResult updateSmartDataTaskById1(@Validated @RequestBody SmartDataTask smartDataTask, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartDataTaskById2")
+    @ApiOperation(value = "编辑数据源任务管理数据", notes = "编辑数据源任务管理数据-字段配置", httpMethod = "POST")
+    CommonResult updateSmartDataTaskById2(@Validated @RequestBody JSONObject json, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartDataTaskById3")
+    @ApiOperation(value = "编辑数据源任务管理数据", notes = "编辑数据源任务管理数据-定时信息", httpMethod = "POST")
+    CommonResult updateSmartDataTaskById3(@Validated @RequestBody SmartDataTask smartDataTask, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartDataTask")
+    @ApiOperation(value = "数据源任务管理分页数据", notes = "数据源任务管理分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartDataTasks(@RequestParam int currentPage, @RequestParam int pageCount, SmartDataTask smartDataTask);
+
+    @GetMapping(value = "/deleteSmartDataTaskById")
+    @ApiOperation(value = "根据ID删除数据源任务数据", notes = "根据ID删除数据源任务数据", httpMethod = "GET")
+    CommonResult deleteSmartDataTaskById(@RequestParam int id, @RequestParam int delMethod, HttpServletRequest httpServletRequest);
+
+    @GetMapping(value = "/queryPageSmartDataTaskDebug")
+    @ApiOperation(value = "任务debug日志记录分页数据", notes = "任务debug日志记录分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartDataTaskDebug(@RequestParam int currentPage, @RequestParam int pageCount,
+                                             @RequestParam(required = false) Integer eTaskId,
+                                             @RequestParam(required = false) String startTime,
+                                             @RequestParam(required = false) String endTime);
+
+    @PostMapping(value = "/delSmartDataTaskDebugByIds")
+    @ApiOperation(value = "删除任务debug日志记录", notes = "删除任务debug日志记录", httpMethod = "POST")
+    CommonResult delSmartDataTaskDebugByIds(@Validated @RequestBody JSONObject json, HttpServletRequest httpServletRequest, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartDataTaskLog")
+    @ApiOperation(value = "任务运行日志记录分页数据", notes = "任务运行日志记录分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartDataTaskLog(@RequestParam int currentPage, @RequestParam int pageCount,
+                                           @RequestParam(required = false) Integer eTaskId,
+                                           @RequestParam(required = false) String tkLogTaskName,
+                                           @RequestParam(required = false) Integer tkLogAutoManual,
+                                           @RequestParam(required = false) Integer tkLogDsSourceId,
+                                           @RequestParam(required = false) Integer tkLogDsDestinationId,
+                                           @RequestParam(required = false) Integer tkLogCostTime,
+                                           @RequestParam(required = false) Integer tkLogExeStatus,
+                                           @RequestParam(required = false) String startTime,
+                                           @RequestParam(required = false) String endTime);
+
+    @GetMapping(value = "/queryAllTask")
+    @ApiOperation(value = "获取所有任务名称", notes = "获取所有任务名称", httpMethod = "GET")
+    CommonResult queryAllTask();
+
+    @GetMapping(value = "/queryTaskDebugSql")
+    @ApiOperation(value = "任务debugSql", notes = "任务debugSql", httpMethod = "GET")
+    CommonResult queryTaskDebugSql();
+
+    @GetMapping(value = "/queryTaskSetDebugSql")
+    @ApiOperation(value = "任务debugSql", notes = "任务debugSql", httpMethod = "GET")
+    CommonResult queryTaskSetDebugSql(@RequestParam int tkId, @RequestParam int tkDebugSql);
+}

+ 48 - 0
wanzai/src/main/java/com/template/api/SmartDepartmentControllerAPI.java

@@ -0,0 +1,48 @@
+package com.template.api;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.template.model.pojo.SmartDepartment;
+import com.template.model.request.insertDepartmentRequest;
+import com.template.model.request.updateDepartmentRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartDepartment")
+@Api(tags = {"SmartDepartmentControllerAPI"}, value = "部门")
+public interface SmartDepartmentControllerAPI {
+    @PostMapping(value = "/insertSmartDepartment")
+    @ApiOperation(value = "添加部门", notes = "添加部门数据", httpMethod = "POST")
+    CommonResult insertSmartDepartment(@Validated @RequestBody insertDepartmentRequest smartApply, BindingResult bindingResult) throws Exception;
+
+    @PostMapping(value = "/updateSmartDepartmentById")
+    @ApiOperation(value = "编辑部门数据", notes = "编辑部门数据", httpMethod = "POST")
+    CommonResult updateSmartDepartmentById(@Validated @RequestBody updateDepartmentRequest udr, BindingResult bindingResult) throws Exception;
+
+    @GetMapping(value = "/queryPageSmartDepartment")
+    @ApiOperation(value = "部门分页数据", notes = "部门分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartDepartments(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartDepartmentById")
+    @ApiOperation(value = "根据ID删除指定部门", notes = "根据ID删除指定部门", httpMethod = "GET")
+    CommonResult deleteSmartDepartmentById(@RequestParam int id);
+
+    @GetMapping(value = "/queryDepartmentTree")
+    @ApiOperation(value = "查询部门树形结构数据", notes = "查询部门树形结构数据", httpMethod = "GET")
+    CommonResult queryDepartmentTree(String name, @RequestHeader("user_head") String userhead);
+
+    @GetMapping(value = "/queryAllDepartmentTree")
+    @ApiOperation(value = "查询所有部门树形结构数据", notes = "查询所有部门树形结构数据", httpMethod = "GET")
+    CommonResult queryAllDepartmentTree(String name, @RequestHeader("user_head") String userhead);
+}

+ 35 - 0
wanzai/src/main/java/com/template/api/SmartDeviceControllerAPI.java

@@ -0,0 +1,35 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartDevice;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartDevice")
+@Api(tags = {"SmartDeviceControllerAPI"}, value = "设备")
+public interface SmartDeviceControllerAPI {
+    @PostMapping(value = "/insertSmartDevice")
+    @ApiOperation(value = "添加设备", notes = "添加设备数据", httpMethod = "POST")
+    CommonResult insertSmartDevice(@Validated @RequestBody SmartDevice smartDevice, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartDeviceById")
+    @ApiOperation(value = "编辑设备数据", notes = "编辑设备数据", httpMethod = "POST")
+    CommonResult updateSmartDeviceById(@Validated @RequestBody SmartDevice ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartDevice")
+    @ApiOperation(value = "设备分页数据", notes = "设备分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartDevices(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartDeviceById")
+    @ApiOperation(value = "根据ID删除指定设备", notes = "根据ID删除指定设备", httpMethod = "GET")
+    CommonResult deleteSmartDeviceById(@RequestParam int id);
+}

+ 50 - 0
wanzai/src/main/java/com/template/api/SmartDutiesControllerAPI.java

@@ -0,0 +1,50 @@
+package com.template.api;
+
+import com.template.model.request.insertDutiesRequest;
+import com.template.model.request.updateDutiesRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartDuties")
+@Api(tags = {"SmartDutiesControllerAPI"}, value = "职务")
+public interface SmartDutiesControllerAPI {
+    @PostMapping(value = "/insertSmartDuties")
+    @ApiOperation(value = "添加职务", notes = "添加职务数据", httpMethod = "POST")
+    CommonResult insertSmartDuties(@Validated @RequestBody insertDutiesRequest imr, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartDutiesById")
+    @ApiOperation(value = "编辑职务数据", notes = "编辑职务数据", httpMethod = "POST")
+    CommonResult updateSmartDutiesById(@Validated @RequestBody updateDutiesRequest ra, BindingResult bindingResult) throws Exception;
+
+    @GetMapping(value = "/queryPageSmartDuties")
+    @ApiOperation(value = "职务分页数据", notes = "职务分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartDutiess(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartDutiesById")
+    @ApiOperation(value = "根据ID删除指定职务", notes = "根据ID删除指定职务", httpMethod = "GET")
+    CommonResult deleteSmartDutiesById(@RequestParam int id);
+
+    @GetMapping(value = "/queryDutiesCategorys")
+    @ApiOperation(value = "获取职务类型数据集合", notes = "获取职务类型数据集合", httpMethod = "GET")
+    CommonResult queryDutiesCategorys();
+
+    @GetMapping(value = "/queryDutiesByCategory")
+    @ApiOperation(value = "获取职务数据集合", notes = "获取职务数据集合", httpMethod = "GET")
+    CommonResult queryDutiesByCategory(@RequestParam int categoryId);
+
+    @GetMapping(value = "/queryDutiesByIdentity")
+    @ApiOperation(value = "根据身份ID获取职务数据集合", notes = "根据身份ID获取职务数据集合", httpMethod = "GET")
+    CommonResult queryDutiesByIdentity(@RequestParam int identityId);
+
+}

+ 46 - 0
wanzai/src/main/java/com/template/api/SmartEvaluateStudentControlle2API.java

@@ -0,0 +1,46 @@
+package com.template.api;
+
+import com.alibaba.fastjson.JSONObject;
+import com.template.model.evaluate.student.SmartEvaluateStudent;
+import com.template.model.evaluate.student.SmartSubjectTemplate;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@RequestMapping("/api/smartEvaluateStudent2")
+@Api(tags = {"SmartEvaluateStudentController2API"}, value = "学生评测2")
+public interface SmartEvaluateStudentControlle2API {
+
+    @RequestMapping(value = "/addSmartSubjectTemplate")
+    @ApiOperation(value = "新增评分项", httpMethod = "POST")
+    public CommonResult addSmartSubjectTemplate(@Validated @RequestBody JSONObject jsonObject);
+
+    @RequestMapping(value = "/updateSmartSubjectTemplate")
+    @ApiOperation(value = "修改评分项", httpMethod = "POST")
+    public CommonResult updateSmartSubjectTemplate(@Validated @RequestBody JSONObject jsonObject);
+
+    @RequestMapping(value = "/delSmartSubjectTemplate")
+    @ApiOperation(value = "删除评分项", httpMethod = "POST")
+    public CommonResult delSmartSubjectTemplate(@RequestParam Integer id);
+
+    @RequestMapping(value = "/queryTemplatePage")
+    @ApiOperation(value = "查看评分项", httpMethod = "POST")
+    public CommonResult queryTemplatePage(Integer currentPage, Integer pageCount);
+
+    @RequestMapping(value = "/queryTemplateRulePage")
+    @ApiOperation(value = "查看评分规则", httpMethod = "POST")
+    public CommonResult queryTemplateRulePage(Integer id);
+
+    @RequestMapping(value = "/evaluateScore")
+    @ApiOperation(value = "学生评分", httpMethod = "POST")
+    public CommonResult evaluateScore(Integer id, String scoreComment);
+
+    @RequestMapping(value = "/queryEvaluateStudent")
+    @ApiOperation(value = "查看评价数据", httpMethod = "POST")
+    public CommonResult queryEvaluateStudent(@Validated @RequestBody SmartEvaluateStudent smartEvaluateStudent, Integer currentPage, Integer pageCount);
+
+}

+ 44 - 0
wanzai/src/main/java/com/template/api/SmartEvaluateStudentControllerAPI.java

@@ -0,0 +1,44 @@
+package com.template.api;
+
+import com.alibaba.fastjson.JSONObject;
+import com.template.model.evaluate.student.SmartEvaluateStudent;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@RequestMapping("/api/smartEvaluateStudent")
+@Api(tags = {"SmartEvaluateStudentControllerAPI"}, value = "学生评测")
+public interface SmartEvaluateStudentControllerAPI {
+
+    @RequestMapping(value = "/operateSmartSubjectManage")
+    @ApiOperation(value = "学科管理", httpMethod = "POST")
+    public CommonResult operateSmartSubjectManage(@Validated @RequestBody JSONObject jsonObject);
+
+    @RequestMapping(value = "/querySubjectManage")
+    @ApiOperation(value = "查看学科", httpMethod = "POST")
+    public CommonResult querySubjectManage(String term);
+
+    @RequestMapping(value = "/operateSmartSubjectRule")
+    @ApiOperation(value = "操作评分标准", httpMethod = "POST")
+    public CommonResult operateSmartSubjectRule(@Validated @RequestBody JSONObject jsonObject);
+
+    @RequestMapping(value = "/querySubjectRule")
+    @ApiOperation(value = "查看评分标准", httpMethod = "POST")
+    public CommonResult querySubjectRule(String term);
+
+    @RequestMapping(value = "/queryEvaluateStudent")
+    @ApiOperation(value = "查看评分标准", httpMethod = "POST")
+    public CommonResult queryEvaluateStudent(@Validated @RequestBody SmartEvaluateStudent smartEvaluateStudent,Integer currentPage, Integer pageCount);
+
+    @RequestMapping(value = "/evaluateScore")
+    @ApiOperation(value = "学生评分", httpMethod = "POST")
+    public CommonResult evaluateScore(@Validated @RequestBody JSONObject jsonObject);
+
+    @RequestMapping(value = "/queryDetailScore")
+    @ApiOperation(value = "查看学生评分详情", httpMethod = "POST")
+    public CommonResult queryDetailScore(Integer id);
+
+}

+ 57 - 0
wanzai/src/main/java/com/template/api/SmartEvaluateTeacherControllerAPI.java

@@ -0,0 +1,57 @@
+package com.template.api;
+
+import com.alibaba.fastjson.JSONObject;
+import com.template.model.evaluate.teacher.SmartEvaluateTeacher;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServletResponse;
+
+@RequestMapping("/api/smartEvaluateTeacher")
+@Api(tags = {"SmartEvaluateTeacherControllerAPI"}, value = "综合素质")
+public interface SmartEvaluateTeacherControllerAPI {
+
+    @RequestMapping(value = "/operateSmartScoreManage")
+    @ApiOperation(value = "评分项目管理", httpMethod = "POST")
+    CommonResult operateSmartScoreManage(@Validated @RequestBody JSONObject jsonObject);
+
+    @RequestMapping(value = "/getScoreManage")
+    @ApiOperation(value = "查看评分项", httpMethod = "POST")
+    CommonResult getScoreManage(String term);
+
+    @RequestMapping(value = "/getTeacherScoreList")
+    @ApiOperation(value = "查看教师评分", httpMethod = "POST")
+    CommonResult getTeacherScoreList(@Validated @RequestBody SmartEvaluateTeacher smartEvaluateTeacher, Integer currentPage, Integer pageCount);
+
+    @RequestMapping(value = "/getTeacherScoreExcel")
+    @ApiOperation(value = "导出教师评分", httpMethod = "POST")
+    void getTeacherScoreExcel(SmartEvaluateTeacher smartEvaluateTeacher, HttpServletResponse response);
+
+    @RequestMapping(value = "/evaluateScore")
+    @ApiOperation(value = "教师评分", httpMethod = "POST")
+    CommonResult evaluateScore(@Validated @RequestBody JSONObject jsonObject);
+
+    @RequestMapping(value = "/getTeacherScoreDetail")
+    @ApiOperation(value = "获取教师分数详情", httpMethod = "POST")
+    CommonResult getTeacherScoreDetail(Integer id);
+
+    @RequestMapping(value = "/getScoreComparison")
+    @ApiOperation(value = "分数对比", httpMethod = "POST")
+    CommonResult getScoreComparison(Integer id);
+
+    @RequestMapping(value = "/getScoreRank")
+    @ApiOperation(value = "评分排行", httpMethod = "POST")
+    CommonResult getScoreRank(int currentPage, int pageCount, String subject);
+
+    /**
+     * 首页最受欢迎老师TOP6
+     */
+    @GetMapping(value = "queryTopSixTeacher")
+    @ApiOperation(value = "最受欢迎老师TOP6", notes = "最受欢迎老师TOP6", httpMethod = "GET")
+    CommonResult queryTopSixTeacher();
+}

+ 35 - 0
wanzai/src/main/java/com/template/api/SmartExamtypeControllerAPI.java

@@ -0,0 +1,35 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartExamtype;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartExamtype")
+@Api(tags = {"SmartExamtypeControllerAPI"}, value = "考试类型")
+public interface SmartExamtypeControllerAPI {
+    @PostMapping(value = "/insertSmartExamtype")
+    @ApiOperation(value = "添加考试类型", notes = "添加考试类型数据", httpMethod = "POST")
+    CommonResult insertSmartExamtype(@Validated @RequestBody SmartExamtype smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartExamtypeById")
+    @ApiOperation(value = "编辑考试类型数据", notes = "编辑考试类型数据", httpMethod = "POST")
+    CommonResult updateSmartExamtypeById(@Validated @RequestBody SmartExamtype ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartExamtype")
+    @ApiOperation(value = "考试类型分页数据", notes = "考试类型分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartExamtypes(@RequestParam int currentPage, @RequestParam int pageCount, String name, Integer gradeId);
+
+    @GetMapping(value = "/deleteSmartExamtypeById")
+    @ApiOperation(value = "根据ID删除指定考试类型", notes = "根据ID删除指定考试类型", httpMethod = "GET")
+    CommonResult deleteSmartExamtypeById(@RequestParam int id);
+}

+ 21 - 0
wanzai/src/main/java/com/template/api/SmartFaceDiscernControllerAPI.java

@@ -0,0 +1,21 @@
+package com.template.api;
+
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@RequestMapping("/api/smartFaceDiscern")
+public interface SmartFaceDiscernControllerAPI {
+
+    @GetMapping(value = "/track")
+    @ApiOperation(value = "学生轨迹", notes = "学生轨迹", httpMethod = "GET")
+    CommonResult track(@RequestParam Integer id, @RequestParam int dateTime);
+
+    @GetMapping(value = "/access")
+    @ApiOperation(value = "门禁管理",notes = "门禁管理",httpMethod = "GET")
+    CommonResult access();
+
+
+}

+ 49 - 0
wanzai/src/main/java/com/template/api/SmartFreezeRecordControllerAPI.java

@@ -0,0 +1,49 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartFreezeRecord;
+import com.template.model.request.insertFreezeRecordRequest;
+import com.template.model.request.manualFreezingRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartFreezeRecord")
+@Api(tags = {"SmartFreezeRecordControllerAPI"}, value = "冻结记录")
+public interface SmartFreezeRecordControllerAPI {
+    @PostMapping(value = "/insertSmartFreezeRecord")
+    @ApiOperation(value = "添加冻结记录", notes = "添加冻结记录数据", httpMethod = "POST")
+    CommonResult insertSmartFreezeRecord(@Validated @RequestBody insertFreezeRecordRequest smartFreezeRequest, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartFreezeRecordById")
+    @ApiOperation(value = "编辑冻结记录数据", notes = "编辑冻结记录数据", httpMethod = "POST")
+    CommonResult updateSmartFreezeRecordById(@Validated @RequestBody SmartFreezeRecord ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartFreezeRecord")
+    @ApiOperation(value = "冻结记录分页数据", notes = "冻结记录分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartFreezeRecords(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartFreezeRecordById")
+    @ApiOperation(value = "根据ID删除指定冻结记录", notes = "根据ID删除指定冻结记录", httpMethod = "GET")
+    CommonResult deleteSmartFreezeRecordById(@RequestParam int id);
+
+    @PostMapping(value = "/manualFreezing")
+    @ApiOperation(value = "手动冻结操作", notes = "手动冻结操作", httpMethod = "POST")
+    CommonResult manualFreezing(@Validated @RequestBody manualFreezingRequest mfr, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageFreezeRecord")
+    @ApiOperation(value = "已冻结名单分页数据", notes = "已冻结名单分页数据", httpMethod = "GET")
+    CommonResult queryPageFreezeRecord(@RequestParam int currentPage, @RequestParam int pageCount);
+
+    @GetMapping(value = "/thawFreezing")
+    @ApiOperation(value = "手动解冻操作", notes = "手动解冻操作", httpMethod = "GET")
+    CommonResult thawFreezing(@RequestParam int id);
+}

+ 46 - 0
wanzai/src/main/java/com/template/api/SmartGradeControllerAPI.java

@@ -0,0 +1,46 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartGrade;
+import com.template.model.request.insertSmartGradeRequest;
+import com.template.model.request.updateSmartGradeRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartGrade")
+@Api(tags = {"SmartGradeControllerAPI"}, value = "年级")
+public interface SmartGradeControllerAPI {
+    @PostMapping(value = "/insertSmartGrade")
+    @ApiOperation(value = "添加年级", notes = "添加年级数据", httpMethod = "POST")
+    CommonResult insertSmartGrade(@Validated @RequestBody SmartGrade smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartGradeById")
+    @ApiOperation(value = "编辑年级数据", notes = "编辑年级数据", httpMethod = "POST")
+    CommonResult updateSmartGradeById(@Validated @RequestBody updateSmartGradeRequest ra, BindingResult bindingResult) throws Exception;
+
+    @GetMapping(value = "/queryPageSmartGrade")
+    @ApiOperation(value = "年级分页数据", notes = "年级分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartGrades(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartGradeById")
+    @ApiOperation(value = "根据ID删除指定年级", notes = "根据ID删除指定年级", httpMethod = "GET")
+    CommonResult deleteSmartGradeById(@RequestParam int id);
+
+    @GetMapping(value = "/querySmartGrades")
+    @ApiOperation(value = "年级集合列表数据", notes = "年级集合列表数据", httpMethod = "GET")
+    CommonResult querySmartGrades();
+
+    @PostMapping(value = "/insertSmartGradeToBaisheng")
+    @ApiOperation(value = "将年级数据添加到百胜系统", notes = "将年级数据添加到百胜系统", httpMethod = "POST")
+    CommonResult insertSmartGradeToBaisheng(@Validated @RequestBody insertSmartGradeRequest isgr, BindingResult bindingResult) throws Exception;
+
+}

+ 46 - 0
wanzai/src/main/java/com/template/api/SmartIdentityControllerAPI.java

@@ -0,0 +1,46 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartIdentity;
+import com.template.model.request.insertIdentityRequest;
+import com.template.model.request.updateIdentityRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartIdentity")
+@Api(tags = {"SmartIdentityControllerAPI"}, value = "身份")
+public interface SmartIdentityControllerAPI {
+    @PostMapping(value = "/insertSmartIdentity")
+    @ApiOperation(value = "添加身份", notes = "添加身份数据", httpMethod = "POST")
+    CommonResult insertSmartIdentity(@Validated @RequestBody insertIdentityRequest smartIdentity, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartIdentityById")
+    @ApiOperation(value = "编辑身份数据", notes = "编辑身份数据", httpMethod = "POST")
+    CommonResult updateSmartIdentityById(@Validated @RequestBody updateIdentityRequest ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartIdentity")
+    @ApiOperation(value = "身份分页数据", notes = "身份分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartIdentitys(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartIdentityById")
+    @ApiOperation(value = "根据ID删除指定身份", notes = "根据ID删除指定身份", httpMethod = "GET")
+    CommonResult deleteSmartIdentityById(@RequestParam int id);
+
+    @GetMapping(value = "/querySmartIdentitys")
+    @ApiOperation(value = "获取身份集合", notes = "获取身份集合", httpMethod = "GET")
+    CommonResult querySmartIdentitys();
+
+    @GetMapping(value = "/queryIdentityApplyById")
+    @ApiOperation(value = "根据身份ID查询应用权限", notes = "根据身份ID查询应用权限", httpMethod = "GET")
+    CommonResult queryIdentityApplyById(@RequestParam int id);
+
+}

+ 40 - 0
wanzai/src/main/java/com/template/api/SmartMenuControllerAPI.java

@@ -0,0 +1,40 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartMenu;
+import com.template.model.request.insertMenuRequest;
+import com.template.model.request.updateMenuRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartMenu")
+@Api(tags = {"SmartMenuControllerAPI"}, value = "菜单")
+public interface SmartMenuControllerAPI {
+    @PostMapping(value = "/insertSmartMenu")
+    @ApiOperation(value = "添加菜单", notes = "添加菜单数据", httpMethod = "POST")
+    CommonResult insertSmartMenu(@Validated @RequestBody insertMenuRequest imr, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartMenuById")
+    @ApiOperation(value = "编辑菜单数据", notes = "编辑菜单数据", httpMethod = "POST")
+    CommonResult updateSmartMenuById(@Validated @RequestBody updateMenuRequest ra, BindingResult bindingResult) throws Exception;
+
+    @GetMapping(value = "/queryPageSmartMenu")
+    @ApiOperation(value = "菜单分页数据", notes = "菜单分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartMenus(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartMenuById")
+    @ApiOperation(value = "根据ID删除指定菜单", notes = "根据ID删除指定菜单", httpMethod = "GET")
+    CommonResult deleteSmartMenuById(@RequestParam int id);
+
+
+}

+ 35 - 0
wanzai/src/main/java/com/template/api/SmartMeterControllerAPI.java

@@ -0,0 +1,35 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartMeter;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartMeter")
+@Api(tags = {"SmartMeterControllerAPI"}, value = "水电表信息")
+public interface SmartMeterControllerAPI {
+    @PostMapping(value = "/insertSmartMeter")
+    @ApiOperation(value = "添加水电表", notes = "添加水电表数据", httpMethod = "POST")
+    CommonResult insertSmartMeter(@Validated @RequestBody SmartMeter smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartMeterById")
+    @ApiOperation(value = "编辑水电表数据", notes = "编辑水电表数据", httpMethod = "POST")
+    CommonResult updateSmartMeterById(@Validated @RequestBody SmartMeter ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartMeter")
+    @ApiOperation(value = "水电表分页数据", notes = "水电表分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartMeters(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartMeterById")
+    @ApiOperation(value = "根据ID删除指定水电表", notes = "根据ID删除指定水电表", httpMethod = "GET")
+    CommonResult deleteSmartMeterById(@RequestParam int id);
+}

+ 36 - 0
wanzai/src/main/java/com/template/api/SmartMeterDetailControllerAPI.java

@@ -0,0 +1,36 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartMeter;
+import com.template.model.pojo.SmartMeterDetail;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartMeterDetail")
+@Api(tags = {"SmartMeterDetailControllerAPI"}, value = "水电表能耗明细")
+public interface SmartMeterDetailControllerAPI {
+    @PostMapping(value = "/insertSmartMeterDetail")
+    @ApiOperation(value = "添加水电表能耗明细", notes = "添加水电表能耗明细数据", httpMethod = "POST")
+    CommonResult insertSmartMeterDetail(@Validated @RequestBody SmartMeterDetail smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartMeterDetailById")
+    @ApiOperation(value = "编辑水电表能耗明细数据", notes = "编辑水电表能耗明细数据", httpMethod = "POST")
+    CommonResult updateSmartMeterDetailById(@Validated @RequestBody SmartMeterDetail ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartMeterDetail")
+    @ApiOperation(value = "水电表能耗明细分页数据", notes = "水电表能耗明细分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartMeterDetails(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartMeterDetailById")
+    @ApiOperation(value = "根据ID删除指定水电表能耗明细", notes = "根据ID删除指定水电表能耗明细", httpMethod = "GET")
+    CommonResult deleteSmartMeterDetailById(@RequestParam int id);
+}

+ 16 - 0
wanzai/src/main/java/com/template/api/SmartNotificationControllerAPI.java

@@ -0,0 +1,16 @@
+package com.template.api;
+
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@RequestMapping("/api/smart-notification")
+public interface SmartNotificationControllerAPI {
+
+    @GetMapping(value = "/remindingList")
+    @ApiOperation(value = "消息提醒页面展示", notes = "消息提醒页面展示", httpMethod = "GET")
+    CommonResult remindingList(@RequestParam Integer id, @RequestParam int currentPage, @RequestParam int pageCount, String type);
+
+}

+ 28 - 0
wanzai/src/main/java/com/template/api/SmartQrcodeControllerAPI.java

@@ -0,0 +1,28 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartQrcode;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartQrcode")
+@Api(tags = {"SmartQrcodeControllerAPI"}, value = "刷码记录")
+public interface SmartQrcodeControllerAPI {
+
+    @GetMapping(value = "/generateQrcode")
+    @ApiOperation(value = "生成二维码", notes = "生成二维码", httpMethod = "GET")
+    CommonResult generateQrcode(@RequestParam int userId);
+
+    @GetMapping(value = "/visitorQrcode")
+    @ApiOperation(value = "生成访客码", notes = "生成访客码", httpMethod = "GET")
+    CommonResult visitorQrcode(@RequestParam String visitorId);
+}

+ 40 - 0
wanzai/src/main/java/com/template/api/SmartSchoolControllerAPI.java

@@ -0,0 +1,40 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartSchool;
+import com.template.model.request.UpdateSmartSchoolRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartSchool")
+@Api(tags = {"SmartSchoolControllerAPI"}, value = "学校基本信息")
+public interface SmartSchoolControllerAPI {
+    @PostMapping(value = "/insertSmartSchool")
+    @ApiOperation(value = "添加学校基本信息", notes = "添加学校基本信息数据", httpMethod = "POST")
+    CommonResult insertSmartSchool(@Validated @RequestBody SmartSchool smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartSchoolById")
+    @ApiOperation(value = "编辑学校基本信息数据", notes = "编辑学校基本信息数据", httpMethod = "POST")
+    CommonResult updateSmartSchoolById(@Validated @RequestBody UpdateSmartSchoolRequest ussr, BindingResult bindingResult);
+
+    @GetMapping(value = "/querySmartSchool")
+    @ApiOperation(value = "获取学校基本信息数据", notes = "获取学校基本信息数据", httpMethod = "GET")
+    CommonResult querySmartSchool();
+
+    @GetMapping(value = "/queryPageSmartSchool")
+    @ApiOperation(value = "学校基本信息分页数据", notes = "学校基本信息分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartSchools(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartSchoolById")
+    @ApiOperation(value = "根据ID删除指定学校基本信息", notes = "根据ID删除指定学校基本信息", httpMethod = "GET")
+    CommonResult deleteSmartSchoolById(@RequestParam int id);
+}

+ 109 - 0
wanzai/src/main/java/com/template/api/SmartScoreControllerAPI.java

@@ -0,0 +1,109 @@
+package com.template.api;
+
+import com.template.model.request.deleteSmartScoreRequest;
+import com.template.model.request.insertScoreRequest;
+import com.template.model.request.updateScoreRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+
+@RequestMapping("/api/smartScore")
+@Api(tags = {"SmartScoreController"}, value = "成绩")
+public interface SmartScoreControllerAPI {
+
+    @GetMapping(value = "/querySmartSemesters")
+    @ApiOperation(value = "获取学期列表数据", notes = "获取学期列表数据", httpMethod = "GET")
+    CommonResult querySmartSemesters();
+
+    @GetMapping(value = "/queryUserGrade")
+    @ApiOperation(value = "根据学生ID获取年级和班级数据", notes = "根据学生ID获取年级和班级数据", httpMethod = "GET")
+    CommonResult queryUserGrade(@RequestParam int userId);
+
+    @GetMapping(value = "/querySubjects")
+    @ApiOperation(value = "获取科目集合数据", notes = "获取科目集合数据", httpMethod = "GET")
+    CommonResult querySubjects(@RequestParam int gradeId);
+
+    @GetMapping(value = "/queryExamTypes")
+    @ApiOperation(value = "获取考试类型集合数据", notes = "获取考试类型集合数据", httpMethod = "GET")
+    CommonResult queryExamTypes(@RequestParam int gradeId);
+
+    @GetMapping(value = "/querySmartSecordPage")
+    @ApiOperation(value = "获取学生分页数据", notes = "获取学生分页数据", httpMethod = "GET")
+    CommonResult querySmartSecordPage(@RequestParam int currentPage, @RequestParam int pageCount, String name, Integer userId);
+
+    @GetMapping(value = "/querySmartScorePage")
+    @ApiOperation(value = "获取成绩分页数据", notes = "获取成绩分页数据", httpMethod = "GET")
+    CommonResult querySmartScorePage(@RequestParam int currentPage, @RequestParam int pageCount,/*@RequestHeader("user_head") String userhead, */String name, String semester, String grade, String schoolClass, String subject, String examType, Double MinScore, Double MaxScore);
+
+    @PostMapping(value = "/insertSmartScore")
+    @ApiOperation(value = "添加成绩基本信息", notes = "添加成绩基本信息数据", httpMethod = "POST")
+    CommonResult insertSmartScore(@Validated @RequestBody insertScoreRequest isr, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartScoreById")
+    @ApiOperation(value = "编辑成绩基本信息数据", notes = "编辑成绩基本信息数据", httpMethod = "POST")
+    CommonResult updateSmartScoreById(@Validated @RequestBody updateScoreRequest usr, BindingResult bindingResult);
+
+    @GetMapping(value = "/querySmartScore")
+    @ApiOperation(value = "获取成绩基本信息数据", notes = "获取成绩基本信息数据", httpMethod = "GET")
+    CommonResult querySmartScore();
+
+    @GetMapping(value = "/queryPageSmartScore")
+    @ApiOperation(value = "成绩基本信息分页数据", notes = "成绩基本信息分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartScores(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartScoreById")
+    @ApiOperation(value = "根据ID删除指定成绩基本信息", notes = "根据ID删除指定成绩基本信息", httpMethod = "GET")
+    CommonResult deleteSmartScoreById(@RequestParam int id);
+
+    @PostMapping(value = "/deleteSmartScoreByIds")
+    @ApiOperation(value = "根据ID删除对应成绩基本信息", notes = "根据ID集合删除对应成绩基本信息", httpMethod = "POST")
+    CommonResult deleteSmartScoresByIds(@Validated @RequestBody deleteSmartScoreRequest dssr, BindingResult bindingResult);
+
+    /**
+     * 导出成绩数据
+     */
+    @GetMapping(value = "smartScoreExport")
+    @ApiOperation(value = "导出成绩数据", notes = "导出成绩数据", httpMethod = "GET")
+    void smartScoreExport(HttpServletResponse response, String name, String semester, String grade, String schoolClass, String subject, String examType, Double MinScore, Double MaxScore);
+
+
+    /**
+     * 测试导出成绩数据
+     */
+    @GetMapping(value = "testSmartUserExport")
+    @ApiOperation(value = "测试导出成绩数据", notes = "测试导出成绩数据", httpMethod = "GET")
+    void testSmartUserExport(HttpServletResponse response);
+
+
+    /**
+     * 导出排名成绩数据
+     */
+    @GetMapping(value = "smartUserExport")
+    @ApiOperation(value = "导出成绩数据", notes = "导出成绩数据", httpMethod = "GET")
+    void smartUserExport(HttpServletResponse response, String name, String semester, String grade, String schoolClass, String subject, String examType, Double MinScore, Double MaxScore);
+
+
+    /**
+     * 导入成绩
+     * 导入的时候如果存在重复的数据就提示
+     */
+    @PostMapping(value = "/importSmartScoreExcel")
+    @ApiOperation(value = "导入成绩数据", notes = "导入成绩数据", httpMethod = "POST")
+    CommonResult importSmartScoreExcel(@RequestParam("file") MultipartFile file) throws IOException;
+
+    /**
+     * 导出成绩模板
+     * @return
+     */
+    @GetMapping(value = "/downloadScoreExcel")
+    @ApiOperation(value = "导出成绩Excel模板", notes = "导出成绩Excel模板", httpMethod = "GET")
+    CommonResult downloadScoreExcel();
+}

+ 41 - 0
wanzai/src/main/java/com/template/api/SmartScreenshotControllerAPI.java

@@ -0,0 +1,41 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartScreenshot;
+import com.template.model.request.insertScreenshotRequest;
+import com.template.model.request.updateScreenshotRequest;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartScreenshot")
+@Api(tags = {"SmartScreenshotControllerAPI"}, value = "截屏风控")
+public interface SmartScreenshotControllerAPI {
+    @PostMapping(value = "/insertSmartScreenshot")
+    @ApiOperation(value = "添加截屏风控", notes = "添加截屏风控数据", httpMethod = "POST")
+    CommonResult insertSmartScreenshot(@Validated @RequestBody insertScreenshotRequest isr, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartScreenshotById")
+    @ApiOperation(value = "编辑截屏风控数据", notes = "编辑截屏风控数据", httpMethod = "POST")
+    CommonResult updateSmartScreenshotById(@Validated @RequestBody updateScreenshotRequest usr, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartScreenshot")
+    @ApiOperation(value = "截屏风控分页数据", notes = "截屏风控分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartScreenshots(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartScreenshotById")
+    @ApiOperation(value = "根据ID删除指定截屏风控", notes = "根据ID删除指定截屏风控", httpMethod = "GET")
+    CommonResult deleteSmartScreenshotById(@RequestParam int id);
+
+    @GetMapping(value = "/queryPunishs")
+    @ApiOperation(value = "获取触发惩罚规则列表", notes = "获取触发惩罚规则列表", httpMethod = "GET")
+    CommonResult queryPunishs();
+}

+ 45 - 0
wanzai/src/main/java/com/template/api/SmartScreenshotRecordControllerAPI.java

@@ -0,0 +1,45 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartScreenshot;
+import com.template.model.pojo.SmartScreenshotRecord;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartScreenshotRecord")
+@Api(tags = {"SmartScreenshotRecordControllerAPI"}, value = "截屏记录")
+public interface SmartScreenshotRecordControllerAPI {
+    @PostMapping(value = "/insertSmartScreenshotRecord")
+    @ApiOperation(value = "添加截屏记录", notes = "添加截屏记录数据", httpMethod = "POST")
+    CommonResult insertSmartScreenshotRecord(@Validated @RequestBody SmartScreenshotRecord smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartScreenshotRecordById")
+    @ApiOperation(value = "编辑截屏记录数据", notes = "编辑截屏记录数据", httpMethod = "POST")
+    CommonResult updateSmartScreenshotRecordById(@Validated @RequestBody SmartScreenshotRecord ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartScreenshotRecord")
+    @ApiOperation(value = "截屏记录分页数据", notes = "截屏记录分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartScreenshotRecord(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartScreenshotRecordById")
+    @ApiOperation(value = "根据ID删除指定截屏记录", notes = "根据ID删除指定截屏记录", httpMethod = "GET")
+    CommonResult deleteSmartScreenshotRecordById(@RequestParam int id);
+
+    @GetMapping(value = "/userScreenshotRecord")
+    @ApiOperation(value = "用户截屏记录", notes = "用户截屏记录", httpMethod = "GET")
+    CommonResult userScreenshotRecord(@RequestParam int userId) throws Exception;
+
+    @GetMapping(value = "/queryScreenshotRecordPage")
+    @ApiOperation(value = "截屏记录分页数据", notes = "截屏记录分页数据", httpMethod = "GET")
+    CommonResult queryScreenshotRecordPageList(int currentPage, int pageCount);
+
+}

+ 36 - 0
wanzai/src/main/java/com/template/api/SmartSemesterControllerAPI.java

@@ -0,0 +1,36 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartSemester;
+import com.template.model.pojo.SmartSemester;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartSemester")
+@Api(tags = {"SmartSemesterControllerAPI"}, value = "学期管理")
+public interface SmartSemesterControllerAPI {
+    @PostMapping(value = "/insertSmartSemester")
+    @ApiOperation(value = "添加学期", notes = "添加学期数据", httpMethod = "POST")
+    CommonResult insertSmartSemester(@Validated @RequestBody SmartSemester smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartSemesterById")
+    @ApiOperation(value = "编辑学期数据", notes = "编辑学期数据", httpMethod = "POST")
+    CommonResult updateSmartSemesterById(@Validated @RequestBody SmartSemester ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartSemester")
+    @ApiOperation(value = "学期分页数据", notes = "学期分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartSemesters(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartSemesterById")
+    @ApiOperation(value = "根据ID删除指定学期", notes = "根据ID删除指定学期", httpMethod = "GET")
+    CommonResult deleteSmartSemesterById(@RequestParam int id);
+}

+ 36 - 0
wanzai/src/main/java/com/template/api/SmartSubjectControllerAPI.java

@@ -0,0 +1,36 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartSubject;
+import com.template.model.pojo.SmartSubject;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartSubject")
+@Api(tags = {"SmartSubjectControllerAPI"}, value = "学科管理")
+public interface SmartSubjectControllerAPI {
+    @PostMapping(value = "/insertSmartSubject")
+    @ApiOperation(value = "添加学科", notes = "添加学科数据", httpMethod = "POST")
+    CommonResult insertSmartSubject(@Validated @RequestBody SmartSubject smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartSubjectById")
+    @ApiOperation(value = "编辑学科数据", notes = "编辑学科数据", httpMethod = "POST")
+    CommonResult updateSmartSubjectById(@Validated @RequestBody SmartSubject ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartSubject")
+    @ApiOperation(value = "学科分页数据", notes = "学科分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartSubjects(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartSubjectById")
+    @ApiOperation(value = "根据ID删除指定学科", notes = "根据ID删除指定学科", httpMethod = "GET")
+    CommonResult deleteSmartSubjectById(@RequestParam int id);
+}

+ 222 - 0
wanzai/src/main/java/com/template/api/SmartUserControllerAPI.java

@@ -0,0 +1,222 @@
+package com.template.api;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.template.model.request.*;
+import com.template.model.result.CommonResult;
+import com.template.model.result.PageUtils;
+import com.template.model.vo.UserDeleteVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartUser")
+@Api(tags = {"SmartUserControllerAPI"}, value = "用户")
+public interface SmartUserControllerAPI {
+    /**
+     * 注销账号
+     */
+    @PostMapping(value = "logoffAccount")
+    @ApiOperation(value = "注销账号", notes = "注销账号", httpMethod = "POST")
+    CommonResult logoffAccount(@Validated @RequestBody useridsRequest ur, BindingResult bindingResult);
+
+    /**
+     * 移动多个用户到其他部门
+     */
+    @PostMapping(value = "changeDepartment")
+    @ApiOperation(value = "移动多个用户到其他部门", notes = "移动多个用户到其他部门", httpMethod = "POST")
+    CommonResult changeDepartment(@Validated @RequestBody changeDepartmentRequest cdr, BindingResult bindingResult);
+
+    /**
+     * 导入用户的百胜编号
+     *
+     * @param excelFile excel文件
+     * @return
+     */
+    @PostMapping(value = "importExcelUserBsno")
+    @ApiOperation(value = "导入用户的百胜编号", notes = "导入用户的百胜编号", httpMethod = "POST")
+    CommonResult importExcelUserBsno(@RequestParam("file") MultipartFile excelFile) throws IOException;
+
+    /**
+     * 批量导入用户信息
+     *
+     * @param excelFile excel文件
+     * @return
+     */
+    @PostMapping(value = "importExcelUsers")
+    @ApiOperation(value = "批量导入用户信息", notes = "批量导入用户信息", httpMethod = "POST")
+    CommonResult importExcelUsers(@RequestParam("file") MultipartFile excelFile, @RequestParam String headImage) throws Exception;
+
+    /**
+     * 批量导入学生家长信息
+     *
+     * @param excelFile excel文件
+     * @return
+     */
+    @PostMapping(value = "importExcelFamilys")
+    @ApiOperation(value = "批量导入学生家长信息", notes = "批量导入学生家长信息", httpMethod = "POST")
+    CommonResult importExcelFamilys(@RequestParam("file") MultipartFile excelFile) throws Exception;
+
+    /**
+     * 批量更新学生信息
+     *
+     * @param excelFile excel文件
+     * @return
+     */
+    @PostMapping(value = "importExcelUpdateUsers")
+    @ApiOperation(value = "批量更新学生信息", notes = "批量更新学生信息", httpMethod = "POST")
+    CommonResult importExcelUpdateUsers(@RequestParam("file") MultipartFile excelFile) throws Exception;
+
+    /**
+     * 批量导入压缩包
+     *
+     * @param zipFile 附件文件
+     * @return
+     */
+    @PostMapping(value = "importZipUsers")
+    @ApiOperation(value = "批量导入", notes = "批量导入", httpMethod = "POST")
+    CommonResult importZipUsers(@RequestParam("file") MultipartFile zipFile) throws IOException;
+
+    @GetMapping(value = "/insertSmartUserPhoto")
+    @ApiOperation(value = "添加学生照片", notes = "添加学生照片", httpMethod = "GET")
+    CommonResult insertSmartUserPhoto() throws JsonProcessingException;
+
+
+    @PostMapping(value = "/insertSmartUser")
+    @ApiOperation(value = "添加用户", notes = "添加用户数据", httpMethod = "POST")
+    CommonResult insertSmartUser(@Validated @RequestBody insertSmartUserRequest isur, BindingResult bindingResult) throws Exception;
+
+    @PostMapping(value = "/updateSmartUserById")
+    @ApiOperation(value = "编辑用户数据", notes = "编辑用户数据", httpMethod = "POST")
+    CommonResult updateSmartUserById(@Validated @RequestBody updateSmartUserRequest ra, BindingResult bindingResult) throws Exception;
+
+    @GetMapping(value = "/queryPageSmartUser")
+    @ApiOperation(value = "用户分页数据", notes = "用户分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartUser(@RequestParam int currentPage, @RequestParam int pageCount, Integer departmentId, String name, @RequestHeader("user_head") String userhead);
+
+
+    @GetMapping(value = "/testDeleteUserById")
+    @ApiOperation(value = "测试删除用户", notes = "测试删除用户", httpMethod = "POST")
+    CommonResult testDeleteUserById(@RequestParam int userId) throws Exception;
+
+    /**
+     * 导出用户数据
+     */
+    @GetMapping(value = "smartUserExport")
+    @ApiOperation(value = "导出用户数据", notes = "导出用户数据", httpMethod = "GET")
+    void smartUserExport(HttpServletResponse response, Integer departmentId, String name, @RequestHeader("user_head") String userhead);
+
+    @PostMapping(value = "/deleteSmartUserByIdOld")
+    @ApiOperation(value = "根据ID删除指定用户", notes = "根据ID删除指定用户", httpMethod = "POST")
+    CommonResult deleteSmartUserByIdOld(@Validated @RequestBody useridsRequest ur, BindingResult bindingResult) throws Exception;
+
+    @PostMapping(value = "/deleteSmartUserById")
+    @ApiOperation(value = "根据ID删除指定用户", notes = "根据ID删除指定用户", httpMethod = "POST")
+    CommonResult deleteSmartUserById(@Validated @RequestBody useridsRequest ur, BindingResult bindingResult) throws Exception;
+
+    /**
+     * 学生家长预约信息填写界面获取受访学生列表
+     */
+    @GetMapping(value = "/queryAffiliateUserById")
+    @ApiOperation(value = "根据当前用户ID获取受访学生数据", notes = "根据当前用户ID获取受访学生数据", httpMethod = "GET")
+    CommonResult queryAffiliateUserById(@RequestParam int id);
+
+    /**
+     * 时间组数据集合
+     */
+    @GetMapping(value = "/timeGroups")
+    @ApiOperation(value = "时间组数据集合", notes = "时间组数据集合", httpMethod = "GET")
+    CommonResult timeGroups() throws Exception;
+
+    /**
+     * 导出人员模板
+     *
+     * @return
+     */
+    @GetMapping(value = "/downloadUserExcel")
+    @ApiOperation(value = "导出人员Excel模板", notes = "导出人员Excel模板", httpMethod = "GET")
+    CommonResult downloadUserExcel();
+
+    /**
+     * 导出更新人员模板
+     *
+     * @return
+     */
+    @GetMapping(value = "/downloadUpdateUserExcel")
+    @ApiOperation(value = "导出更新人员Excel模板", notes = "导出更新人员Excel模板", httpMethod = "GET")
+    CommonResult downloadUpdateUserExcel();
+
+    /**
+     * 根据用户ID查询学生
+     *
+     * @return
+     */
+    @GetMapping(value = "/queryStudents")
+    @ApiOperation(value = "根据用户ID查询学生", notes = "根据用户ID查询学生", httpMethod = "GET")
+    CommonResult queryStudents(@RequestParam int userId);
+
+    /**
+     * 根据数据ID获取用户信息
+     */
+    @GetMapping(value = "/queryInfoData")
+    @ApiOperation(value = "根据数据ID获取用户信息", notes = "根据数据ID获取用户信息", httpMethod = "GET")
+    CommonResult queryInfoData(@RequestParam int id);
+
+    /**
+     * 绑定学生
+     *
+     * @param isur
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(value = "/bindStudent")
+    @ApiOperation(value = "绑定学生", notes = "绑定学生", httpMethod = "POST")
+    CommonResult bindStudent(@Validated @RequestBody bindStudentRequest isur, BindingResult bindingResult);
+
+
+    /**
+     * 根据数据ID获取用户信息
+     */
+    @GetMapping(value = "/queryUserData")
+    @ApiOperation(value = "根据数据ID获取用户信息", notes = "根据数据ID获取用户信息", httpMethod = "GET")
+    CommonResult queryUserData(@RequestParam int id);
+
+    /**
+     * 删除记录的分页数据
+     *
+     * @param currentPage 当前页数
+     * @param pageCount   一页数据条数
+     * @return
+     */
+    @GetMapping(value = "/queryUserDeletePage")
+    @ApiOperation(value = "用户分页数据", notes = "用户分页数据", httpMethod = "GET")
+    CommonResult queryUserDeletePage(@RequestParam int currentPage, @RequestParam int pageCount);
+
+
+    /**
+     * 获取班级下的学生
+     */
+    @GetMapping(value = "/queryClassUser")
+    @ApiOperation(value = "获取班级下的学生", notes = "获取班级下的学生", httpMethod = "GET")
+    CommonResult queryClassUser(@RequestParam int userId, String keyWord);
+
+
+    /**
+     * 批量设置学生时间组
+     */
+    @PostMapping(value = "/setUserTimeGroup")
+    @ApiOperation(value = "批量设置学生时间组", notes = "批量设置学生时间组", httpMethod = "POST")
+    CommonResult setUserTimeGroup(@Validated @RequestBody setUserTimeGroupRequest isur, BindingResult bindingResult) throws Exception;
+
+}

+ 128 - 0
wanzai/src/main/java/com/template/api/SmartVisitorControllerAPI.java

@@ -0,0 +1,128 @@
+package com.template.api;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.template.model.pojo.SmartVisitor;
+import com.template.model.request.otherAppointmentRequest;
+import com.template.model.request.parentsAppointmentRequest;
+import com.template.model.request.turnOnTheDeviceRequest;
+import com.template.model.result.CommonResult;
+import com.template.model.vo.TurnOnDeviceVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartVisitor")
+@Api(tags = {"SmartVisitorControllerAPI"}, value = "访客预约")
+public interface SmartVisitorControllerAPI {
+    @PostMapping(value = "/insertSmartVisitor")
+    @ApiOperation(value = "添加访客预约", notes = "添加访客预约数据", httpMethod = "POST")
+    CommonResult insertSmartVisitor(@Validated @RequestBody SmartVisitor smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartVisitorById")
+    @ApiOperation(value = "编辑访客预约数据", notes = "编辑访客预约数据", httpMethod = "POST")
+    CommonResult updateSmartVisitorById(@Validated @RequestBody SmartVisitor ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartVisitor")
+    @ApiOperation(value = "访客预约分页数据", notes = "访客预约分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartVisitor(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+
+    @GetMapping(value = "/deleteSmartVisitorById")
+    @ApiOperation(value = "根据ID删除指定访客预约", notes = "根据ID删除指定访客预约", httpMethod = "GET")
+    CommonResult deleteSmartVisitorById(@RequestParam int id);
+
+    /**
+     * 学生家长预约
+     * 多个学生就多条访客数据 然后发送给对应老师审核
+     */
+    @PostMapping(value = "/parentsAppointment")
+    @ApiOperation(value = "学生家长预约", notes = "学生家长预约", httpMethod = "POST")
+    CommonResult parentsAppointment(@Validated @RequestBody parentsAppointmentRequest par, BindingResult bindingResult);
+
+    /**
+     * 其他访客预约
+     * 其他访客预约数据就发给管理员审核
+     */
+    @PostMapping(value = "/otherAppointment")
+    @ApiOperation(value = "其他访客预约", notes = "其他访客预约", httpMethod = "POST")
+    CommonResult otherAppointment(@Validated @RequestBody otherAppointmentRequest oar, BindingResult bindingResult);
+
+    /**
+     * 当前用户的预约记录
+     * @param userId 当前用户ID
+     * @param type 类型
+     *             全部:0
+     *             待审核:1
+     *             已拒绝:2
+     *             已推送:3
+     *
+     * @return
+     */
+
+    /**
+     * 预约记录分页数据
+     * @param currentPage 当前页数
+     * @param pageCount 一页数据条数
+     * @param userId 用户ID
+     * @param type 类型:
+     *             全部:0
+     *             待审核:1
+     *             已拒绝:2
+     *             已推送:3
+     * @param createStartTime 创建起始时间
+     * @param createEndTime 创建结束时间
+     * @param keyWord 关键字
+     * @param visitorStartTime 来访起始时间
+     * @param visitorEndTime 来访结束时间
+     * @return
+     */
+    @GetMapping(value = "/appointmentPageRecord")
+    @ApiOperation(value = "当前用户的预约记录", notes = "当前用户的预约记录", httpMethod = "GET")
+    CommonResult appointmentPageRecord(@RequestParam int currentPage, @RequestParam int pageCount, Integer userId, @RequestParam int type, String createStartTime, String createEndTime, String keyWord, String visitorStartTime,String visitorEndTime);
+
+    /**
+     * 访客记录审核
+     * @param id   数据ID
+     * @param type 操作类型:
+     *             同意,并推送:1
+     *             拒绝:2
+     * @return
+     */
+    @GetMapping(value = "/examineRecord")
+    @ApiOperation(value = "访客记录审核", notes = "访客记录审核", httpMethod = "GET")
+    CommonResult examineRecord(@RequestParam int id,@RequestParam int type) throws Exception;
+
+    /**
+     *
+     * @param currentPage 当前页
+     * @param pageCount 一页数据条数
+     * @param userId 用户ID
+     * @param type 类型:待审核:1
+     *                  已拒绝:2
+     *                  已推送:3
+     * @return
+     */
+    @GetMapping(value = "/visitingAgencys")
+    @ApiOperation(value = "获取到访记录数据", notes = "获取到访记录数据", httpMethod = "GET")
+    CommonResult visitingAgencys(@RequestParam int currentPage, @RequestParam int pageCount, @RequestParam int userId, @RequestParam int type);
+
+    /**
+     * 其他访客预约
+     * 其他访客预约数据就发给管理员审核
+     */
+    @PostMapping(value = "/turnOnTheDevice")
+    @ApiOperation(value = "其他访客预约", notes = "其他访客预约", httpMethod = "POST")
+    TurnOnDeviceVo turnOnTheDevice(@RequestBody turnOnTheDeviceRequest data) throws JsonProcessingException;
+
+
+    @GetMapping(value = "/testVisitorDevice")
+    @ApiOperation(value = "测试访客设备", notes = "测试访客设备", httpMethod = "GET")
+    CommonResult testVisitorDevice(@RequestParam int id, @RequestParam String deviceNo) throws Exception;
+}

+ 83 - 0
wanzai/src/main/java/com/template/api/SmartWarningControllerAPI.java

@@ -0,0 +1,83 @@
+package com.template.api;
+
+import com.baomidou.mybatisplus.extension.api.R;
+import com.template.model.dto.OperationWarningDto;
+import com.template.model.dto.WarningDeletePushDto;
+import com.template.model.dto.WarningSavePushDto;
+import com.template.model.pojo.SmartWarning;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartWarning")
+@Api(tags = {"SmartWarningControllerAPI"}, value = "预警信息")
+public interface SmartWarningControllerAPI {
+    @PostMapping(value = "/insertSmartWarning")
+    @ApiOperation(value = "添加预警信息", notes = "添加预警信息数据", httpMethod = "POST")
+    CommonResult insertSmartWarning(@Validated @RequestBody SmartWarning smartApply, BindingResult bindingResult);
+
+    @PostMapping(value = "/updateSmartWarningById")
+    @ApiOperation(value = "编辑预警信息数据", notes = "编辑预警信息数据", httpMethod = "POST")
+    CommonResult updateSmartWarningById(@Validated @RequestBody SmartWarning ra, BindingResult bindingResult);
+
+    @GetMapping(value = "/queryPageSmartWarning")
+    @ApiOperation(value = "预警信息分页数据", notes = "预警信息分页数据", httpMethod = "GET")
+    CommonResult queryPageSmartWarning(@RequestParam int currentPage, @RequestParam int pageCount, String name,String state);
+
+    @GetMapping(value = "/deleteSmartWarningById")
+    @ApiOperation(value = "根据ID删除指定预警信息", notes = "根据ID删除指定预警信息", httpMethod = "GET")
+    CommonResult deleteSmartWarningById(@RequestParam int id);
+
+    @PostMapping(value = "/operation")
+    @ApiOperation(value = "根据ID操作", notes = "根据ID操作", httpMethod = "POST")
+    CommonResult operation(@RequestBody OperationWarningDto operationWarningDto);
+
+    @GetMapping(value = "/excelSmartWarning")
+    @ApiOperation(value = "预警导出", notes = "预警导出", httpMethod = "GET")
+    void excelSmartWarning(HttpServletResponse response,String location,String state);
+
+    @GetMapping(value = "/warningType")
+    @ApiOperation(value = "预警小程序下拉框", notes = "预警小程序下拉框", httpMethod = "GET")
+    CommonResult warningType();
+
+    @GetMapping(value = "/pageWarning")
+    @ApiOperation(value = "预警小程序分页展示", notes = "预警小程序分页展示", httpMethod = "GET")
+    CommonResult pageWarning(@RequestParam int currentPage, @RequestParam int pageCount,@RequestParam String type,@RequestParam String dateTime);
+
+    @GetMapping(value = "/warningDepartmentTree")
+    @ApiOperation(value = "查询部门树形结构数据", notes = "查询部门树形结构数据", httpMethod = "GET")
+    CommonResult warningDepartmentTree();
+
+    @GetMapping(value = "/warningUserList")
+    @ApiOperation(value = "预警推送用户分页", notes = "预警推送用户分页", httpMethod = "GET")
+    CommonResult warningUserList(@RequestParam int currentPage, @RequestParam int pageCount,String name);
+
+    @GetMapping(value = "/warningPushList")
+    @ApiOperation(value = "可推送用户展示", notes = "预警推送用户分页", httpMethod = "GET")
+    CommonResult warningPushList();
+
+    @PostMapping(value = "/warningSavePush")
+    @ApiOperation(value = "添加预警可推送用户", notes = "添加预警可推送用户", httpMethod = "POST")
+    CommonResult warningSavePush(@RequestBody WarningSavePushDto warningSavePushDto);
+
+    @PostMapping(value = "/warningDeletePush")
+    @ApiOperation(value = "删除预警可推送用户", notes = "删除预警可推送用户", httpMethod = "POST")
+    CommonResult warningDeletePush(@RequestBody WarningDeletePushDto warningDeletePushDto);
+
+    @GetMapping(value = "/behaviour")
+    @ApiOperation(value = "行为分析", notes = "行为分析", httpMethod = "GET")
+    CommonResult behaviourList();
+
+}

+ 16 - 0
wanzai/src/main/java/com/template/api/SmsCodeControllerAPI.java

@@ -0,0 +1,16 @@
+package com.template.api;
+
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@RequestMapping("/api/smsCode")
+@Api(tags = {"SmsCodeControllerAPI"}, value = "短信验证码")
+public interface SmsCodeControllerAPI {
+
+    @GetMapping(value = "/InsertSmsCode")
+    @ApiOperation(value = "新增Code", notes = "新增Code", httpMethod = "POST")
+    CommonResult InsertSmsCode();
+}

+ 50 - 0
wanzai/src/main/java/com/template/api/SystemMenuControllerAPI.java

@@ -0,0 +1,50 @@
+package com.template.api;
+
+import com.template.model.pojo.SystemMenu;
+import com.template.model.result.CommonResult;
+import com.template.model.vo.SystemMenuTreeVo;
+import com.template.model.vo.SystemMenuVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/systemMenu")
+@Api(tags = {"SystemMenuController"}, value = "测试接口")
+public interface SystemMenuControllerAPI {
+    @GetMapping(value = "/QueryPlaybackRecordBySql")
+    @ApiOperation(value = "通过sql获取数据", notes = "通过sql获取数据", httpMethod = "GET")
+    CommonResult<List<SystemMenuVo>> QueryPlaybackRecordBySql();
+
+    @GetMapping(value = "/QuerySystemMenus")
+    @ApiOperation(value = "查询所有菜单数据", notes = "查询所有菜单数据", httpMethod = "GET")
+    CommonResult<List<SystemMenu>> QueryPlaybackRecords();
+
+    @PostMapping(value = "/InsertSystemMenu")
+    @ApiOperation(value = "新增菜单数据", notes = "新增菜单数据", httpMethod = "POST")
+    CommonResult InsertSystemMenu(@RequestBody SystemMenu systemMenu);
+
+    @PostMapping(value = "/DeleteSystemMenu")
+    @ApiOperation(value = "新增菜单数据", notes = "新增菜单数据", httpMethod = "POST")
+    CommonResult DeleteSystemMenu(@RequestParam("userId") Integer userID);
+
+    @GetMapping(value = "/QueryMenuTrees")
+    @ApiOperation(value = "查询树形菜单数据", notes = "查询树形菜单数据", httpMethod = "GET")
+    CommonResult<List<SystemMenuTreeVo>> QueryMenuTreeRecords();
+
+    @PostMapping(value = "/InsertPlaybackRecord")
+    @ApiOperation(value = "新增", notes = "新增", httpMethod = "POST")
+    CommonResult<Integer> InsertPlaybackRecord(@RequestBody SystemMenu pb);
+
+    @GetMapping("/testQuery")
+    @ApiOperation(value = "查询", notes = "查询", httpMethod = "GET")
+    CommonResult<List<SystemMenu>> QueryPlaybackRecords(HttpServletRequest request);
+}

+ 31 - 0
wanzai/src/main/java/com/template/api/UploadControllerAPI.java

@@ -0,0 +1,31 @@
+package com.template.api;
+
+import com.template.annotation.PassToken;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
+
+@Api(tags = {"UploadController"}, value = "cos文件操作")
+@RequestMapping("/api/upload")
+public interface UploadControllerAPI {
+
+    @PostMapping("/toCos")
+    @ApiOperation(value = "文件上传",httpMethod = "POST")
+    @PassToken
+    CommonResult toCos(@RequestParam("files") MultipartFile[] files);
+
+    @GetMapping("/deleteFile")
+    @ApiOperation(value = "文件上传",httpMethod = "POST")
+    @PassToken
+    CommonResult deleteFile(@RequestParam String fileName);
+
+    @GetMapping("/ossSign")
+    @ApiOperation(value = "获取Oss签名",httpMethod = "GET")
+    @PassToken
+    CommonResult ossSign(@RequestParam String suffix);
+}

+ 104 - 0
wanzai/src/main/java/com/template/api/WechatScanLoginControllerAPI.java

@@ -0,0 +1,104 @@
+package com.template.api;
+
+import com.template.model.result.CommonResult;
+import com.template.model.tongji.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.ui.Model;
+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.ResponseBody;
+
+import java.io.UnsupportedEncodingException;
+import java.text.ParseException;
+
+@RequestMapping("/api/wechat")
+@Api(tags = {"WechatScanLoginController"}, value = "扫码登录")
+public interface WechatScanLoginControllerAPI {
+
+    @RequestMapping(value = "/login")
+    @ApiOperation(value = "二维码登录")
+    public String login(Model model) throws UnsupportedEncodingException;
+
+    @RequestMapping(value = "/callback")
+    @ApiOperation(value = "登录回调")
+    public String callback(String code, String state) throws UnsupportedEncodingException;
+
+    @RequestMapping(value = "/bind")
+    @ApiOperation(value = "绑定微信", httpMethod = "GET")
+    public String bindUserMac(String phone,String messageCode) throws UnsupportedEncodingException;
+
+    @RequestMapping(value = "/bindcallback")
+    @ApiOperation(value = "绑定微信回调url", httpMethod = "GET")
+    public String bindcallback(String code, String state, String phone,String messageCode) throws UnsupportedEncodingException;
+
+    @RequestMapping(value = "/insertElecMeterDetail")
+    @ResponseBody
+    public String insertElecMeterDetail() throws Exception;
+
+    @RequestMapping(value = "/insertWatMeterDetail")
+    @ResponseBody
+    public String insertWatMeterDetail() throws Exception;
+
+    @RequestMapping(value = "/insertMonthMeter")
+    @ResponseBody
+    public String insertMonthMeter(String month);
+
+    @RequestMapping(value = "/insertDayMeter")
+    @ResponseBody
+    public String insertDayMeter(String day);
+
+    @RequestMapping(value = "/getUserIdTj")
+    @ResponseBody
+    public CommonResult getUserIdTj();
+
+    @RequestMapping(value = "/getUserIdTjt")
+    @ResponseBody
+    public CommonResult getUserIdTjt();
+
+    @RequestMapping(value = "/getWaterTj")
+    @ResponseBody
+    public CommonResult getWaterTj();
+
+    @RequestMapping(value = "/getElcTj")
+    @ResponseBody
+    public CommonResult getElcTj();
+
+    @RequestMapping(value = "/getMonWater")
+    @ResponseBody
+    public CommonResult getMonWater() throws ParseException;
+
+    @RequestMapping(value = "/getMonElc")
+    @ResponseBody
+    public CommonResult getMonElc() throws ParseException;
+
+    @RequestMapping(value = "/getMeterMonthPage")
+    @ResponseBody
+    public CommonResult getMeterMonthPage(MeterMonthData meterMonthData,int currentPage, int pageCount);
+
+    @RequestMapping(value = "/getMeterDayPage")
+    @ResponseBody
+    public CommonResult getMeterDayPage(MeterMonthData meterMonthData,int currentPage, int pageCount);
+
+    @RequestMapping(value = "/getPosition")
+    @ResponseBody
+    public CommonResult getPosition();
+
+    @RequestMapping(value = "/vertify")
+    @ResponseBody
+    public CommonResult vertify(String code);
+
+    @RequestMapping(value = "/sendMessage")
+    @ResponseBody
+    public CommonResult sendMessage(@RequestParam String phone);
+
+    @RequestMapping(value = "/vertifyMessage")
+    @ResponseBody
+    public CommonResult vertifyMessage(String phone,String code, String wxcode);
+
+    @RequestMapping(value = "/queryPhoneBook")
+    @ResponseBody
+    public CommonResult queryPhoneBook(@RequestParam Integer id);
+    
+}

+ 26 - 0
wanzai/src/main/java/com/template/api/WxGzhControllerAPI.java

@@ -0,0 +1,26 @@
+package com.template.api;
+
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@RequestMapping("/api/wxGzh")
+public interface WxGzhControllerAPI {
+
+    @GetMapping(value = "getWxGzhOpenid")
+    @ApiOperation(value = "通过微信公众号的code获取openid", notes = "通过微信公众号的code获取openid", httpMethod = "GET")
+    CommonResult getWxGzhOpenid(@RequestParam String code) throws Exception;
+
+
+    @GetMapping(value = "/vertifyMessage")
+    @ApiOperation(value = "通过手机号绑定公众号openId", notes = "通过手机号绑定公众号openId", httpMethod = "GET")
+    CommonResult vertifyMessage(@RequestParam String phone,@RequestParam String code,@RequestParam String wxGzhCode);
+
+
+    @GetMapping(value = "/unbinding")
+    @ApiOperation(value = "通过手机号解绑", notes = "通过手机号解绑", httpMethod = "GET")
+    CommonResult unbinding(@RequestParam String phone);
+}

+ 16 - 0
wanzai/src/main/java/com/template/common/constanst/Constanst.java

@@ -0,0 +1,16 @@
+package com.template.common.constanst;
+
+/**
+ * <p>Title: Constanst</p>
+ * <p>Description: 系统所用到的常量 </p>
+ * @author fengyong
+ * @date 2018年9月7日
+ */
+public class Constanst {
+	
+	/**
+	 * 自定义加密措施
+	 */
+	public static final String PWD_MD5 = "FeNG#@YOnG";
+
+}

+ 14 - 0
wanzai/src/main/java/com/template/common/exception/EmsException.java

@@ -0,0 +1,14 @@
+package com.template.common.exception;
+
+import com.template.common.result.ResponseStatusEnum;
+
+/**
+ * 处理异常,统一封装
+ */
+public class EmsException {
+
+    public static void display(ResponseStatusEnum responseStatusEnum) {
+        throw new MyCustomException(responseStatusEnum);
+    }
+
+}

+ 199 - 0
wanzai/src/main/java/com/template/common/exception/EmsExceptionHandler.java

@@ -0,0 +1,199 @@
+package com.template.common.exception;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.template.common.result.ResponseStatusEnum;
+import com.template.model.result.CommonResult;
+import org.mybatis.spring.MyBatisSystemException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.support.DefaultMessageSourceResolvable;
+import org.springframework.http.converter.HttpMessageNotReadableException;
+import org.springframework.validation.BindException;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.web.HttpRequestMethodNotSupportedException;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.MissingServletRequestParameterException;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.fasterxml.jackson.databind.exc.InvalidFormatException;
+import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.ConstraintViolationException;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 统一异常拦截处理
+ * 可以针对异常的类型进行捕获,然后返回json信息到前端
+ */
+@ControllerAdvice
+public class EmsExceptionHandler {
+
+    //org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported
+    final static Logger logger=LoggerFactory.getLogger(EmsExceptionHandler.class);
+
+    //处理Get请求中 使用@Valid 验证路径中请求实体校验失败后抛出的异常
+    @ExceptionHandler(BindException.class)
+    @ResponseBody
+    public CommonResult BindExceptionHandler(BindException e) {
+        String message = e.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining());
+        logger.error("错误信息",message);
+        return CommonResult.resultValue(ResponseStatusEnum.SYSTEM_NULL_POINTER);
+    }
+
+    //处理请求参数格式错误 @RequestParam上validate失败后抛出的异常是javax.validation.ConstraintViolationException
+    @ExceptionHandler(ConstraintViolationException.class)
+    @ResponseBody
+    public CommonResult ConstraintViolationExceptionHandler(ConstraintViolationException e) {
+        String message = e.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.joining());
+        logger.error("错误信息",message);
+        return CommonResult.resultValue(ResponseStatusEnum.SYSTEM_NULL_POINTER);
+    }
+
+    @ResponseBody
+    @ExceptionHandler(NullPointerException.class)
+    public CommonResult exception(NullPointerException e) {
+        e.printStackTrace();
+        //String error=e.getFieldError().getDefaultMessage();
+        logger.error("错误信息",e.fillInStackTrace());
+        return CommonResult.resultValue(ResponseStatusEnum.SYSTEM_NULL_POINTER);
+    }
+
+    @ExceptionHandler(Exception.class)
+    @ResponseBody
+    public CommonResult exception(Exception e) {
+        e.printStackTrace();
+        logger.error("错误信息",e.fillInStackTrace());
+        return CommonResult.fail(e.getMessage());
+    }
+
+    //mysql连接超时
+    @ExceptionHandler(MyBatisSystemException.class)
+    @ResponseBody
+    public CommonResult exception(MyBatisSystemException e) {
+        e.printStackTrace();
+        //String error=e.getFieldError().getDefaultMessage();
+        logger.error("错误信息",e.fillInStackTrace());
+        return CommonResult.resultValue(ResponseStatusEnum.SYSTEM_MYSQL_TIMEOUT_ERROR);
+    }
+
+    //请求方式错误
+    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
+    @ResponseBody
+    public CommonResult httpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
+        e.printStackTrace();
+        logger.error("错误信息",e.fillInStackTrace());
+        //String error=e.getFieldError().getDefaultMessage();
+        return CommonResult.resultValue(ResponseStatusEnum.SYSTEM_REQUEST_METHOD_ERROR);
+    }
+
+    //传参空异常
+    @ExceptionHandler(MissingServletRequestParameterException.class)
+    @ResponseBody
+    public CommonResult missingServletRequestParameterException(MissingServletRequestParameterException e) {
+        String name=  e.getParameterName();
+        logger.error("错误信息",e.fillInStackTrace());
+
+        //String error=e.getFieldError().getDefaultMessage();
+        return CommonResult.fail(name+"不能为空");
+    }
+
+    @ExceptionHandler(MyCustomException.class)
+    @ResponseBody
+    public CommonResult returnMyException(MyCustomException e) {
+        e.printStackTrace();
+        logger.error("错误信息",e.fillInStackTrace());
+        return CommonResult.resultValue(e.getResponseStatusEnum());
+    }
+
+    /**
+     * 传入JSON数据格式错误
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(JsonParseException.class)
+    @ResponseBody
+    public CommonResult returnMyException(JsonParseException e) {
+        logger.error("错误信息",e.fillInStackTrace());
+        e.printStackTrace();
+        return CommonResult.resultValue(ResponseStatusEnum.SEND_PARAMS);
+    }
+
+
+    /**
+     * 传入JSON数据格式转换错误
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(HttpMessageNotReadableException.class)
+    @ResponseBody
+    public CommonResult httpMessageNotReadableException(HttpMessageNotReadableException e) {
+        logger.error("错误信息",e.fillInStackTrace());
+        e.printStackTrace();//
+        if(e.getCause() instanceof  InvalidFormatException){
+            InvalidFormatException e1=   (InvalidFormatException)e.getCause();
+            Object erro1= e1.getValue();
+            Object erro2=e1.getTargetType().getSimpleName();
+            System.out.print(erro1);
+            System.out.print(erro2);
+        }
+
+        String error=e.getMessage();
+        return CommonResult.resultValue(ResponseStatusEnum.SEND_PARAMS_TYPE);
+    }
+
+
+
+
+
+
+
+    /**
+     * 参数验证错误
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(MethodArgumentNotValidException.class)
+    @ResponseBody
+    public CommonResult returnException(MethodArgumentNotValidException e) {
+        logger.error("错误信息",e.fillInStackTrace());
+        BindingResult result = e.getBindingResult();
+        Map<String, String> map = getErrors(result);
+        return CommonResult.fail(map.values().toString().replace("[","").replace("]",""));
+    }
+
+    /**
+     * 参数验证错误
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(MethodArgumentTypeMismatchException.class)
+    @ResponseBody
+    public CommonResult returnException(MethodArgumentTypeMismatchException e) {
+        logger.error("错误信息",e.fillInStackTrace());
+        String value=e.getValue().toString();
+        String paraType=e.getRequiredType().getName().toString();
+
+        return CommonResult.errorMsg(e.getName()+"数据格式转换错误");
+    }
+
+
+    public Map<String, String> getErrors(BindingResult result) {
+        Map<String, String> map = new HashMap<>();
+        List<FieldError> errorList = result.getFieldErrors();
+        for (FieldError error : errorList) {
+            // 发送验证错误的时候所对应的某个属性
+            String field = error.getField();
+            // 验证的错误消息
+            String msg = error.getDefaultMessage();
+            map.put(field, msg);
+        }
+        return map;
+    }
+
+
+}

+ 29 - 0
wanzai/src/main/java/com/template/common/exception/MyCustomException.java

@@ -0,0 +1,29 @@
+package com.template.common.exception;
+
+import com.template.common.result.ResponseStatusEnum;
+
+/**
+ * 自定义异常
+ * 目的:统一处理异常信息
+ *      便于解耦,service与controller错误的解耦,不会被service返回的类型而限制
+ */
+public class MyCustomException extends RuntimeException {
+
+    private ResponseStatusEnum responseStatusEnum;
+
+    public MyCustomException(ResponseStatusEnum responseStatusEnum) {
+        super("异常状态码为:" + responseStatusEnum.status()
+                + ";具体异常信息为:" + responseStatusEnum.msg());
+        this.responseStatusEnum = responseStatusEnum;
+    }
+
+    public ResponseStatusEnum getResponseStatusEnum() {
+        return responseStatusEnum;
+    }
+
+    public void setResponseStatusEnum(ResponseStatusEnum responseStatusEnum) {
+        this.responseStatusEnum = responseStatusEnum;
+    }
+
+
+}

+ 43 - 0
wanzai/src/main/java/com/template/common/jh/ReqRespResearchProductQuestionnaireItem.java

@@ -0,0 +1,43 @@
+package com.template.common.jh;
+
+import java.io.Serializable;
+
+public class ReqRespResearchProductQuestionnaireItem implements Serializable {
+    private static final long serialVersionUID = -2850886454687095222L;
+    private String minValue;
+    private String maxValue;
+    //"范围符号:1-大于/2-小于/3-等于/4-不等于/5-大于等于/6-小于等于/7-全闭区间/8-左闭右开区间/9-左开右闭区间/10-全开区间"
+    private Byte symbol;
+
+    public ReqRespResearchProductQuestionnaireItem( String minValue, String maxValue, Byte symbol) {
+        this.minValue = minValue;
+        this.maxValue = maxValue;
+        this.symbol = symbol;
+    }
+
+    public String getMinValue() {
+        return minValue;
+    }
+
+    public void setMinValue(String minValue) {
+        this.minValue = minValue;
+    }
+
+    public String getMaxValue() {
+        return maxValue;
+    }
+
+    public void setMaxValue(String maxValue) {
+        this.maxValue = maxValue;
+    }
+
+    public Byte getSymbol() {
+        return symbol;
+    }
+
+    public void setSymbol(Byte symbol) {
+        this.symbol = symbol;
+    }
+}
+
+

+ 243 - 0
wanzai/src/main/java/com/template/common/jh/SectionUtil.java

@@ -0,0 +1,243 @@
+package com.template.common.jh;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @description: 区间工具类
+ * @author: wyj
+ * @time: 2020/3/1 15:05
+ */
+public class SectionUtil {
+    //最小值
+    private String min_entity;
+    //最大值
+    private String max_entity;
+    //左侧括号状态:false -开区间  true-- 闭区间
+    private boolean left_sate = false;
+    //右侧括号状态:false -开区间  true-- 闭区间
+    private boolean right_sate = false;
+    private SectionUtil() {
+
+    }
+
+    public SectionUtil(String min_entity, String max_entity, boolean left_sate, boolean right_sate) {
+        this.min_entity = min_entity;
+        this.max_entity = max_entity;
+        this.left_sate = left_sate;
+        this.right_sate = right_sate;
+    }
+
+    public String getMin_entity() {
+        return min_entity;
+    }
+
+    public String getMax_entity() {
+        return max_entity;
+    }
+
+    public boolean isLeft_sate() {
+        return left_sate;
+    }
+
+    public boolean isRight_sate() {
+        return right_sate;
+    }
+
+    /**
+     * @description: 创建负区间((负无穷,X])
+     * @param value 区间最大值
+     * @param right_sate 区间开闭状态
+     * @Date: 2020/3/2 14:37
+     */
+    public static SectionUtil creatFu(String value, boolean right_sate) {
+
+        return new SectionUtil("", value, false, right_sate);
+    }
+    /**
+     * @description: 创建正区间[X,正无穷))
+     * @param value 区间最小值
+     * @param left_sate 区间开闭状态
+     * @Date: 2020/3/2 14:37
+     */
+    public static SectionUtil creatZheng(String value, boolean left_sate) {
+
+        return new SectionUtil(value, "", left_sate, false);
+    }
+    /**
+     * @description: 创建闭合区间([X,Y])
+     * @param min   区间最小值
+     * @param max   区间最大值
+     * @param left_sate 区间左侧开闭状态
+     * @param right_sate 区间右侧开闭状态
+     * @return
+     * @Date: 2020/3/2 14:41
+     */
+    public static SectionUtil creat(String min, boolean left_sate, String max, boolean right_sate) {
+
+        return new SectionUtil(min, max, left_sate, right_sate);
+    }
+    /**
+     * @description:  将实体类转换成区间集合
+     * @param record  待转换的实体类
+     * @return 转换后的区间集合类(不等于时转换后为2个区间,所以采用集合)
+     * @Date: 2020/3/2 14:19
+     */
+    public static List<SectionUtil> getSections(ReqRespResearchProductQuestionnaireItem record) {
+        List<SectionUtil> list = new ArrayList<>();
+        String record_max = record.getMaxValue();
+        String record_min = record.getMinValue();
+        switch (record.getSymbol()) {
+            case 1:
+                list.add(creatZheng(record_max, false));
+                break;
+            case 2:
+                list.add(creatFu(record_max, false));
+                break;
+            case 3:
+                list.add(creat(record_max, true, record_max, true));
+                break;
+            case 4:
+                list.add(creatFu(record_max, false));
+                list.add(creatZheng(record_max, false));
+                break;
+            case 5:
+                list.add(creatZheng(record_max, true));
+                break;
+            case 6:
+                list.add(creatFu(record_max, true));
+                break;
+            case 7:
+                list.add(creat(record_min, true, record_max, true));
+                break;
+            case 8:
+                list.add(creat(record_min, true, record_max, false));
+                break;
+            case 9:
+                list.add(creat(record_min, false, record_max, true));
+                break;
+            case 10:
+                list.add(creat(record_min, false, record_max, false));
+                break;
+        }
+        return list;
+    }
+
+
+
+    public int compareTo(String first_value, String second_value) {
+        //first_value为空表示为正无穷,second_value为空表示为负无穷
+        if (isBlank(first_value) || isBlank(second_value)) {
+            return 1;
+        }
+        return compareToValue(first_value,second_value);
+    }
+    //判断字符串是否为空
+    public static boolean isBlank(String str) {
+        int strLen;
+        if (str == null || (strLen = str.length()) == 0) {
+            return true;
+        }
+        for (int i = 0; i < strLen; i++) {
+            if ((Character.isWhitespace(str.charAt(i)) == false)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * @param record 判断区间是否有重合
+     * @return true-有重合  false -无重合
+     * @description: 判断当前区间是否和指定区间重合
+     * @Date: 2020/3/2 10:20
+     */
+    public boolean isChonghe(SectionUtil record) {
+        String min_entity = record.getMin_entity();
+        String max_entity = record.getMax_entity();
+        boolean left_sate = record.isLeft_sate();
+        boolean right_sate = record.isRight_sate();
+        boolean left_isok = false;
+        boolean right_isok = false;
+        //重合条件,第一个区间最大值大于第二个区间最小值并且第一个区间的最小值小于第二个区间的最大值
+        //注意传值顺序,第一个值为第一个区间的最大值(此处不能反)
+        int first_result = compareTo(this.max_entity, min_entity);
+        if ((first_result == 0 && this.right_sate && left_sate) || (first_result > 0)) {
+            left_isok = true;
+        }
+        //注意传值顺序,第一个值为第二个区间的最大值(此处不能反)
+        int second_result = compareTo(max_entity, this.min_entity);
+        //此处本应该是second_result<0,但由于上一步参数传递时时反正传递,故此此处为second_result>0
+        if ((second_result == 0 && this.left_sate && right_sate) || second_result > 0) {
+            right_isok = true;
+        }
+        return left_isok && right_isok;
+    }
+    /**
+     * @description:   比较集合中区间是否有重叠
+     * @param list1 待比较集合1
+     * @param list2 待比较集合2
+     * @return
+     * @Date: 2020/3/2 11:49
+     */
+    public static boolean isChonghe(List<SectionUtil> list1, List<SectionUtil> list2) {
+        boolean chonghed = false;
+        for (SectionUtil item1 : list1) {
+            for (SectionUtil item2 : list2) {
+                chonghed = item1.isChonghe(item2);
+                if (chonghed) {
+                    return true;
+                }
+            }
+        }
+        return chonghed;
+    }
+
+    //比较大小
+    public static int compareToValue(String value1, String value2) {
+        BigDecimal b1 = new BigDecimal(value1);
+        BigDecimal b2 = new BigDecimal(value2);
+        return b1.compareTo(b2);
+    }
+
+    /**
+     * @description:   判断集合中区间是否重叠
+     * @param list  待判断集合
+     * @return  fasle-无重叠 true-有重叠
+     * @Date: 2020/3/3 14:51
+     */
+    public static boolean compareSection(List<ReqRespResearchProductQuestionnaireItem> list) {
+        for (int i = 0; i < list.size(); i++) {
+            ReqRespResearchProductQuestionnaireItem record = list.get(i);
+            for (int j = i + 1; j < list.size(); j++) {
+                ReqRespResearchProductQuestionnaireItem item = list.get(j);
+                //判断区间是否有交叉
+                List<SectionUtil> records = SectionUtil.getSections(record);
+                List<SectionUtil> items = SectionUtil.getSections(item);
+                boolean chonghe = SectionUtil.isChonghe(records, items);
+                if (chonghe) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    public static void main(String[] args) {
+        List<ReqRespResearchProductQuestionnaireItem> all = new ArrayList<>();
+        ReqRespResearchProductQuestionnaireItem re1 = new ReqRespResearchProductQuestionnaireItem("110","120", (byte) 7);
+        ReqRespResearchProductQuestionnaireItem re2 = new ReqRespResearchProductQuestionnaireItem("90","112", (byte) 7);
+        ReqRespResearchProductQuestionnaireItem re3 = new ReqRespResearchProductQuestionnaireItem("80","89", (byte) 7);
+        ReqRespResearchProductQuestionnaireItem re4 = new ReqRespResearchProductQuestionnaireItem("60","79", (byte) 7);
+        ReqRespResearchProductQuestionnaireItem re5 = new ReqRespResearchProductQuestionnaireItem("0","59", (byte) 7);
+        all.add(re1);
+        all.add(re2);
+        all.add(re3);
+        all.add(re4);
+        all.add(re5);
+        System.out.println(compareSection(all));
+    }
+}
+
+

+ 7 - 0
wanzai/src/main/java/com/template/common/result/Code.java

@@ -0,0 +1,7 @@
+package com.template.common.result;
+
+public interface Code {
+    Integer getStatus();
+    Boolean getSuccess();
+    String getMsg();
+}

+ 83 - 0
wanzai/src/main/java/com/template/common/result/ResponseStatusEnum.java

@@ -0,0 +1,83 @@
+package com.template.common.result;
+
+/**
+ * 响应结果枚举,用于提供给GraceJSONResult返回给前端的
+ * 本枚举类中包含了很多的不同的状态码供使用,可以自定义
+ * 便于更优雅的对状态码进行管理,一目了然
+ */
+public enum ResponseStatusEnum implements Code{
+
+
+    SUCCESS(200, true, "操作成功!"),
+    NO_PERMISSION(401,false,"没有权限"),
+    MISSING_REQUEST_HEADER(499,false,"缺少请求头"),
+    FAILED(500, false, "操作失败!"),
+    SEND_PARAMS(501,false,"传入参数数据结构错误"),
+    SEND_PARAMS_TYPE(502,false,"传入参数数据类型错误"),
+    UN_SERVICES_ERROR(505,false,"操作失败,请联系管理员"),
+
+    // 自定义系统级别异常 54x
+    SYSTEM_ERROR(540, false, "系统错误,错误未知!"),
+    SYSTEM_INDEX_OUT_OF_BOUNDS(541, false, "系统错误,数组越界!"),
+    SYSTEM_ARITHMETIC_BY_ZERO(542, false, "系统错误,无法除零!"),
+    SYSTEM_NULL_POINTER(543, false, "系统错误,空指针!"),
+    SYSTEM_NUMBER_FORMAT(544, false, "系统错误,数字转换异常!"),
+    SYSTEM_PARSE(545, false, "系统错误,解析异常!"),
+    SYSTEM_IO(546, false, "系统错误,IO输入输出异常!"),
+    SYSTEM_FILE_NOT_FOUND(547, false, "系统错误,文件未找到!"),
+    SYSTEM_CLASS_CAST(548, false, "系统错误,类型强制转换错误!"),
+    SYSTEM_PARSER_ERROR(549, false, "系统错误,解析出错!"),
+    SYSTEM_DATE_PARSER_ERROR(550, false, "系统错误,日期解析出错!"),
+    SYSTEM_ERROR_GLOBAL(551, false, "系统繁忙,请稍后再试!"),
+    SYSTEM_ERROR_ZUUL(552, false, "请求系统过于繁忙,请稍后再试!"),
+    SYSTEM_REQUEST_METHOD_ERROR(553, false, "请求类型错误"),
+    SYSTEM_MYSQL_TIMEOUT_ERROR(554, false, "Mysql连接超时"),
+    SYSTEM_MONGO_TIMEOUT_ERROR(555, false, "Mongo连接超时"),
+    SYSTEM_PHONE_ERROR(556,false,"手机号格式错误"),
+    SYSTEM_SEND_PHONE_ERROR(557,false,"发送验证码失败"),
+    SYSTEM_TOKEN_ERROR(558,false,"token为空"),
+    SYSTEM_LOGIN_ERROR(559,false,"无效token"),
+    PARAM_ERROR(560, false, "参数不能为空!"),
+    GZH_ERROR(561, false, "设置失败,请先关联公众号!"),
+    EXISTS(999,false,"已存在");
+
+    // 响应业务状态
+    private Integer status;
+    // 调用是否成功
+    private Boolean success;
+    // 响应消息,可以为成功或者失败的消息
+    private String msg;
+
+    ResponseStatusEnum(Integer status, Boolean success, String msg) {
+        this.status = status;
+        this.success = success;
+        this.msg = msg;
+    }
+
+    public Integer status() {
+        return status;
+    }
+    public Boolean success() {
+        return success;
+    }
+    public String msg() {
+        return msg;
+    }
+
+    @Override
+    public Integer getStatus() {
+        return status;
+    }
+
+    @Override
+    public Boolean getSuccess() {
+        return success;
+    }
+
+    @Override
+    public String getMsg() {
+        return msg;
+    }
+
+
+}

+ 23 - 0
wanzai/src/main/java/com/template/common/utils/AccessToken.java

@@ -0,0 +1,23 @@
+package com.template.common.utils;
+
+public class AccessToken {
+	private String access_token;// 网页获取用户信息凭证
+	private String expires_in;// 有效时间
+
+	public String getAccess_token() {
+		return access_token;
+	}
+
+	public void setAccess_token(String access_token) {
+		this.access_token = access_token;
+	}
+
+	public String getExpires_in() {
+		return expires_in;
+	}
+
+	public void setExpires_in(String expires_in) {
+		this.expires_in = expires_in;
+	}
+
+}

+ 85 - 0
wanzai/src/main/java/com/template/common/utils/AesTestOne.java

@@ -0,0 +1,85 @@
+package com.template.common.utils;
+
+import com.template.config.ControlConfig;
+import org.apache.commons.codec.binary.Base64;
+
+import javax.annotation.Resource;
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * @Author: binguo
+ * @Date: 2024/1/5 星期五 14:26
+ * @Description: com.template.common.utils
+ * @Version: 1.0
+ */
+public class AesTestOne {
+
+    /**
+     * AES 对称加密(RSA非对称加密)
+     * CBC 有向量 (ECB 无向量)
+     * PKCS5Padding 填充模式(NoPadding 无填充)
+     */
+    private static final String ALG_AES_CBC_PKCS5 = "AES/CBC/PKCS5Padding";
+
+    private static final String ALGORITHM = "AES";
+
+    private static final Charset UTF8 = StandardCharsets.UTF_8;
+
+    //private static String aesKey = "61afd794ed3244e995c5e894e5788193";  // 指定好的秘钥,非Base64和16进制
+
+    private static String aesIv = "activevector4api";   // 偏移量
+
+    private static SecretKeySpec skeySpec;
+
+    private static IvParameterSpec iv;
+
+    /**
+     * 解密方法
+     * @param cipherStr Base64编码的加密字符串
+     * @return 解密后的字符串(UTF8编码)
+     * @throws Exception 异常
+     */
+    public static String decrypt(String cipherStr, String appSecret) throws Exception{
+        // step 1 获得一个密码器
+        Cipher cipher = Cipher.getInstance(ALG_AES_CBC_PKCS5);
+        // step 2 初始化密码器,指定是加密还是解密(Cipher.DECRYPT_MODE 解密; Cipher.ENCRYPT_MODE 加密)
+        // 加密时使用的盐来够造秘钥对象
+        skeySpec = new SecretKeySpec(appSecret.getBytes(),ALGORITHM);
+        // 加密时使用的向量,16位字符串
+        iv = new IvParameterSpec(aesIv.getBytes());
+        cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
+        // 对加密报文进行base64解码
+        byte[] encrypted1 = Base64.decodeBase64(cipherStr);
+        // 解密后的报文数组
+        byte[] original = cipher.doFinal(encrypted1);
+        // 输出utf8编码的字符串,输出字符串需要指定编码格式
+        return new String(original, UTF8);
+    }
+
+    /**
+     * 加密
+     * @param plainText 明文
+     * @return Base64编码的密文
+     * @throws Exception  加密异常
+     */
+    public static String encrypt(String plainText, String appSecret) throws Exception{
+        Cipher cipher = Cipher.getInstance(ALG_AES_CBC_PKCS5);
+        skeySpec = new SecretKeySpec(appSecret.getBytes(),ALGORITHM);
+        iv = new IvParameterSpec(aesIv.getBytes());
+        cipher.init(Cipher.ENCRYPT_MODE, skeySpec,iv);
+        // 这里的编码格式需要与解密编码一致
+        byte [] encryptText = cipher.doFinal(plainText.getBytes(UTF8));
+        return Base64.encodeBase64String(encryptText);
+    }
+
+    public static void main(String[] args) throws Exception {
+        // URL解码
+        System.out.println("");
+    }
+}

+ 165 - 0
wanzai/src/main/java/com/template/common/utils/AesUtil.java

@@ -0,0 +1,165 @@
+package com.template.common.utils;
+
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.util.UUID;
+
+/**
+ * <p>Title: AesUtil</p>
+ * <p>Description: AES加密解密</p>
+ * @author fengyong
+ * @date 2018年9月7日
+ */
+public class AesUtil {
+
+	/**
+	 * 秘钥
+	 */
+	public static final String PASSWORD_SECRET_KEY = "EasyRailEveryday";
+	
+	/**
+	 * 初始向量
+	 */
+	public static final String INITIAL_VECTOR = "EasyRailEasyRail";
+	
+    /**
+     * 加密
+     * @param content 需要加密的内容
+     * @param password  加密密码
+     * @param keySize 密钥长度16,24,32(密码长度为24和32时需要将local_policy.jar/US_export_policy.jar两个jar包放到JRE目录%jre%/lib/security下)
+     * @return
+     */
+    public static byte[] encrypt(String content, String password, int keySize){
+    	try {                              
+        	//密钥长度不够用0补齐。
+    		SecretKeySpec key = new SecretKeySpec(ZeroPadding(password.getBytes(Base64Util.DEFAULT_CHARSET), keySize), "AES");
+    		//定义加密算法AES、算法模式ECB、补码方式PKCS5Padding
+            //Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
+    		//定义加密算法AES 算法模式CBC、补码方式PKCS5Padding
+            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
+            //CBC模式模式下初始向量 不足16位用0补齐
+            IvParameterSpec iv = new IvParameterSpec(ZeroPadding(INITIAL_VECTOR.getBytes(Base64Util.DEFAULT_CHARSET),16));
+            byte[] byteContent = content.getBytes();  
+            //初始化加密
+            //ECB
+            //cipher.init(Cipher.ENCRYPT_MODE, key);
+            //CBC 
+			cipher.init(Cipher.ENCRYPT_MODE, key,iv);
+            byte[] result = cipher.doFinal(byteContent);
+            return result; 
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        } catch (NoSuchPaddingException e) {
+            e.printStackTrace();
+        } catch (InvalidKeyException e) {
+            e.printStackTrace();
+        } catch (IllegalBlockSizeException e) {
+            e.printStackTrace();
+        } catch (BadPaddingException e) {
+            e.printStackTrace();
+        } catch (InvalidAlgorithmParameterException e) {
+        	e.printStackTrace();
+        } catch (Exception e) {
+        	e.printStackTrace();
+        }
+        return null;
+    }
+    
+    /**解密
+     * @param content  待解密内容
+     * @param password 解密密钥
+     * @param keySize 密钥长度16,24,32(密码长度为24和32时需要将local_policy.jar/US_export_policy.jar两个jar包放到JRE目录%jre%/lib/security下)
+     * @return
+     */
+    public static String decrypt(byte[] content, String password, int keySize) {
+        try { 
+        	//密钥长度不够用0补齐。
+    		SecretKeySpec key = new SecretKeySpec(ZeroPadding(password.getBytes(), keySize), "AES");
+    		//定义加密算法AES、算法模式ECB、补码方式PKCS5Padding
+            //Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
+    		//定义加密算法AES 算法模式CBC、补码方式PKCS5Padding
+            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
+            //CBC模式模式下初始向量 不足16位用0补齐
+            IvParameterSpec iv = new IvParameterSpec(ZeroPadding(INITIAL_VECTOR.getBytes(Base64Util.DEFAULT_CHARSET),16));
+            // 初始化解密
+            //ECB
+            //cipher.init(Cipher.DECRYPT_MODE, key);
+            //CBC
+            cipher.init(Cipher.DECRYPT_MODE, key,iv);
+            byte[] result = cipher.doFinal(content);
+            return new String(result,Base64Util.DEFAULT_CHARSET); 
+        } catch (NoSuchAlgorithmException e) {
+        	e.printStackTrace();
+        } catch (NoSuchPaddingException e) {
+        	e.printStackTrace();
+        } catch (InvalidKeyException e) {
+        	e.printStackTrace();
+        } catch (IllegalBlockSizeException e) {
+        	e.printStackTrace();
+        } catch (BadPaddingException e) {
+        	e.printStackTrace();
+        } catch (InvalidAlgorithmParameterException e){
+        	e.printStackTrace();
+        } catch (Exception e){
+        	e.printStackTrace();
+        }
+        return null;
+    }
+    
+    /**将二进制转换成16进制
+     * @param buf
+     * @return
+     */
+    public static String parseByte2HexStr(byte buf[]) {
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < buf.length; i++) {
+            String hex = Integer.toHexString(buf[i] & 0xFF);
+            if (hex.length() == 1) {
+                    hex = '0' + hex;
+            }
+            sb.append(hex.toUpperCase());
+        }
+        return sb.toString();
+    }
+    
+    /**将16进制转换为二进制
+     * @param hexStr
+     * @return
+     */
+    public static byte[] parseHexStr2Byte(String hexStr) {
+        if (hexStr.length() < 1){
+        	return null;
+        }
+        byte[] result = new byte[hexStr.length()/2];
+        for (int i = 0;i< hexStr.length()/2; i++) {
+            int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16);
+            int low = Integer.parseInt(hexStr.substring(i*2+1, i*2+2), 16);
+            result[i] = (byte) (high * 16 + low);
+        }
+        return result;
+    }
+    
+    /**
+     * 字符达不到指定长度补0
+     * @param in 字符数组
+     * @param blockSize 长度
+     * @return
+     */
+    public static byte[] ZeroPadding(byte[] in,Integer blockSize){
+    	Integer copyLen = in.length;
+    	if (copyLen > blockSize) {
+			copyLen = blockSize;
+		}
+    	byte[] out = new byte[blockSize];
+    	System.arraycopy(in, 0, out, 0, copyLen);
+    	return out;
+    }
+
+}

+ 199 - 0
wanzai/src/main/java/com/template/common/utils/AesUtils.java

@@ -0,0 +1,199 @@
+package com.template.common.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import org.bouncycastle.util.encoders.Base64;
+
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.spec.SecretKeySpec;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * @Author: liujun
+ * @Description: Aes 加解密算法
+ * @Date Create in 上午 9:38$ 2017/12/26 0026$
+ * @Modify By:
+ */
+@Slf4j
+public class AesUtils {
+    private static String password = "52D04DC20036DBD8";
+    /**
+     * @Author liujun
+     * @Description:
+     * @params: * @param content 需要加密的内容
+     * @param password  加密密码
+     * @Date 上午 9:41 2017/12/26 0026
+     */
+    public static String encrypt(String content) {
+
+        if(password.length()<16) {
+            password = password + "0000000000000000".substring(0, 16-password.length());
+        }
+        else if(password.length()>16) {
+            password = password.substring(0, 16);
+        }
+
+        return bytes2HexString(encryptAES(content.getBytes(), password.getBytes()));
+    }
+
+
+    /**
+     * @Author liujun
+     * @Description:
+     * @params: * @param content 待解密内容
+     * @param password 解密密钥
+     * @Date 上午 9:40 2017/12/26 0026
+     */
+    public static String decrypt(String content) {
+        if(password.length()<16) {
+            password = password + "0000000000000000".substring(0, 16-password.length());
+        }
+        else if(password.length()>16) {
+            password = password.substring(0, 16);
+        }
+
+        return new String(decryptAES(hexString2Bytes(content), password.getBytes()));
+    }
+
+    /**
+     * AES 加密
+     *
+     * @param data 明文
+     * @param key  16、24、32 字节秘钥
+     * @return 密文
+     */
+    public static byte[] encryptAES(final byte[] data, final byte[] key) {
+
+        try {
+            SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
+            Cipher cipher = Cipher.getInstance("AES");// 创建密码器
+            byte[] byteContent = data;
+            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);// 初始化
+            byte[] result = cipher.doFinal(byteContent);
+            return result; // 加密
+        } catch (NoSuchAlgorithmException e) {
+            log.error(e.getMessage(),e);
+        } catch (NoSuchPaddingException e) {
+            log.error(e.getMessage(),e);
+        } catch (InvalidKeyException e) {
+            log.error(e.getMessage(),e);
+        } catch (IllegalBlockSizeException e) {
+            log.error(e.getMessage(),e);
+        } catch (BadPaddingException e) {
+            log.error(e.getMessage(),e);
+        } catch (Exception e) {
+            log.error(e.getMessage(),e);
+        }
+        return null;
+    }
+
+    /**
+     * AES 解密
+     *
+     * @param data 密文
+     * @param key  16、24、32 字节秘钥
+     * @return 明文
+     */
+    public static byte[] decryptAES(final byte[] data, final byte[] key) {
+
+        try {
+            SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
+            Cipher cipher = Cipher.getInstance("AES");// 创建密码器
+            cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);// 初始化
+            byte[] result = cipher.doFinal(data);
+            return result; // 加密
+        } catch (NoSuchAlgorithmException e) {
+            log.error(e.getMessage(),e);
+        } catch (NoSuchPaddingException e) {
+            log.error(e.getMessage(),e);
+        } catch (InvalidKeyException e) {
+            log.error(e.getMessage(),e);
+        } catch (IllegalBlockSizeException e) {
+            log.error(e.getMessage(),e);
+        } catch (BadPaddingException e) {
+            log.error(e.getMessage(),e);
+        } catch (Exception e) {
+            log.error(e.getMessage(),e);
+        }
+        return null;
+    }
+
+    public static String bytes2HexString(final byte[] bytes) {
+        if (bytes == null) return null;
+        int len = bytes.length;
+        if (len <= 0) return null;
+        char[] ret = new char[len << 1];
+        for (int i = 0, j = 0; i < len; i++) {
+            ret[j++] = hexDigits[bytes[i] >>> 4 & 0x0f];
+            ret[j++] = hexDigits[bytes[i] & 0x0f];
+        }
+        return new String(ret);
+    }
+
+    private static final char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
+
+    public static byte[] hexString2Bytes(String hexString) {
+        if (isSpace(hexString)) return null;
+        int len = hexString.length();
+        if (len % 2 != 0) {
+            hexString = "0" + hexString;
+            len = len + 1;
+        }
+        char[] hexBytes = hexString.toUpperCase().toCharArray();
+        byte[] ret = new byte[len >> 1];
+        for (int i = 0; i < len; i += 2) {
+            ret[i >> 1] = (byte) (hex2Dec(hexBytes[i]) << 4 | hex2Dec(hexBytes[i + 1]));
+        }
+        return ret;
+    }
+
+    private static int hex2Dec(final char hexChar) {
+        if (hexChar >= '0' && hexChar <= '9') {
+            return hexChar - '0';
+        } else if (hexChar >= 'A' && hexChar <= 'F') {
+            return hexChar - 'A' + 10;
+        } else {
+            throw new IllegalArgumentException();
+        }
+    }
+
+    public static byte[] base64Encode(final byte[] input) {
+        return Base64.encode(input);
+    }
+
+    public static byte[] base64Decode(final byte[] input) {
+
+        return Base64.decode(input);
+    }
+
+    private static boolean isSpace(final String s) {
+        if (s == null) return true;
+        for (int i = 0, len = s.length(); i < len; ++i) {
+            if (!Character.isWhitespace(s.charAt(i))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    public static void main(String[] args) {
+        String s="{\n" +
+                "  \"categoryId\": \"72cf28a8789643bbbbb62d08ee91f17e\",\n" +
+                "     \"luid\": \"80A036D93CFB\",\n" +
+                "     \"type\":\"4\",\n" +
+                "     \"userName\":\"13097286670\",\n" +
+                "     \"startTime\":\"1682389484000\",\n" +
+                "     \"endTime\":\"1684981484000\",\n" +
+                "     \"password\":\"A08E87B5E777EBEE2C6EF3262F069D5A\"\n" +
+                "}";
+        //加密
+        String encryptString = AesUtils.encrypt("548903");
+        System.out.println("加密后字符串:"+encryptString);
+        //解密
+        String decryptString = AesUtils.decrypt(encryptString);
+        System.out.println("解密后字符串:"+decryptString);
+    }
+}

+ 47 - 0
wanzai/src/main/java/com/template/common/utils/Base64Util.java

@@ -0,0 +1,47 @@
+package com.template.common.utils;
+
+import org.apache.tomcat.util.codec.binary.Base64;
+
+import java.nio.charset.Charset;
+
+/**
+ * <p>Title: Base64Util</p>
+ * <p>Description: Base64Util工具类 --- 加密和解密</p>
+ * @author fengyong
+ * @date 2018年9月7日
+ */
+public class Base64Util {
+	
+	public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
+	/**
+     * 解密
+     * @param str
+     * @return
+     */
+    public static String decodeStr(String str){
+        if (str == null) {
+			return null;
+		}
+		if (str.length() == 0) {
+			return "";
+		}
+		return new String(Base64.decodeBase64(new String(str).getBytes(DEFAULT_CHARSET)),DEFAULT_CHARSET).trim();
+    }
+
+    /**
+     * 加密
+     * 
+     * @param str
+     * @return
+     */
+    public static String encodeStr(String str){
+        if (str == null) {
+			return null;
+		}
+		if (str.length() == 0) {
+			return "";
+		}
+        return new String(Base64.encodeBase64Chunked(str.getBytes(DEFAULT_CHARSET)),DEFAULT_CHARSET).trim();
+    }
+
+}

+ 53 - 0
wanzai/src/main/java/com/template/common/utils/ClassYear.java

@@ -0,0 +1,53 @@
+package com.template.common.utils;
+
+import java.time.LocalDate;
+import java.time.Year;
+
+public class ClassYear {
+    public static void main(String[] args) {
+        Integer stage = 9; // 替换为你想要获取入学年份的学段
+        int currentYear = Year.now().getValue();
+        // 获取当前年份
+        LocalDate currentDate = LocalDate.now();
+        // 获取当前日期
+        int admissionYear = getAdmissionYear(stage, currentYear, currentDate);
+        if (admissionYear != -1) {
+            System.out.println("入学年份:" + admissionYear);
+        } else {
+            System.out.println("无法获取入学年份");
+        }
+    }
+
+    public static int getAdmissionYear(Integer stage, int currentYear, LocalDate currentDate) {
+        int admissionYear = -1;
+        switch (stage) {
+            //初一
+            case 7:
+                if(currentDate.getMonthValue() < 9){
+                    admissionYear = currentYear - 1;
+                }else{
+                    admissionYear = currentYear;
+                }
+                break;
+            //初二
+            case 8:
+                if(currentDate.getMonthValue() < 9){
+                    admissionYear = currentYear - 2;
+                }else{
+                    admissionYear = currentYear;
+                }
+                break;
+            //初三
+            case 9:
+                if (currentDate.getMonthValue() < 9) {
+                    admissionYear = currentYear - 3;
+                } else {
+                    admissionYear = currentYear;
+                }
+                break;
+            default:
+                break;
+        }
+        return admissionYear;
+    }
+}

+ 254 - 0
wanzai/src/main/java/com/template/common/utils/CommonUtil.java

@@ -0,0 +1,254 @@
+package com.template.common.utils;
+
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.interfaces.Claim;
+import com.auth0.jwt.interfaces.DecodedJWT;
+import com.template.model.pojo.RepairAdmin;
+import com.template.model.pojo.SmartDataSourceLog;
+import com.template.model.result.CommonResult;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.servlet.http.HttpServletRequest;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.security.MessageDigest;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 公共工具类
+ **/
+@Slf4j
+public class CommonUtil {
+    /**
+     * 检查字符串是否符合正则表达式
+     */
+    public static boolean checkStrByRegx(String regex, String str) {
+        //使用Pattern类的compile()方法编译正则表达式
+        Pattern pattern = Pattern.compile(regex);
+        //使用Matcher类的matcher()方法将正则表达式和字符串进行匹配
+        Matcher matcher = pattern.matcher(str);
+        //返回匹配结果
+        return matcher.matches();
+    }
+
+    /**
+     * 检测客户端参数
+     *
+     * @param code   状态码
+     * @param object 对象
+     * @return 返回类型
+     */
+    public static Map<String, Object> getReturnMap(String code, Object object) {
+        Map<String, Object> returnMap = new HashMap<>();
+        returnMap.put("code", code);
+        returnMap.put("msg", object);
+        return returnMap;
+    }
+
+    /**
+     * 生成日志对象
+     *
+     * @param str                字符串
+     * @param httpServletRequest 请求对象
+     * @return 返回对象
+     */
+    public static SmartDataSourceLog generateLog(String str, HttpServletRequest httpServletRequest) {
+        String serverIp = null;
+        try {
+            serverIp = InetAddress.getLocalHost().getHostAddress();
+        } catch (UnknownHostException e) {
+            throw new RuntimeException(e);
+        }
+        String clientIp = httpServletRequest.getRemoteAddr();
+        String token = httpServletRequest.getHeader("Authorization");
+        String account;
+        if (token != null) {
+            Map<String, Claim> map = JWT.decode(token).getClaims();
+            account = map.get("account").asString();
+        } else {
+            account = "";
+        }
+
+        String[] splitArr = str.split("\\|");
+
+        SmartDataSourceLog smartDataSourceLog = new SmartDataSourceLog();
+        smartDataSourceLog.setLogActionName(splitArr[0]);
+        smartDataSourceLog.setLogActionHost(serverIp);
+        smartDataSourceLog.setLogActionModule(splitArr[1]);
+        smartDataSourceLog.setLogActionBusiness(splitArr[2]);
+        smartDataSourceLog.setLogActionPeople(account);
+        smartDataSourceLog.setLogActionRemote(clientIp);
+        smartDataSourceLog.setLogActionClass(splitArr[3]);
+        return smartDataSourceLog;
+    }
+
+    public static String getNumberFromString(String string) {
+        Pattern pattern = Pattern.compile("\\d+");
+        Matcher matcher = pattern.matcher(string);
+        if (matcher.find()) {
+            return matcher.group();
+        }
+        return null;
+    }
+
+    /**
+     * 获取ip
+     *
+     * @param request
+     * @return
+     */
+    public static String getIpAddr(HttpServletRequest request) {
+        String ipAddress = null;
+        try {
+            ipAddress = request.getHeader("x-forwarded-for");
+            System.out.println("x-forwarded-for=" + ipAddress);
+            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+                ipAddress = request.getHeader("Proxy-Client-IP");
+                System.out.println("Proxy-Client-IP=" + ipAddress);
+            }
+            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+                ipAddress = request.getHeader("WL-Proxy-Client-IP");
+                System.out.println("WL-Proxy-Client-IP=" + ipAddress);
+            }
+            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+                ipAddress = request.getRemoteAddr();
+                System.out.println("getRemoteAddr=" + ipAddress);
+                if (ipAddress.equals("127.0.0.1")) {
+                    // 根据网卡取本机配置的IP
+                    InetAddress inet = null;
+                    try {
+                        inet = InetAddress.getLocalHost();
+                    } catch (UnknownHostException e) {
+                        e.printStackTrace();
+                    }
+                    ipAddress = inet.getHostAddress();
+                    System.out.println("getHostAddress=" + ipAddress);
+                }
+            }
+            // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
+            if (ipAddress != null && ipAddress.length() > 15) {
+                // "***.***.***.***".length()
+                // = 15
+                if (ipAddress.indexOf(",") > 0) {
+                    ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
+                }
+            }
+        } catch (Exception e) {
+            ipAddress = "";
+        }
+        return ipAddress;
+    }
+
+
+    /**
+     * 获取全部请求头
+     *
+     * @param request
+     * @return
+     */
+    public static Map<String, String> getAllRequestHeader(HttpServletRequest request) {
+        Enumeration<String> headerNames = request.getHeaderNames();
+        Map<String, String> map = new HashMap<>();
+        while (headerNames.hasMoreElements()) {
+            String key = headerNames.nextElement();
+            //根据名称获取请求头的值
+            String value = request.getHeader(key);
+            map.put(key, value);
+        }
+
+        return map;
+    }
+
+
+    /**
+     * MD5加密
+     *
+     * @param data
+     * @return
+     */
+    public static String MD5(String data) {
+        try {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            byte[] array = md.digest(data.getBytes("UTF-8"));
+            StringBuilder sb = new StringBuilder();
+            for (byte item : array) {
+                sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3));
+            }
+
+            return sb.toString().toUpperCase();
+        } catch (Exception exception) {
+        }
+        return null;
+    }
+
+
+    /**
+     * 获取验证码随机数
+     *
+     * @param length
+     * @return
+     */
+    public static String getRandomCode(int length) {
+        String sources = "0123456789";
+        Random random = new Random();
+        StringBuilder sb = new StringBuilder();
+        for (int j = 0; j < length; j++) {
+            sb.append(sources.charAt(random.nextInt(9)));
+        }
+        return sb.toString();
+    }
+
+    /**
+     * 获取当前时间戳
+     *
+     * @return
+     */
+    public static long getCurrentTimestamp() {
+        return System.currentTimeMillis();
+    }
+
+    /**
+     * 生成uuid
+     *
+     * @return
+     */
+    public static String generateUUID() {
+        return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32);
+    }
+
+    /**
+     * 获取随机长度的串
+     *
+     * @param length
+     * @return
+     */
+    private static final String ALL_CHAR_NUM = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
+    public static String getStringNumRandom(int length) {
+        //生成随机数字和字母,
+        Random random = new Random();
+        StringBuilder saltString = new StringBuilder(length);
+        for (int i = 1; i <= length; ++i) {
+            saltString.append(ALL_CHAR_NUM.charAt(random.nextInt(ALL_CHAR_NUM.length())));
+        }
+        return saltString.toString();
+    }
+
+    /**
+     * LocalDate 拼接时间转成 LocalDateTime
+     *
+     * @param localDate
+     * @param timeStr   HH:mm:ss
+     * @return
+     */
+    public static LocalDateTime localDateToTime(LocalDate localDate, String timeStr) {
+        LocalTime time = LocalTime.parse(timeStr);
+        return LocalDateTime.of(localDate.getYear(), localDate.getMonth(), localDate.getDayOfMonth(),
+                time.getHour(), time.getMinute(), time.getSecond());
+    }
+}

+ 269 - 0
wanzai/src/main/java/com/template/common/utils/DBUtil.java

@@ -0,0 +1,269 @@
+package com.template.common.utils;
+
+
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class DBUtil {
+    private String url;
+    private String user;
+    private String password;
+    private String driver;
+    private String charset;
+    private String str_link = "?useUnicode=true" +
+            "&useSSL=false" +
+            "&useAffectedRows=true" +
+            "&allowPublicKeyRetrieval=true" +
+            "&allowMultiQueries=true" +
+            "&rewriteBatchedStatements=true" +
+            "&serverTimezone=Asia/Shanghai";
+
+
+    public DBUtil(String url, String user, String password, String driver, String charset) {
+        this.url = url;
+        this.user = user;
+        this.password = password;
+        this.driver = driver;
+        if (charset != null && !charset.equals("")) {
+            this.charset = "&characterEncoding=" + charset;
+        }
+    }
+
+    public Map<String, Object> getConnection() {
+        try {
+            Class.forName(driver);
+            Connection connection = DriverManager.getConnection(url + str_link + charset, user, password);
+            return CommonUtil.getReturnMap("0", connection);
+        } catch (SQLException | ClassNotFoundException e) {
+            return CommonUtil.getReturnMap("1", e.getMessage());
+        }
+    }
+
+    public Map<String, Object> query(Connection conn, String sql) {
+        PreparedStatement stmt = null;
+        ResultSet rs = null;
+        Map<String, Object> map = new HashMap<>();
+        try {
+            stmt = conn.prepareStatement(sql);
+            rs = stmt.executeQuery();
+        } catch (Exception e) {
+            return CommonUtil.getReturnMap("1", e.getMessage());
+        } finally {
+            map.put("rs", rs);
+            map.put("stmt", stmt);
+        }
+
+        return CommonUtil.getReturnMap("0", map);
+    }
+
+    public Map<String, Object> update(String sql) {
+        Connection conn = null;
+        PreparedStatement stmt = null;
+        int count = 0;
+        Map<String, Object> map = new HashMap<>();
+        try {
+            Map<String, Object> map_return = getConnection();
+            if (map_return.get("code") == "0") {
+                return CommonUtil.getReturnMap("1", map_return.get("msg"));
+            }
+            conn = (Connection) map_return.get("msg");
+            stmt = conn.prepareStatement(sql);
+            count = stmt.executeUpdate();
+        } catch (Exception e) {
+            return CommonUtil.getReturnMap("1", e.getMessage());
+        } finally {
+            map.put("count", count);
+            map.put("stmt", stmt);
+            map.put("conn", conn);
+        }
+
+        return CommonUtil.getReturnMap("0", map);
+    }
+
+    public Map<String, Object> update(Connection conn, String sql) {
+        PreparedStatement stmt = null;
+        int count = 0;
+        Map<String, Object> map = new HashMap<>();
+        try {
+            stmt = conn.prepareStatement(sql);
+            count = stmt.executeUpdate();
+        } catch (Exception e) {
+            return CommonUtil.getReturnMap("1", e.getMessage());
+        } finally {
+            map.put("count", count);
+            map.put("stmt", stmt);
+        }
+
+        return CommonUtil.getReturnMap("0", map);
+    }
+
+    public Map<String, Object> getMetaDataByTable(Connection conn, String tableName) {
+        // 获取数据表的列信息
+        ResultSet rs = null;
+        try {
+            DatabaseMetaData dbMetaData = conn.getMetaData();
+            rs = dbMetaData.getColumns(null, null, tableName, null);
+            List<Map<String, Object>> list = new ArrayList<>();
+            int isHavaNext = 0;
+            // 遍历列信息
+            while (true) {
+                if (!rs.next()) {
+                    break;
+                }
+                isHavaNext++;
+                Map<String, Object> tmpMap = new HashMap<>();
+                // 获取列名称
+                String columnName = rs.getString("COLUMN_NAME");
+                // 获取列类型
+                String columnType = rs.getString("TYPE_NAME");
+                // 获取列备注
+                String columnComment = rs.getString("REMARKS");
+                // 获取是否允许为空
+                String isNullable = rs.getString("IS_NULLABLE");
+//                int isNullable = rs.getInt("NULLABLE");
+                // 获取字段的长度
+                int columnSize = rs.getInt("COLUMN_SIZE");
+
+                tmpMap.put("COLUMN_NAME", columnName);
+                tmpMap.put("COLUMN_TYPE", columnType);
+                tmpMap.put("COLUMN_COMMENT", columnComment);
+                tmpMap.put("COLUMN_SIZE", String.valueOf(columnSize));
+                tmpMap.put("IS_NULLABLE", isNullable);
+
+                list.add(tmpMap);
+            }
+            if (isHavaNext > 0) {
+                return CommonUtil.getReturnMap("0", list);
+            } else {
+                return CommonUtil.getReturnMap("1", "没有查询到数据");
+            }
+        } catch (SQLException e) {
+            return CommonUtil.getReturnMap("1", e.getMessage());
+        } finally {
+            this.closeResultSet(rs);
+            this.closeConnection(conn);
+        }
+    }
+
+    public Map<String, Object> getTableMetaData(Connection conn) {
+        try {
+            // 获取数据库元数据
+            DatabaseMetaData metaData = conn.getMetaData();
+
+            // 获取所有表名
+            ResultSet tables = metaData.getTables(null, null, "%", new String[]{"TABLE"});
+            List<String> list = new ArrayList<>();
+            while (tables.next()) {
+                String tableName = tables.getString("TABLE_NAME");
+                String comment = getTableComment(metaData, tableName);
+                System.out.println(tableName + "[" + comment + "]");
+                list.add(tableName + "[" + comment + "]");
+            }
+
+            // 关闭资源
+            tables.close();
+            conn.close();
+            return CommonUtil.getReturnMap("0", list);
+        } catch (SQLException e) {
+            return CommonUtil.getReturnMap("1", e.getMessage());
+        }
+    }
+
+    /**
+     * 获取表的备注
+     *
+     * @param metaData  数据库元数据
+     * @param tableName 表名
+     * @return 表的备注
+     * @throws SQLException
+     */
+    private static String getTableComment(DatabaseMetaData metaData, String tableName) throws SQLException {
+        String comment = null;
+        ResultSet resultSet = metaData.getTables(null, null, tableName, null);
+        if (resultSet.next()) {
+            comment = resultSet.getString("REMARKS");
+        }
+        resultSet.close();
+        return comment;
+    }
+
+    public Map<String, Object> getMetaDataBySql(Connection conn, String sql) {
+        // 执行SELECT语句
+        Statement stmt;
+        ResultSet rs;
+        ResultSetMetaData rsmd;
+        int columnCount;
+        try {
+            stmt = conn.createStatement();
+            rs = stmt.executeQuery(sql);
+            rsmd = rs.getMetaData();
+            // 获取字段数量
+            columnCount = rsmd.getColumnCount();
+        } catch (SQLException e) {
+            return CommonUtil.getReturnMap("1", e.getMessage());
+        }
+
+        List<Map<String, String>> list = new ArrayList<>();
+        // 遍历字段信息
+        for (int i = 1; i <= columnCount; i++) {
+            Map<String, String> tmpMap = new HashMap<>();
+            try {
+                String columnName = rsmd.getColumnName(i);
+                String columnType = rsmd.getColumnTypeName(i);
+                String columnDisplaySize = String.valueOf(rsmd.getColumnDisplaySize(i));
+                String columnComment = rsmd.getColumnLabel(i);
+
+                tmpMap.put("COLUMN_NAME", columnName);
+                tmpMap.put("COLUMN_TYPE", columnType);
+                tmpMap.put("COLUMN_COMMENT", columnComment);
+                tmpMap.put("COLUMN_SIZE", columnDisplaySize);
+
+                list.add(tmpMap);
+            } catch (SQLException e) {
+                return CommonUtil.getReturnMap("1", e.getMessage());
+            } finally {
+                this.closeResultSet(rs);
+                this.closeStatement(stmt);
+                this.closeConnection(conn);
+            }
+        }
+
+        return CommonUtil.getReturnMap("0", list);
+    }
+
+    public void closeResultSet(ResultSet rs) {
+        if (rs != null) {
+            try {
+                rs.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+                System.out.println(e.getMessage());
+            }
+        }
+    }
+
+    public void closeStatement(Statement stmt) {
+        if (stmt != null) {
+            try {
+                stmt.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+                System.out.println(e.getMessage());
+            }
+        }
+    }
+
+    public void closeConnection(Connection conn) {
+        if (conn != null) {
+            try {
+                conn.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+                System.out.println(e.getMessage());
+            }
+        }
+    }
+}

+ 9 - 0
wanzai/src/main/java/com/template/common/utils/DataBliu.java

@@ -0,0 +1,9 @@
+package com.template.common.utils;
+
+public class DataBliu {
+
+    public static double getTwo(double d1){
+        return (double) Math.round(d1 * 100) / 100;
+    }
+
+}

+ 241 - 0
wanzai/src/main/java/com/template/common/utils/DateUtils.java

@@ -0,0 +1,241 @@
+package com.template.common.utils;
+
+import org.springframework.stereotype.Component;
+
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+/**
+ * <p>Title: DateUtils</p>
+ * <p>Description:日期工具类 </p>
+ * 
+ * @author fengyong
+ * @date 2018年9月7日
+ */
+@Component // 加此注解是把此类实例化spring容器中
+public class DateUtils {
+
+	/**
+	 * 默认日期格式
+	 */
+	public static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";
+
+	/**
+	 * 如2018 0901 232211(年月日时分秒)
+	 * 
+	 * @return
+	 */
+	public String yyyyMMddHHmmss() {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+		return sdf.format(Calendar.getInstance().getTime());
+	}
+
+	/**
+	 * 如20180901
+	 * 
+	 * @return
+	 */
+	public static String getYYYYMMdd() {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+		return sdf.format(Calendar.getInstance().getTime());
+	}
+
+	/**
+	 * 如180901
+	 * @return
+	 */
+	public String getYYMMdd() {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
+		return sdf.format(Calendar.getInstance().getTime());
+	}
+
+	/**
+	 * 如201809
+	 * @return
+	 */
+	public String getYYYYMM() {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
+		return sdf.format(Calendar.getInstance().getTime());
+	}
+
+	/**
+	 * 如 2018/02/11
+	 * @return
+	 */
+	public String getQueryEndDate() {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+		return sdf.format(Calendar.getInstance().getTime());
+	}
+
+	/**
+	 * 如 2018/02/11
+	 * @return
+	 */
+	public String getQueryStartDate() {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+		Calendar cal = Calendar.getInstance();
+		cal.add(Calendar.DAY_OF_YEAR, -30);
+		return sdf.format(cal.getTime());
+	}
+
+	/**
+	 * 如 2018/02/11 12:30:00
+	 * @return
+	 */
+	public static String getQueryEndTime() {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		return sdf.format(Calendar.getInstance().getTime());
+	}
+
+	/**
+	 * 如 2018/02/11
+	 * @return
+	 */
+	public String getQueryStartTime() {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		Calendar cal = Calendar.getInstance();
+		cal.add(Calendar.DAY_OF_YEAR, -30);
+		return sdf.format(cal.getTime());
+	}
+
+	public String getQueryTwoAgoDate() {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+		Calendar cal = Calendar.getInstance();
+		cal.add(Calendar.DAY_OF_YEAR, -2);
+		return sdf.format(cal.getTime());
+	}
+
+	/**
+	 * 字符串转换成日期
+	 * 
+	 * @param str 字符串
+	 * @param format 日期格式
+	 * @return 日期
+	 */
+	public static Date str2Date(String str, String format) {
+		if (null == str || "".equals(str)) {
+			return null;
+		}
+		// 如果没有指定字符串转换的格式,则用默认格式进行转换
+		if (null == format || "".equals(format)) {
+			format = DEFAULT_FORMAT;
+		}
+		SimpleDateFormat sdf = new SimpleDateFormat(format);
+		Date date = null;
+		try {
+			date = sdf.parse(str);
+			return date;
+		} catch (ParseException e) {
+		}
+		return null;
+	}
+
+	/**
+	 * @param date 日期
+	 * @param format 日期格式
+	 * @return 字符串
+	 */
+	public static String date2Str(Date date, String format) {
+		if (null == date) {
+			return null;
+		}
+		SimpleDateFormat sdf = new SimpleDateFormat(format);
+		return sdf.format(date);
+	}
+
+	/**
+	 * 时间戳转换为字符串
+	 * @param time
+	 * @return
+	 */
+	public static String timestamp2Str(Timestamp time) {
+		Date date = new Date(time.getTime());
+		return date2Str(date, DEFAULT_FORMAT);
+	}
+
+	/**
+	 * 字符串转换为时间
+	 * @param str
+	 * @return
+	 */
+	public static Timestamp str2Timestamp(String str) {
+		Date date = str2Date(str, DEFAULT_FORMAT);
+		return new Timestamp(date.getTime());
+	}
+
+	/**
+	 * 字符串转换为时间
+	 * @param str
+	 * @return
+	 */
+	public static Timestamp str2Timestamp(String str, String formatStr) {
+		if (null == str) {
+			return null;
+		}
+		Date date = str2Date(str, formatStr);
+		return new Timestamp(date.getTime());
+	}
+
+	/**
+	 * 获取某年第一天日期
+	 * @param year 年份
+	 * @return Date
+	 */
+	public static Date getYearFirst(int year) {
+		Calendar calendar = Calendar.getInstance();
+		calendar.clear();
+		calendar.set(Calendar.YEAR, year);
+		Date currYearFirst = calendar.getTime();
+		return currYearFirst;
+	}
+
+	/**
+	 * 获取某年最后一天日期
+	 * @param year  年份
+	 * @return Date
+	 */
+	public static Date getYearLast(int year) {
+		Calendar calendar = Calendar.getInstance();
+		calendar.clear();
+		calendar.set(Calendar.YEAR, year);
+		calendar.roll(Calendar.DAY_OF_YEAR, -1);
+		Date currYearLast = calendar.getTime();
+
+		return currYearLast;
+	}
+
+	@SuppressWarnings("static-access")
+	public static Date getnextLast(String datetime, int year) {
+		Calendar calendar = new GregorianCalendar();
+		Date date = null;
+		if (datetime.length() > 7) {
+			date = str2Date(datetime, "yyyy-MM-dd");
+		} else {
+			date = str2Date(datetime, "yyyy-MM");
+		}
+		calendar.setTime(date);
+		calendar.add(calendar.YEAR, year);// 把日期往后增加一年.整数往后推,负数往前移动
+		date = calendar.getTime();
+		return date;
+
+	}
+
+	public static String getrightDate(String datetime, int year) {
+		String date = "";
+		String years = datetime.substring(0, 4);
+		String dates = datetime.substring(4, datetime.length());
+		Integer s = new Integer(years) + year;
+		date = s + dates;
+		return date;
+	}
+
+	public static void main(String[] args) {
+		System.out.println(getrightDate("2018-09", 4));
+		System.out.println(date2Str(getnextLast("2018-09", 4), "yyyy-MM"));
+	}
+
+}

+ 75 - 0
wanzai/src/main/java/com/template/common/utils/DingTalkInterface.java

@@ -0,0 +1,75 @@
+package com.template.common.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import com.template.config.CosConfig;
+import com.template.config.DingConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Author: binguo
+ * @Date: 2024/5/8 星期三 9:51
+ * @Description: com.template.common.utils
+ * @Version: 1.0
+ */
+@Component
+public class DingTalkInterface {
+    private static Logger logger = LoggerFactory.getLogger( DingTalkInterface.class);
+
+    @Resource
+    private DingConfig dingConfig;
+
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    //获取accesstoken
+    public String getAccessToken() throws Exception {
+        Map<String, String> headerMap = new HashMap<>();
+        String result = HttpClientDingUtils.sendGet(dingConfig.getBaseurl()+"/gettoken",headerMap,"UTF-8");
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        String status = String.valueOf(jsonObject.get("errcode"));
+        if(!status.equals("0")){
+
+        }
+        String accessToken = String.valueOf(jsonObject.get("access_token"));
+        return accessToken;
+    }
+
+    //获取考勤报表列定义
+    public JSONObject getattcolumns() throws Exception {
+        Map<String, String> headerMap = new HashMap<>();
+        headerMap.put("access_token",this.getAccessToken());
+        logger.info("getattcolumns入参:======="+headerMap + "=====");
+        String result = HttpClientDingUtils.sendPost(dingConfig.getBaseurl()+"/topapi/attendance/getattcolumns",null,headerMap);
+        logger.info("getattcolumns出参:======="+result+"====");
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        String errcode = String.valueOf(jsonObject.get("errcode"));
+
+        return jsonObject;
+    }
+
+    //获取考勤表表列值
+    public JSONObject getcolumnval(String userId,String columId,String startTime,String endTime) throws Exception {
+        Map<String, String> headerMap = new HashMap<>();
+        headerMap.put("access_token",this.getAccessToken());
+        JSONObject json = new JSONObject();
+        json.put("userid", userId);
+        json.put("column_id_list", columId);
+        json.put("from_date", startTime);
+        json.put("to_date", endTime);
+        logger.info("getcolumnval入参:======="+json.toString() + "=====");
+        String result = HttpClientDingUtils.sendPost(dingConfig.getBaseurl()+"/topapi/attendance/getcolumnval",json,headerMap);
+        logger.info("getcolumnval出参:======="+result+"====");
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        String errcode = String.valueOf(jsonObject.get("errcode"));
+
+        return jsonObject;
+    }
+}

+ 0 - 0
wanzai/src/main/java/com/template/common/utils/EncryptUtil.java


Деякі файли не було показано, через те що забагато файлів було змінено