├── .gitignore
├── .idea
├── .gitignore
├── compiler.xml
├── dictionaries
│ └── .xml
├── encodings.xml
├── inspectionProfiles
│ └── Project_Default.xml
├── libraries
│ ├── Maven__ch_qos_logback_logback_classic_1_2_3.xml
│ ├── Maven__ch_qos_logback_logback_core_1_2_3.xml
│ ├── Maven__com_alibaba_fastjson_1_2_75.xml
│ ├── Maven__com_baomidou_mybatis_plus_3_4_2.xml
│ ├── Maven__com_baomidou_mybatis_plus_annotation_3_4_2.xml
│ ├── Maven__com_baomidou_mybatis_plus_boot_starter_3_4_2.xml
│ ├── Maven__com_baomidou_mybatis_plus_core_3_4_2.xml
│ ├── Maven__com_baomidou_mybatis_plus_extension_3_4_2.xml
│ ├── Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_4.xml
│ ├── Maven__com_fasterxml_jackson_core_jackson_core_2_11_4.xml
│ ├── Maven__com_fasterxml_jackson_core_jackson_databind_2_11_4.xml
│ ├── Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_4.xml
│ ├── Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_4.xml
│ ├── Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_4.xml
│ ├── Maven__com_github_jsqlparser_jsqlparser_4_0.xml
│ ├── Maven__com_jayway_jsonpath_json_path_2_4_0.xml
│ ├── Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml
│ ├── Maven__com_zaxxer_HikariCP_3_4_5.xml
│ ├── Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml
│ ├── Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml
│ ├── Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml
│ ├── Maven__mysql_mysql_connector_java_8_0_23.xml
│ ├── Maven__net_bytebuddy_byte_buddy_1_10_20.xml
│ ├── Maven__net_bytebuddy_byte_buddy_agent_1_10_20.xml
│ ├── Maven__net_minidev_accessors_smart_1_2.xml
│ ├── Maven__net_minidev_json_smart_2_3.xml
│ ├── Maven__org_apache_logging_log4j_log4j_api_2_13_3.xml
│ ├── Maven__org_apache_logging_log4j_log4j_to_slf4j_2_13_3.xml
│ ├── Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_43.xml
│ ├── Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_43.xml
│ ├── Maven__org_apiguardian_apiguardian_api_1_1_0.xml
│ ├── Maven__org_assertj_assertj_core_3_18_1.xml
│ ├── Maven__org_attoparser_attoparser_2_0_5_RELEASE.xml
│ ├── Maven__org_glassfish_jakarta_el_3_0_3.xml
│ ├── Maven__org_hamcrest_hamcrest_2_2.xml
│ ├── Maven__org_junit_jupiter_junit_jupiter_5_7_1.xml
│ ├── Maven__org_junit_jupiter_junit_jupiter_api_5_7_1.xml
│ ├── Maven__org_junit_jupiter_junit_jupiter_engine_5_7_1.xml
│ ├── Maven__org_junit_jupiter_junit_jupiter_params_5_7_1.xml
│ ├── Maven__org_junit_platform_junit_platform_commons_1_7_1.xml
│ ├── Maven__org_junit_platform_junit_platform_engine_1_7_1.xml
│ ├── Maven__org_mockito_mockito_core_3_6_28.xml
│ ├── Maven__org_mockito_mockito_junit_jupiter_3_6_28.xml
│ ├── Maven__org_mybatis_mybatis_3_5_6.xml
│ ├── Maven__org_mybatis_mybatis_spring_2_0_5.xml
│ ├── Maven__org_objenesis_objenesis_3_1.xml
│ ├── Maven__org_opentest4j_opentest4j_1_2_0.xml
│ ├── Maven__org_ow2_asm_asm_5_0_4.xml
│ ├── Maven__org_projectlombok_lombok_1_18_18.xml
│ ├── Maven__org_skyscreamer_jsonassert_1_5_0.xml
│ ├── Maven__org_slf4j_jul_to_slf4j_1_7_30.xml
│ ├── Maven__org_slf4j_slf4j_api_1_7_30.xml
│ ├── Maven__org_springframework_boot_spring_boot_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_autoconfigure_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_configuration_processor_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_devtools_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_starter_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_starter_jdbc_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_starter_json_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_starter_logging_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_starter_test_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_starter_tomcat_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_starter_web_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_test_2_4_3.xml
│ ├── Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_4_3.xml
│ ├── Maven__org_springframework_spring_aop_5_3_4.xml
│ ├── Maven__org_springframework_spring_beans_5_3_4.xml
│ ├── Maven__org_springframework_spring_context_5_3_4.xml
│ ├── Maven__org_springframework_spring_core_5_3_4.xml
│ ├── Maven__org_springframework_spring_expression_5_3_4.xml
│ ├── Maven__org_springframework_spring_jcl_5_3_4.xml
│ ├── Maven__org_springframework_spring_jdbc_5_3_4.xml
│ ├── Maven__org_springframework_spring_test_5_3_4.xml
│ ├── Maven__org_springframework_spring_tx_5_3_4.xml
│ ├── Maven__org_springframework_spring_web_5_3_4.xml
│ ├── Maven__org_springframework_spring_webmvc_5_3_4.xml
│ ├── Maven__org_thymeleaf_extras_thymeleaf_extras_java8time_3_0_4_RELEASE.xml
│ ├── Maven__org_thymeleaf_thymeleaf_3_0_12_RELEASE.xml
│ ├── Maven__org_thymeleaf_thymeleaf_spring5_3_0_12_RELEASE.xml
│ ├── Maven__org_unbescape_unbescape_1_1_6_RELEASE.xml
│ ├── Maven__org_xmlunit_xmlunit_core_2_7_0.xml
│ └── Maven__org_yaml_snakeyaml_1_27.xml
├── misc.xml
├── modules.xml
├── uiDesigner.xml
└── vcs.xml
├── README.md
├── pom.xml
├── project-interface.iml
└── src
├── main
├── java
│ └── com
│ │ └── jdk
│ │ └── projectinterface
│ │ ├── ProjectInterfaceApplication.java
│ │ ├── bean
│ │ ├── Admin.java
│ │ ├── Attend.java
│ │ ├── Course.java
│ │ ├── CourseStudent.java
│ │ ├── Leave.java
│ │ ├── Record.java
│ │ ├── Statistics.java
│ │ ├── Student.java
│ │ └── Teacher.java
│ │ ├── common
│ │ ├── ExceptionController.java
│ │ └── ServiceResponse.java
│ │ ├── config
│ │ ├── CORSConfig.java
│ │ └── UploadConfig.java
│ │ ├── controller
│ │ ├── AccountController.java
│ │ ├── AttendController.java
│ │ ├── CourseController.java
│ │ ├── CourseStudentController.java
│ │ ├── ImageController.java
│ │ ├── IndexController.java
│ │ ├── LeaveController.java
│ │ └── RecordController.java
│ │ ├── mapper
│ │ ├── AdminMapper.java
│ │ ├── AttendMapper.java
│ │ ├── CourseMapper.java
│ │ ├── CourseStudentMapper.java
│ │ ├── LeaveMapper.java
│ │ ├── RecordMapper.java
│ │ ├── StudentMapper.java
│ │ └── TeacherMapper.java
│ │ ├── service
│ │ ├── AccountService.java
│ │ ├── AttendService.java
│ │ ├── CourseService.java
│ │ ├── CourseStudentService.java
│ │ ├── LeaveService.java
│ │ └── RecordService.java
│ │ └── utils
│ │ └── Utils.java
└── resources
│ ├── application.yml
│ ├── mapper
│ ├── AttendMapper.xml
│ ├── CourseMapper.xml
│ ├── LeaveMapper.xml
│ ├── RecordMapper.xml
│ └── StudentMapper.xml
│ ├── mybatis
│ └── mybatis-config.xml
│ └── templates
│ └── index.html
├── python
└── face.exe
└── test
└── java
└── com
└── jdk
└── projectinterface
└── ProjectInterfaceApplicationTests.java
/.gitignore:
--------------------------------------------------------------------------------
1 | # Project exclude paths
2 | /target/
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /workspace.xml
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
21 |
22 |
--------------------------------------------------------------------------------
/.idea/dictionaries/.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | admini
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_alibaba_fastjson_1_2_75.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_4_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_4_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_4_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_4_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_4_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_4_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_23.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_20.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_20.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_13_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_13_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_43.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_43.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_assertj_assertj_core_3_18_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_attoparser_attoparser_2_0_5_RELEASE.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_glassfish_jakarta_el_3_0_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_7_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_7_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_7_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_7_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_7_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_7_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_mockito_mockito_core_3_6_28.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_6_28.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_mybatis_mybatis_3_5_6.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_objenesis_objenesis_3_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_projectlombok_lombok_1_18_18.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_spring_aop_5_3_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_spring_beans_5_3_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_spring_context_5_3_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_spring_core_5_3_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_spring_expression_5_3_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_spring_jdbc_5_3_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_spring_test_5_3_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_spring_tx_5_3_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_spring_web_5_3_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_spring_webmvc_5_3_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_thymeleaf_extras_thymeleaf_extras_java8time_3_0_4_RELEASE.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_thymeleaf_thymeleaf_3_0_12_RELEASE.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_thymeleaf_thymeleaf_spring5_3_0_12_RELEASE.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_unbescape_unbescape_1_1_6_RELEASE.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_7_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_yaml_snakeyaml_1_27.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/uiDesigner.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 |
8 | -
9 |
10 |
11 | -
12 |
13 |
14 | -
15 |
16 |
17 | -
18 |
19 |
20 |
21 |
22 |
23 | -
24 |
25 |
26 |
27 |
28 |
29 | -
30 |
31 |
32 |
33 |
34 |
35 | -
36 |
37 |
38 |
39 |
40 |
41 | -
42 |
43 |
44 |
45 |
46 | -
47 |
48 |
49 |
50 |
51 | -
52 |
53 |
54 |
55 |
56 | -
57 |
58 |
59 |
60 |
61 | -
62 |
63 |
64 |
65 |
66 | -
67 |
68 |
69 |
70 |
71 | -
72 |
73 |
74 | -
75 |
76 |
77 |
78 |
79 | -
80 |
81 |
82 |
83 |
84 | -
85 |
86 |
87 |
88 |
89 | -
90 |
91 |
92 |
93 |
94 | -
95 |
96 |
97 |
98 |
99 | -
100 |
101 |
102 | -
103 |
104 |
105 | -
106 |
107 |
108 | -
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | -
117 |
118 |
119 | -
120 |
121 |
122 |
123 |
124 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # project-interface
2 | 毕设项目中的接口项目
3 |
4 | 其中人脸识别的调用在utils.java中,由于face_recognition库打包时一直提示我找不到该模块,所以若想使用该功能请自行创建python项目,导入opencv、dlib、face_recognition,
5 | 所调用的python脚本文件内容地址:https://blog.csdn.net/qq_41563868/article/details/117447552
6 |
7 | 另外数据库使用的是MySQL,代码地址:https://blog.csdn.net/qq_41563868/article/details/117787600
8 |
9 | 在后台搭建完成之后,请修改Android中com.example.project_android.utils包下的ProjectStatic类中的SERVICE_PATH的值为服务端的ip。
10 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | org.springframework.boot
7 | spring-boot-starter-parent
8 | 2.4.3
9 |
10 |
11 | com.jdk
12 | project-interface
13 | 0.0.1-SNAPSHOT
14 | project-interface
15 | Demo project for Spring Boot
16 |
17 | 1.8
18 |
19 |
20 |
21 | org.springframework.boot
22 | spring-boot-starter-thymeleaf
23 |
24 |
25 | org.springframework.boot
26 | spring-boot-starter-web
27 |
28 |
29 |
30 | org.apache.httpcomponents
31 | httpclient
32 | 4.5.8
33 |
34 |
35 |
36 | com.baomidou
37 | mybatis-plus-boot-starter
38 | 3.4.2
39 |
40 |
41 |
42 | org.jsoup
43 | jsoup
44 | 1.11.3
45 |
46 |
47 |
48 | com.alibaba
49 | fastjson
50 | 1.2.75
51 |
52 |
53 |
54 | org.springframework.boot
55 | spring-boot-devtools
56 | runtime
57 | true
58 |
59 |
60 | mysql
61 | mysql-connector-java
62 | runtime
63 |
64 |
65 | org.springframework.boot
66 | spring-boot-configuration-processor
67 | true
68 |
69 |
70 | org.projectlombok
71 | lombok
72 | true
73 |
74 |
75 | org.springframework.boot
76 | spring-boot-starter-test
77 | test
78 |
79 |
80 |
81 |
82 |
83 |
84 | org.springframework.boot
85 | spring-boot-maven-plugin
86 |
87 |
88 |
89 | org.projectlombok
90 | lombok
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
--------------------------------------------------------------------------------
/project-interface.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/ProjectInterfaceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | @MapperScan("com.jdk.projectinterface.mapper")
7 | @SpringBootApplication
8 | public class ProjectInterfaceApplication {
9 |
10 | public static void main(String[] args) {
11 | SpringApplication.run(ProjectInterfaceApplication.class, args);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/bean/Admin.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.bean;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableId;
5 | import com.baomidou.mybatisplus.annotation.TableName;
6 | import lombok.Data;
7 | import lombok.NoArgsConstructor;
8 | /**
9 | * 管理员表
10 | */
11 | @Data
12 | @NoArgsConstructor
13 | public class Admin {
14 | @TableId(type = IdType.AUTO)
15 | private Integer adminId;
16 | private String adminAccount;
17 | private String adminPassword;
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/bean/Attend.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.bean;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableField;
5 | import com.baomidou.mybatisplus.annotation.TableId;
6 | import com.fasterxml.jackson.annotation.JsonFormat;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import java.sql.Timestamp;
11 | import java.util.List;
12 |
13 | /**
14 | * 考勤任务表
15 | */
16 | @Data
17 | @NoArgsConstructor
18 | public class Attend {
19 | @TableId(type = IdType.AUTO)
20 | private Integer attendId;
21 | private Integer courseId;
22 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
23 | private Timestamp attendStart;
24 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
25 | private Timestamp attendEnd;
26 | private Double attendLongitude;
27 | private Double attendLatitude;
28 | private String attendLocation;
29 | private Integer attendType;
30 | private String attendGesture;
31 |
32 | @TableField(exist = false)
33 | private List records;
34 |
35 | public Attend(Integer courseId, Timestamp attendStart, Timestamp attendEnd, Double attendLongitude, Double attendLatitude, String attendLocation, Integer attendType) {
36 | this.courseId = courseId;
37 | this.attendStart = attendStart;
38 | this.attendEnd = attendEnd;
39 | this.attendLongitude = attendLongitude;
40 | this.attendLatitude = attendLatitude;
41 | this.attendLocation = attendLocation;
42 | this.attendType = attendType;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/bean/Course.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.bean;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableField;
5 | import com.baomidou.mybatisplus.annotation.TableId;
6 | import com.fasterxml.jackson.annotation.JsonFormat;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import java.sql.Timestamp;
11 |
12 | /**
13 | * 课程表
14 | */
15 | @Data
16 | @NoArgsConstructor
17 | public class Course {
18 | @TableId(type = IdType.AUTO)
19 | private Integer courseId;
20 | private Integer teacherId;
21 | private String courseName;
22 | private String courseAvatar;
23 | private String courseIntroduce;
24 | private String courseCode;
25 |
26 | @TableField(exist = false)
27 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
28 | private Timestamp joinTime;
29 |
30 | //测试连表查询
31 | @TableField(exist = false)
32 | private Teacher teacher;
33 |
34 | public Course(Integer teacherId, String courseName, String courseAvatar, String courseIntroduce) {
35 | this.teacherId = teacherId;
36 | this.courseName = courseName;
37 | this.courseAvatar = courseAvatar;
38 | this.courseIntroduce = courseIntroduce;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/bean/CourseStudent.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.bean;
2 |
3 | import com.baomidou.mybatisplus.annotation.TableField;
4 | import com.fasterxml.jackson.annotation.JsonFormat;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | import java.sql.Timestamp;
9 | import java.util.List;
10 |
11 | /**
12 | * 课程学生统计表
13 | */
14 | @Data
15 | @NoArgsConstructor
16 | public class CourseStudent {
17 | private Integer courseId;
18 | private Integer studentId;
19 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
20 | private Timestamp joinTime;
21 |
22 | @TableField(exist = false)
23 | private Student student;
24 |
25 | public CourseStudent(Integer courseId, Integer studentId) {
26 | this.courseId = courseId;
27 | this.studentId = studentId;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/bean/Leave.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.bean;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableField;
5 | import com.baomidou.mybatisplus.annotation.TableId;
6 | import com.baomidou.mybatisplus.annotation.TableName;
7 | import com.fasterxml.jackson.annotation.JsonFormat;
8 | import lombok.Data;
9 | import lombok.NoArgsConstructor;
10 |
11 | import java.sql.Timestamp;
12 |
13 | /**
14 | * 请假表
15 | */
16 | @Data
17 | @TableName("leave_attend")
18 | @NoArgsConstructor
19 | public class Leave {
20 | @TableId(type = IdType.AUTO)
21 | private Integer leaveId;
22 | private Integer studentId;
23 | private Integer courseId;
24 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
25 | private Timestamp leaveTime;
26 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
27 | private Timestamp backTime;
28 | private String leaveReason;
29 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
30 | private Timestamp approvalTime;
31 | private Integer approvalResult;
32 | private String approvalRemark;
33 |
34 | @TableField(exist = false)
35 | private Student student;
36 |
37 | public Leave(Integer studentId, Integer courseId, Timestamp leaveTime, Timestamp backTime, String leaveReason) {
38 | this.studentId = studentId;
39 | this.courseId = courseId;
40 | this.leaveTime = leaveTime;
41 | this.backTime = backTime;
42 | this.leaveReason = leaveReason;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/bean/Record.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.bean;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableField;
5 | import com.baomidou.mybatisplus.annotation.TableId;
6 | import com.fasterxml.jackson.annotation.JsonFormat;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import java.sql.Timestamp;
11 |
12 | /**
13 | * 考勤记录表
14 | */
15 | @Data
16 | @NoArgsConstructor
17 | public class Record {
18 | private Integer attendId;
19 | private Integer studentId;
20 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
21 | private Timestamp recordTime;
22 | private String recordLocation;
23 | /**
24 | * 0代表未签,1代表失败,2代表成功,3代表请假
25 | */
26 | private Integer recordResult;
27 | private String recordPhoto;
28 |
29 | @TableField(exist = false)
30 | private Student student;
31 | @TableField(exist = false)
32 | private Attend attend;
33 |
34 | public Record(Integer attendId, Integer studentId, Timestamp recordTime, String recordLocation, String recordPhoto) {
35 | this.attendId = attendId;
36 | this.studentId = studentId;
37 | this.recordTime = recordTime;
38 | this.recordLocation = recordLocation;
39 | this.recordPhoto = recordPhoto;
40 | }
41 |
42 | public Record(Integer attendId, Integer studentId, Integer recordResult) {
43 | this.attendId = attendId;
44 | this.studentId = studentId;
45 | this.recordResult = recordResult;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/bean/Statistics.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.bean;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 |
6 | @Data
7 | @AllArgsConstructor
8 | public class Statistics {
9 | private String studentName;
10 | private String studentAccount;
11 | private Integer absentCount;
12 | private Integer failedCount;
13 | private Integer successCount;
14 | private Integer leaveCount;
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/bean/Student.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.bean;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableField;
5 | import com.baomidou.mybatisplus.annotation.TableId;
6 | import lombok.AllArgsConstructor;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import java.util.List;
11 |
12 | /**
13 | * 学生用户表
14 | */
15 | @Data
16 | @NoArgsConstructor
17 | public class Student {
18 | @TableId(type = IdType.AUTO)
19 | private Integer studentId;
20 | private String studentAccount;
21 | private String studentPassword;
22 | private String studentName;
23 | private Boolean studentSex;
24 | private String studentAvatar;
25 | private String studentClass;
26 | private String studentFace;
27 | private String studentPhone;
28 | private String studentEmail;
29 |
30 | @TableField(exist = false)
31 | private List records;
32 | @TableField(exist = false)
33 | private List leaves;
34 | @TableField(exist = false)
35 | private List courseStudents;
36 |
37 | public Student(String studentAccount, String studentPassword, String studentName, Boolean studentSex, String studentAvatar, String studentClass, String studentPhone, String studentEmail) {
38 | this.studentAccount = studentAccount;
39 | this.studentPassword = studentPassword;
40 | this.studentName = studentName;
41 | this.studentSex = studentSex;
42 | this.studentAvatar = studentAvatar;
43 | this.studentClass = studentClass;
44 | this.studentPhone = studentPhone;
45 | this.studentEmail = studentEmail;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/bean/Teacher.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.bean;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableField;
5 | import com.baomidou.mybatisplus.annotation.TableId;
6 | import lombok.AllArgsConstructor;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import java.util.List;
11 |
12 | /**
13 | * 教师用户表
14 | */
15 | @Data
16 | @NoArgsConstructor
17 | public class Teacher {
18 | @TableId(type = IdType.AUTO)
19 | private Integer teacherId;
20 | private Integer adminId;
21 | private String teacherAccount;
22 | private String teacherPassword;
23 | private String teacherName;
24 | private Boolean teacherSex;
25 | private String teacherPhone;
26 | private String teacherEmail;
27 | private String teacherAvatar;
28 |
29 | //连表查询
30 | @TableField(exist = false)
31 | private List courses;
32 |
33 | public Teacher(Integer adminId, String teacherAccount, String teacherPassword, String teacherName, Boolean teacherSex, String teacherPhone, String teacherEmail, String teacherAvatar) {
34 | this.adminId = adminId;
35 | this.teacherAccount = teacherAccount;
36 | this.teacherPassword = teacherPassword;
37 | this.teacherName = teacherName;
38 | this.teacherSex = teacherSex;
39 | this.teacherPhone = teacherPhone;
40 | this.teacherEmail = teacherEmail;
41 | this.teacherAvatar = teacherAvatar;
42 | }
43 | }
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/common/ExceptionController.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.common;
2 |
3 | import org.springframework.web.bind.annotation.ExceptionHandler;
4 | import org.springframework.web.bind.annotation.RestControllerAdvice;
5 |
6 | import java.sql.SQLIntegrityConstraintViolationException;
7 |
8 | /**
9 | * 捕获全局异常
10 | */
11 | @RestControllerAdvice
12 | public class ExceptionController {
13 |
14 | @ExceptionHandler(NullPointerException.class)
15 | public Object NullPointExceptionH(){
16 | return ServiceResponse.createFailResponse("空指针异常");
17 | }
18 |
19 | @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
20 | public Object SQLIntegrityConstraintViolationExceptionH(){
21 | return ServiceResponse.createFailResponse("SQL完整性约束违反异常");
22 | }
23 |
24 | @ExceptionHandler(IllegalArgumentException.class)
25 | public Object illegalArgumentExceptionH(){
26 | return ServiceResponse.createFailResponse("非法参数异常");
27 | }
28 |
29 | @ExceptionHandler(IndexOutOfBoundsException.class)
30 | public Object IndexOutOfBoundsExceptionH(){
31 | return ServiceResponse.createFailResponse("索引越界异常");
32 | }
33 |
34 | @ExceptionHandler(Exception.class)
35 | public Object exceptionH(){
36 | return ServiceResponse.createFailResponse("异常申请");
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/common/ServiceResponse.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.common;
2 |
3 | import com.jdk.projectinterface.utils.Utils;
4 | import lombok.Data;
5 |
6 | import java.io.Serializable;
7 |
8 | @Data
9 | public class ServiceResponse implements Serializable{
10 | private static final int RESPONSE_SUCCESS = 200;
11 | private static final int RESPONSE_EMPTY = 204;
12 | private static final int RESPONSE_FAIL = 401;
13 |
14 | private int code;
15 | private String message;
16 | private T data;
17 |
18 | /**
19 | * 创建一个请求失败的response
20 | * @param msg 请求失败返回的消息
21 | * @return ServiceResponse
22 | */
23 | public static ServiceResponse createFailResponse(String msg){
24 | ServiceResponse response = new ServiceResponse<>();
25 | response.setCode(RESPONSE_FAIL);
26 | response.setMessage(msg);
27 | response.setData(null);
28 | return response;
29 | }
30 |
31 | /**
32 | * 请求成功,但查询结果为空的ServiceResponse
33 | * @param msg 请求为空,返回的消息
34 | * @return ServiceResponse
35 | */
36 | public static ServiceResponse createEmptyResponse(String msg){
37 | ServiceResponse response = new ServiceResponse<>();
38 | response.setCode(RESPONSE_EMPTY);
39 | response.setMessage(msg);
40 | response.setData(null);
41 | return response;
42 | }
43 |
44 | /**
45 | * 请求成功,返回相应data
46 | * @param msg 返回成功的消息
47 | * @param object 成功时的data数据
48 | * @return ServiceResponse
49 | */
50 | @SafeVarargs
51 | public static ServiceResponse createResponse(String msg, T... object){
52 | ServiceResponse response = new ServiceResponse<>();
53 | response.setCode(RESPONSE_SUCCESS);
54 | response.setMessage(msg);
55 | if (object.length < 1){
56 | response.setData(null);
57 | } else {
58 | response.setData(object[0]);
59 | }
60 | return response;
61 | }
62 |
63 | public static ServiceResponse backFailResponse(String msgOnEmpty,String msgOnSuccess,T object){
64 | ServiceResponse response;
65 | if (Utils.isEmpty(object)){
66 | response = ServiceResponse.createEmptyResponse(msgOnEmpty);
67 | return response;
68 | } else {
69 | response = ServiceResponse.createResponse(msgOnSuccess,object);
70 | return response;
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/config/CORSConfig.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.config;
2 |
3 | import org.springframework.context.annotation.Bean;
4 | import org.springframework.context.annotation.Configuration;
5 | import org.springframework.web.servlet.config.annotation.CorsRegistry;
6 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
7 |
8 | @Configuration
9 | public class CORSConfig implements WebMvcConfigurer {
10 |
11 | @Override
12 | public void addCorsMappings(CorsRegistry registry) {
13 | registry.addMapping("/**")
14 | .allowedHeaders("*")
15 | .allowedMethods("*")
16 | .allowedOrigins("*");
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/config/UploadConfig.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.config;
2 |
3 | import org.springframework.context.annotation.Configuration;
4 | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
5 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
6 |
7 | import java.io.File;
8 |
9 | @Configuration
10 | public class UploadConfig implements WebMvcConfigurer {
11 | @Override
12 | public void addResourceHandlers(ResourceHandlerRegistry registry) {
13 | String imagePath = new File("").getAbsolutePath() + "\\src\\main\\resources\\static\\";
14 | registry.addResourceHandler("/image/**").addResourceLocations("file:" + imagePath);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/controller/AccountController.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.controller;
2 |
3 | import com.jdk.projectinterface.bean.Student;
4 | import com.jdk.projectinterface.bean.Teacher;
5 | import com.jdk.projectinterface.common.ServiceResponse;
6 | import com.jdk.projectinterface.service.AccountService;
7 | import com.jdk.projectinterface.utils.Utils;
8 | import org.springframework.beans.factory.annotation.Autowired;
9 | import org.springframework.web.bind.annotation.*;
10 |
11 | @RestController
12 | @RequestMapping("/account")
13 | public class AccountController {
14 | @Autowired
15 | AccountService accountService;
16 |
17 | /**
18 | * 用户登录
19 | * @param type 用户角色
20 | * @param account 账号
21 | * @param password 密码
22 | * @return 登录成功返回用户信息,失败返回code401
23 | */
24 | @GetMapping("/login")
25 | public Object login(@RequestParam("type") Integer type,
26 | @RequestParam("account") String account,
27 | @RequestParam("password") String password){
28 |
29 | return accountService.accountLogin(type, account, password);
30 | }
31 |
32 | /**
33 | * 注销用户
34 | * @param type 被删除用户角色
35 | * @param accountId 被删用户的账户id
36 | * @return 执行删除操作的结果
37 | */
38 | @GetMapping("/deleteAccount")
39 | public Object deleteAccount(
40 | @RequestParam("type") Integer type,
41 | @RequestParam("accountId") Integer accountId
42 | ){
43 | switch (type){
44 | case 1:
45 | /**
46 | * 删除教师用户
47 | */
48 | return accountService.deleteTeacher(accountId);
49 | case 2:
50 | /**
51 | * 删除学生用户
52 | */
53 | return accountService.deleteStudent(accountId);
54 | default:
55 | return ServiceResponse.createFailResponse("操作不允许");
56 | }
57 | }
58 |
59 | /**
60 | * 添加学生和教师的两种方法
61 | */
62 |
63 | @GetMapping("/addTeacher")
64 | public Object addTeacher(
65 | @RequestParam("adminId") Integer adminId,
66 | @RequestParam("account") String account,
67 | @RequestParam("password") String password,
68 | @RequestParam("name") String name,
69 | @RequestParam("sex") Boolean sex,
70 | @RequestParam("phone") String phone,
71 | @RequestParam("email") String email,
72 | @RequestParam("avatar") String avatar
73 | ){
74 | ServiceResponse response;
75 | if (!Utils.isPhone(phone) || !Utils.IsEmail(email)){
76 | response = ServiceResponse.createFailResponse("电话或邮箱填写有误");
77 | } else {
78 | Teacher teacher = new Teacher(adminId,account,password,name,sex,phone,email,avatar);
79 | response = accountService.addTeacher(teacher);
80 | }
81 | return response;
82 | }
83 |
84 | @GetMapping("/addStudent")
85 | public Object addStudent(
86 | @RequestParam("account") String account,
87 | @RequestParam("password") String password,
88 | @RequestParam("name") String name,
89 | @RequestParam("sex") Boolean sex,
90 | @RequestParam("major") String classname,
91 | @RequestParam("phone") String phone,
92 | @RequestParam("email") String email
93 | ){
94 | ServiceResponse response;
95 | String avatar = "/image/avatars/user-default.png";
96 | if (!Utils.isPhone(phone) || !Utils.IsEmail(email)){
97 | response = ServiceResponse.createFailResponse("电话或邮箱填写有误");
98 | } else {
99 | Student student = new Student(account,password,name,sex,avatar,classname,phone,email);
100 | response = accountService.addStudent(student);
101 | }
102 | return response;
103 | }
104 |
105 | /**
106 | * 修改学生和教师的两种方法
107 | */
108 | @GetMapping("/modifyTeacher")
109 | public Object modifyTeacher(
110 | @RequestParam("teacherId") Integer teacherId,
111 | @RequestParam(value = "adminId",required = false) Integer adminId,
112 | @RequestParam(value = "account",required = false) String account,
113 | @RequestParam(value = "password",required = false) String password,
114 | @RequestParam(value = "name",required = false) String name,
115 | @RequestParam(value = "sex",required = false) Boolean sex,
116 | @RequestParam(value = "phone",required = false) String phone,
117 | @RequestParam(value = "email",required = false) String email,
118 | @RequestParam(value = "avatar",required = false) String avatar
119 | ){
120 | ServiceResponse response;
121 | Teacher teacher = new Teacher(adminId,account,password,name,sex,phone,email,avatar);
122 | teacher.setTeacherId(teacherId);
123 | response = accountService.modifyTeacher(teacher);
124 | return response;
125 | }
126 |
127 | @GetMapping("/modifyStudent")
128 | public Object modifyStudent(
129 | @RequestParam("studentId") Integer studentId,
130 | @RequestParam(value = "account",required = false) String account,
131 | @RequestParam(value = "password",required = false) String password,
132 | @RequestParam(value = "name",required = false) String name,
133 | @RequestParam(value = "sex",required = false) Boolean sex,
134 | @RequestParam(value = "avatar",required = false) String avatar,
135 | @RequestParam(value = "major",required = false) String classname,
136 | @RequestParam(value = "face",required = false) String face,
137 | @RequestParam(value = "phone",required = false) String phone,
138 | @RequestParam(value = "email",required = false) String email
139 | ){
140 | ServiceResponse response;
141 | Student student = new Student(account,password,name,sex,avatar,classname,phone,email);
142 | student.setStudentId(studentId);
143 | student.setStudentFace(face);
144 | response = accountService.modifyStudent(student);
145 | return response;
146 | }
147 |
148 | /**
149 | * 查询所有用户账号
150 | */
151 | @GetMapping("/findAccount")
152 | public Object findAccount(@RequestParam("type") Integer type){
153 | switch (type){
154 | case 1:
155 | return accountService.findAllTeacher();
156 | case 2:
157 | return accountService.findAllStudent();
158 | default:
159 | return ServiceResponse.createFailResponse("查询失败");
160 | }
161 | }
162 |
163 | /**
164 | * 通过模糊查询查找用户
165 | * @return 返回是一个数组
166 | */
167 | @GetMapping("/findAccountByColumn")
168 | public Object findAccountByColumn(
169 | @RequestParam("type") Integer type,
170 | @RequestParam("column") String column,
171 | @RequestParam("value") Object value
172 | ){
173 |
174 | switch (type){
175 | case 1:
176 | return accountService.findTeacher(column,value);
177 | case 2:
178 | return accountService.findStudent(column,value);
179 | default:
180 | return ServiceResponse.createFailResponse("查询失败");
181 | }
182 | }
183 |
184 | /**
185 | * 验证账户是否存在
186 | */
187 | @GetMapping("/confirmAccount")
188 | public Object confirmAccount(
189 | @RequestParam("type") Integer type,
190 | @RequestParam("account") String account,
191 | @RequestParam(value = "phone",required = false) String phone
192 | ){
193 | if(phone.isEmpty()) {
194 | return accountService.confirmAccount(type, account);
195 | } else {
196 | return accountService.confirmAccount(type,account,phone);
197 | }
198 | }
199 |
200 | }
201 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/controller/AttendController.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.controller;
2 |
3 | import com.jdk.projectinterface.bean.Attend;
4 | import com.jdk.projectinterface.service.AttendService;
5 | import com.jdk.projectinterface.utils.Utils;
6 | import org.springframework.beans.factory.annotation.Autowired;
7 | import org.springframework.web.bind.annotation.GetMapping;
8 | import org.springframework.web.bind.annotation.RequestMapping;
9 | import org.springframework.web.bind.annotation.RequestParam;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | import java.sql.Timestamp;
13 | import java.util.Map;
14 |
15 |
16 | /**
17 | 考勤任务表
18 | */
19 | @RestController
20 | @RequestMapping("/attend")
21 | public class AttendController {
22 | @Autowired
23 | AttendService attendService;
24 |
25 | @GetMapping("/addAttend")
26 | public Object addAttend(
27 | @RequestParam("courseId") Integer courseId,
28 | @RequestParam("start") Timestamp start,
29 | @RequestParam("end") Timestamp end,
30 | @RequestParam("longitude") Double longitude,
31 | @RequestParam("latitude") Double latitude,
32 | @RequestParam("location") String location,
33 | @RequestParam("type") Integer type,
34 | @RequestParam(value = "gesture",required = false) String gesture
35 | ){
36 | Attend attend = new Attend(courseId,start,end,longitude,latitude,location,type);
37 | if (type == 2){
38 | attend.setAttendGesture(gesture);
39 | }
40 | return attendService.addAttend(attend);
41 | }
42 |
43 | /**
44 | * 修改
45 | */
46 | @GetMapping("/modifyAttend")
47 | public Object modifyAttend(
48 | @RequestParam("attendId") Integer attendId,
49 | @RequestParam(value = "courseId",required = false) Integer courseId,
50 | @RequestParam(value = "start",required = false) Timestamp start,
51 | @RequestParam(value = "end",required = false) Timestamp end,
52 | @RequestParam(value = "longitude",required = false) Double longitude,
53 | @RequestParam(value = "latitude",required = false) Double latitude,
54 | @RequestParam(value = "location",required = false) String location
55 | ){
56 | Attend attend = new Attend();
57 | attend.setAttendId(attendId);
58 | attend.setCourseId(Utils.isEmpty(courseId) ? null : courseId);
59 | attend.setAttendStart(Utils.isEmpty(start) ? null : start);
60 | attend.setAttendEnd(Utils.isEmpty(end) ? null : end);
61 | attend.setAttendLongitude(Utils.isEmpty(longitude) ? null : longitude);
62 | attend.setAttendLatitude(Utils.isEmpty(latitude) ? null : latitude);
63 | attend.setAttendLocation(Utils.isEmpty(location) ? null : location);
64 | return attendService.modifyAttend(attend);
65 | }
66 |
67 | /**
68 | * 查询
69 | */
70 | @GetMapping("/findAttendByColumn")
71 | public Object findAttendByColumn(
72 | @RequestParam("column") String column,
73 | @RequestParam("value") Object value
74 | ){
75 | return attendService.findAttendByColumn(column,value);
76 | }
77 |
78 | @GetMapping("/findAttendByMap")
79 | public Object findAttendByMap(@RequestParam Map map){
80 | return attendService.findAttendByMap(map);
81 | }
82 |
83 | @GetMapping("/findAttendByTime")
84 | public Object findAttendByTime(@RequestParam("courseId") Integer courseId,@RequestParam("time") String time){
85 | return attendService.findAttendByTime(courseId,time);
86 | }
87 |
88 | @GetMapping("/findAttendByCourseId")
89 | public Object findAttendByCourseId(@RequestParam("courseId") Integer courseId){
90 | return attendService.findAttendByCourseId(courseId);
91 | }
92 |
93 | @GetMapping("/findStudentAttend")
94 | public Object findStudentAttend(@RequestParam("courseId") Integer courseId,@RequestParam("joinTime") Timestamp joinTime){
95 | return attendService.findStudentAttend(courseId,joinTime);
96 | }
97 |
98 | @GetMapping("/findStudentAttendByTime")
99 | public Object findStudentAttendByTime(@RequestParam("courseId") Integer courseId,@RequestParam("joinTime") Timestamp joinTime,
100 | @RequestParam("time") String time){
101 | return attendService.findStudentAttendByTime(courseId,joinTime,time);
102 | }
103 |
104 | /**
105 | * 删除
106 | */
107 | @GetMapping("/deleteAttend")
108 | public Object deleteAttend(@RequestParam("attendId") Integer attendId){
109 | return attendService.deleteAttend(attendId);
110 | }
111 |
112 | }
113 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/controller/CourseController.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.controller;
2 |
3 |
4 | import com.jdk.projectinterface.bean.Course;
5 | import com.jdk.projectinterface.common.ServiceResponse;
6 | import com.jdk.projectinterface.service.AccountService;
7 | import com.jdk.projectinterface.service.CourseService;
8 | import com.jdk.projectinterface.service.CourseStudentService;
9 | import org.springframework.beans.factory.annotation.Autowired;
10 | import org.springframework.web.bind.annotation.GetMapping;
11 | import org.springframework.web.bind.annotation.RequestMapping;
12 | import org.springframework.web.bind.annotation.RequestParam;
13 | import org.springframework.web.bind.annotation.RestController;
14 |
15 | import java.util.HashMap;
16 | import java.util.List;
17 | import java.util.Map;
18 |
19 | @RestController
20 | @RequestMapping("/course")
21 | public class CourseController {
22 |
23 | @Autowired
24 | CourseService courseService;
25 |
26 | @Autowired
27 | AccountService accountService;
28 |
29 | @GetMapping("/addCourse")
30 | public Object addCourse(
31 | @RequestParam("teacherId") Integer teacherId,
32 | @RequestParam("name") String name,
33 | @RequestParam("avatar") String avatar,
34 | @RequestParam("introduce") String introduce
35 | ){
36 | Course course = new Course(teacherId,name,avatar,introduce);
37 | Map map = new HashMap<>();
38 | map.put("teacher_id",teacherId);
39 | map.put("course_name",name);
40 | if (courseService.findCourseByMap(map).getData().size() != 0){
41 | return ServiceResponse.createEmptyResponse("创建课程已存在");
42 | }
43 | return courseService.addCourse(course);
44 | }
45 |
46 | /**
47 | * 通过模糊查询课程表
48 | * @return 返回数组
49 | */
50 | @GetMapping("/findCourseByColumn")
51 | public Object findCourseByColumn(
52 | @RequestParam("column") String column,
53 | @RequestParam("value") Object value
54 | ){
55 | return courseService.findCourseByColumn(column,value);
56 | }
57 |
58 | /**
59 | * 通过模糊查询课程表
60 | * @return 返回数组
61 | */
62 | @GetMapping("/findCourseByMap")
63 | public Object findCourseByMap(@RequestParam Map map){
64 | return courseService.findCourseByMap(map);
65 | }
66 |
67 | @GetMapping("/findCourseByStudentId")
68 | public Object findCourseByStudentId(@RequestParam("studentId") Integer studentId){
69 | return courseService.findCourseByStudentId(studentId);
70 | }
71 |
72 | @GetMapping("/findCourseByStudentIdWithName")
73 | public Object findCourseByStudentIdWithName(@RequestParam("studentId") Integer studentId,
74 | @RequestParam("name") String name){
75 | return courseService.findCourseByStudentIdWithName(studentId,name);
76 | }
77 |
78 | @GetMapping("/findCourseByCode")
79 | public Object findCourseByCode(@RequestParam("code") String code){
80 | return courseService.findCourseByCode(code);
81 | }
82 |
83 | @GetMapping("/findCourseByTeacherId")
84 | public Object findCourseByTeacherId(@RequestParam("teacherId") Integer teacherId){
85 | return courseService.findCourseByTeacherId(teacherId);
86 | }
87 |
88 | @GetMapping("/findCourseByTeacherIdWithName")
89 | public Object findCourseByTeacherIdWithName(@RequestParam("teacherId") Integer teacherId,
90 | @RequestParam("name") String name){
91 | return courseService.findCourseByTeacherIdWithName(teacherId,name);
92 | }
93 |
94 | @GetMapping("/findAllCourse")
95 | public Object findAllCourse(){
96 | return courseService.findAllCourse();
97 | }
98 |
99 | /**
100 | * 修改课程,如果修改后的名称在数据库重复,取消修改操作
101 | */
102 | @GetMapping("/modifyCourse")
103 | public Object modifyCourse(
104 | @RequestParam("courseId") Integer courseId,
105 | @RequestParam(value = "courseName",required = false) String courseName,
106 | @RequestParam(value = "courseAvatar",required = false) String courseAvatar,
107 | @RequestParam(value = "courseIntroduce", required = false) String courseIntroduce
108 | ){
109 | Map map = new HashMap<>();
110 | map.put("course_id",courseId);
111 | Course courseOld = courseService.findCourseByMap(map).getData().get(0);
112 | map.clear();
113 | if (courseName != null && !courseName.equals(courseOld.getCourseName())){
114 | map.put("teacher_id",courseOld.getTeacherId());
115 | map.put("course_name",courseName);
116 | if (courseService.findCourseByMap(map).getData().size() != 0){
117 | return ServiceResponse.createEmptyResponse("修改课程内容重复");
118 | }
119 | }
120 | Course course = new Course(courseOld.getTeacherId(), courseName, courseAvatar, courseIntroduce);
121 | course.setCourseId(courseId);
122 | return courseService.modifyCourse(course);
123 | }
124 |
125 | /**
126 | * 删除课程
127 | * @param courseId 课程的id
128 | */
129 | @GetMapping("/deleteCourse")
130 | public Object deleteCourse(
131 | @RequestParam("id") Integer courseId
132 | ){
133 | return courseService.deleteCourse(courseId);
134 | }
135 | }
136 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/controller/CourseStudentController.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.controller;
2 |
3 | import com.jdk.projectinterface.bean.CourseStudent;
4 | import com.jdk.projectinterface.service.CourseStudentService;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.web.bind.annotation.GetMapping;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RequestParam;
9 | import org.springframework.web.bind.annotation.RestController;
10 |
11 | import java.util.Map;
12 |
13 | @RestController
14 | @RequestMapping("/courseStudent")
15 | public class CourseStudentController {
16 | @Autowired
17 | CourseStudentService courseStudentService;
18 |
19 | /**
20 | *添加
21 | */
22 | @GetMapping("/addCourseStudent")
23 | public Object addCourseStudent(
24 | @RequestParam("courseCode") String courseCode,
25 | @RequestParam("studentId") Integer studentId
26 | ){
27 | return courseStudentService.addCourseStudent(courseCode,studentId);
28 | }
29 |
30 | /**
31 | *查询
32 | */
33 | @GetMapping("/findCourseStudentByMap")
34 | public Object findCourseStudent(@RequestParam Map map){
35 | return courseStudentService.findCourseStudentByMap(map);
36 | }
37 |
38 | @GetMapping("/findCourseStudentByColumn")
39 | public Object findCourseStudentByColumn(
40 | @RequestParam("column") String column,
41 | @RequestParam("value") Object value
42 | ){
43 | return courseStudentService.findCourseStudentByColumn(column,value);
44 | }
45 |
46 | /**
47 | * 查找属于某个课程的所有学生
48 | */
49 | @GetMapping("/findAllByCourseId")
50 | public Object findAll(@RequestParam("courseId") Integer courseId){
51 | return courseStudentService.findAllByCourseId(courseId);
52 | }
53 |
54 | /**
55 | *修改
56 | */
57 | @GetMapping("/modifyCourseStudent")
58 | public Object modifyCourseStudent(
59 | @RequestParam("courseId") Integer courseId,
60 | @RequestParam("studentId") Integer studentId
61 | ){
62 | CourseStudent total = new CourseStudent(courseId,studentId);
63 | return courseStudentService.modifyCourseStudent(total);
64 | }
65 |
66 | /**
67 | *删除
68 | */
69 | @GetMapping("/deleteCourseStudent")
70 | public Object deleteCourseStudent(
71 | @RequestParam("courseId") Integer courseId,
72 | @RequestParam("studentId") Integer studentId
73 | ){
74 | return courseStudentService.deleteCourseStudent(courseId,studentId);
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/controller/ImageController.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.controller;
2 |
3 | import com.jdk.projectinterface.common.ServiceResponse;
4 | import com.jdk.projectinterface.utils.Utils;
5 | import org.springframework.stereotype.Controller;
6 | import org.springframework.web.bind.annotation.PostMapping;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RequestParam;
9 | import org.springframework.web.bind.annotation.ResponseBody;
10 | import org.springframework.web.multipart.MultipartFile;
11 |
12 | @Controller
13 | @RequestMapping("/document")
14 | public class ImageController {
15 |
16 | @PostMapping("/saveImage")
17 | @ResponseBody
18 | public Object test(
19 | @RequestParam("photo") MultipartFile photo,
20 | @RequestParam("type") String type,
21 | @RequestParam("id") String id
22 | ){
23 | String s = Utils.saveImage(photo, type, id);
24 | if (s != null){
25 | return ServiceResponse.createResponse(s);
26 | }
27 | return ServiceResponse.createResponse("false");
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/controller/IndexController.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.controller;
2 |
3 | import com.jdk.projectinterface.common.ServiceResponse;
4 | import com.jdk.projectinterface.utils.Utils;
5 | import org.springframework.stereotype.Controller;
6 | import org.springframework.web.bind.annotation.*;
7 | import org.springframework.web.multipart.MultipartFile;
8 |
9 | import javax.servlet.http.HttpServletRequest;
10 |
11 | @Controller
12 | public class IndexController {
13 | @GetMapping({"/","index"})
14 | public String showIndex(){
15 | return "index";
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/controller/LeaveController.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.controller;
2 |
3 | import com.jdk.projectinterface.bean.Course;
4 | import com.jdk.projectinterface.bean.Leave;
5 | import com.jdk.projectinterface.common.ServiceResponse;
6 | import com.jdk.projectinterface.service.CourseService;
7 | import com.jdk.projectinterface.service.LeaveService;
8 | import org.springframework.beans.factory.annotation.Autowired;
9 | import org.springframework.stereotype.Repository;
10 | import org.springframework.web.bind.annotation.GetMapping;
11 | import org.springframework.web.bind.annotation.RequestMapping;
12 | import org.springframework.web.bind.annotation.RequestParam;
13 | import org.springframework.web.bind.annotation.RestController;
14 |
15 | import java.sql.Timestamp;
16 | import java.util.HashMap;
17 | import java.util.Map;
18 |
19 | @RestController
20 | @RequestMapping("/leave")
21 | public class LeaveController {
22 | @Autowired
23 | LeaveService leaveService;
24 |
25 | @Autowired
26 | CourseService courseService;
27 |
28 | /**
29 | * 学生创建请假申请
30 | * result= 0正在审批,1拒绝请假,2批准请假
31 | */
32 | @GetMapping("/addLeave")
33 | public Object addLeave(
34 | @RequestParam("studentId") Integer studentId,
35 | @RequestParam("courseId") Integer courseId,
36 | @RequestParam("leaveTime") String leaveTime,
37 | @RequestParam("backTime") String backTime,
38 | @RequestParam("leaveReason") String leaveReason
39 | ){
40 | Leave leave = new Leave(studentId,courseId, Timestamp.valueOf(leaveTime),Timestamp.valueOf(backTime),leaveReason);
41 | leave.setApprovalResult(0);
42 | return leaveService.addLeave(leave);
43 | }
44 |
45 | /**
46 | * 查看课程中的请假申请
47 | */
48 | @GetMapping("/findLeaveByMap")
49 | public Object findLeaveByMap(@RequestParam Map map){
50 | return leaveService.findLeaveByMap(map);
51 | }
52 |
53 | /**
54 | * 查询所有该课程的请假申请
55 | */
56 | @GetMapping("/findAllLeave")
57 | public Object findAllLeave(@RequestParam("courseId") Integer courseId){
58 | return leaveService.findAllLeave(courseId);
59 | }
60 |
61 | @GetMapping("/findAllLeaveWithStudent")
62 | public Object findAllLeaveWithStudent(){
63 | return leaveService.findAllLeaveWithStudent();
64 | }
65 |
66 | @GetMapping("/findAllLeaveByStudentId")
67 | public Object findAllLeaveByStudentId(@RequestParam("courseId") Integer courseId,
68 | @RequestParam("studentId") Integer studentId){
69 | return leaveService.findAllLeaveByStudentId(courseId,studentId);
70 | }
71 |
72 | @GetMapping("/findLeaveByColumn")
73 | public Object findLeaveByColumn(
74 | @RequestParam("column") String column,
75 | @RequestParam("value") String value
76 | ){
77 | return leaveService.findLeaveByColumn(column,value);
78 | }
79 |
80 | /**
81 | * 教师审批课程中的请假申请
82 | */
83 | @GetMapping("/modifyLeave")
84 | public Object modifyLeave(
85 | @RequestParam("leaveId") Integer leaveId,
86 | @RequestParam("time") String time,
87 | @RequestParam("result") Integer result,
88 | @RequestParam("remark") String remark
89 | ){
90 | Map map = new HashMap<>();
91 | map.put("leave_id",leaveId);
92 | Leave leave = leaveService.findLeaveByMap(map).getData().get(0);
93 | leave.setApprovalRemark(remark);
94 | leave.setApprovalResult(result);
95 | leave.setApprovalTime(Timestamp.valueOf(time));
96 | return leaveService.modifyLeave(leave);
97 | }
98 |
99 | /**
100 | * 学生撤销申请
101 | */
102 | @GetMapping("/deleteLeave")
103 | public Object deleteLeave(@RequestParam("leaveId") Integer leaveId){
104 | Map map = new HashMap<>();
105 | map.put("leave_id",leaveId);
106 | Integer approvalResult = leaveService.findLeaveByMap(map).getData().get(0).getApprovalResult();
107 | if (approvalResult != 0){
108 | return ServiceResponse.createFailResponse("已审批,无法撤销");
109 | }
110 | return leaveService.deleteLeave(leaveId);
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/controller/RecordController.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.controller;
2 |
3 | import com.jdk.projectinterface.bean.Record;
4 | import com.jdk.projectinterface.common.ServiceResponse;
5 | import com.jdk.projectinterface.service.RecordService;
6 | import com.jdk.projectinterface.utils.Utils;
7 | import org.springframework.beans.factory.annotation.Autowired;
8 | import org.springframework.web.bind.annotation.*;
9 | import org.springframework.web.multipart.MultipartFile;
10 |
11 | import javax.servlet.http.HttpServletRequest;
12 | import java.sql.Timestamp;
13 | import java.util.HashMap;
14 | import java.util.List;
15 | import java.util.Map;
16 |
17 | @RestController
18 | @RequestMapping("/record")
19 | public class RecordController {
20 | @Autowired
21 | RecordService recordService;
22 |
23 | /**
24 | * 进行签到操作,如果数据库没有该学生记录,则调用addRecord;若已经存在,则调用modifyRecord进行修改
25 | */
26 | @GetMapping("/doRecord")
27 | public Object doRecord(
28 | @RequestParam("attendId") Integer attendId,
29 | @RequestParam("studentId") Integer studentId,
30 | @RequestParam(value = "time") String time,
31 | @RequestParam(value = "location") String location
32 | ){
33 | /**
34 | * 从数据库查看当前学生的人脸信息位置,并与签到上传的图片进行比对识别,返回true或false
35 | * 先默认始终为真
36 | */
37 | String path2 = "src/main/resources/static/check/" + studentId + "_" + attendId + ".png";
38 | String path1 = "src/main/resources/static/face/" + studentId + ".png";
39 | String path = "/image/check/" + studentId + "_" + attendId + ".png";
40 | Integer result = Utils.doIdentify(path1, path2);
41 | System.out.println("confidence = " + result);
42 | Record record = new Record(attendId,studentId,Timestamp.valueOf(time),location,path);
43 | record.setRecordResult(result);
44 |
45 | return recordService.modifyRecord(record);
46 | }
47 |
48 | @GetMapping("/modifyRecord")
49 | public Object modifyRecord(
50 | @RequestParam("attendId") Integer attendId,
51 | @RequestParam("studentId") Integer studentId,
52 | @RequestParam("result") Integer result,
53 | @RequestParam(value = "time",required = false) Timestamp time,
54 | @RequestParam(value = "location",required = false) String location
55 | ){
56 | Record record = new Record();
57 | record.setAttendId(attendId);
58 | record.setStudentId(studentId);
59 | record.setRecordResult(result);
60 | record.setRecordTime(time);
61 | record.setRecordLocation(location);
62 | return recordService.modifyRecord(record);
63 | }
64 |
65 | /**
66 | * 删除
67 | */
68 | @GetMapping("/deleteRecord")
69 | public Object deleteRecord(
70 | @RequestParam("attendId") Integer attendId,
71 | @RequestParam("studentId") Integer studentId
72 | ){
73 | return recordService.deleteRecord(attendId,studentId);
74 | }
75 |
76 | /**
77 | * 查找
78 | */
79 | @GetMapping("/findRecordByColumn")
80 | public Object findRecordByColumn(String column,Object value){
81 | return recordService.findRecordByColumn(column,value);
82 | }
83 |
84 | @GetMapping("/findAllRecord")
85 | public Object findRecordByColumn(@RequestParam("attendId") Integer attendId){
86 | return recordService.findAllRecord(attendId);
87 | }
88 |
89 | @GetMapping("/findRecordByMap")
90 | public Object findRecordByMap(@RequestParam Map map){
91 | return recordService.findRecordByMap(map);
92 | }
93 |
94 | @GetMapping("/findRecordByTime")
95 | public Object findRecordByTime(@RequestParam("time") String time){
96 | return recordService.findRecordByTime(time);
97 | }
98 |
99 | @GetMapping("/findAllStudentRecord")
100 | public Object findAllStudentRecord(@RequestParam("courseId") Integer courseId){
101 | return recordService.findAllStudentRecord(courseId);
102 | }
103 |
104 | @GetMapping("/findAllRecordWithAttend")
105 | public Object findAllRecordWithAttend(){
106 | return recordService.findAllRecordWithAttend();
107 | }
108 |
109 | }
110 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/mapper/AdminMapper.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.jdk.projectinterface.bean.Admin;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface AdminMapper extends BaseMapper {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/mapper/AttendMapper.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.jdk.projectinterface.bean.Attend;
5 | import org.springframework.stereotype.Repository;
6 |
7 | import java.sql.Timestamp;
8 | import java.util.List;
9 |
10 | @Repository
11 | public interface AttendMapper extends BaseMapper {
12 |
13 | List findNeedLeaveAttend(Integer courseId, Timestamp start, Timestamp end);
14 |
15 | List findStudentAttend(Integer courseId, Timestamp joinTime);
16 |
17 | List findStudentAttendByTime(Integer courseId, Timestamp joinTime, String time);
18 |
19 | List findAttendByTime(Integer courseId, String time);
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/mapper/CourseMapper.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.jdk.projectinterface.bean.Course;
5 | import org.springframework.stereotype.Repository;
6 |
7 | import java.util.List;
8 |
9 | @Repository
10 | public interface CourseMapper extends BaseMapper {
11 |
12 | // 联表查询
13 | List findTeacherAllCourse(Integer teacherId);
14 |
15 | Course findCourseByCode(String code);
16 |
17 | List findAllCourse();
18 |
19 | List findTeacherAllCourseWithName(Integer teacherId, String name);
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/mapper/CourseStudentMapper.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.jdk.projectinterface.bean.CourseStudent;
5 | import com.jdk.projectinterface.bean.Student;
6 | import org.springframework.stereotype.Repository;
7 |
8 | import java.util.List;
9 |
10 | @Repository
11 | public interface CourseStudentMapper extends BaseMapper {
12 | List findStudentByCourseId(Integer courseId);
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/mapper/LeaveMapper.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.jdk.projectinterface.bean.Leave;
5 | import org.springframework.stereotype.Repository;
6 |
7 | import java.sql.Timestamp;
8 | import java.util.List;
9 |
10 | @Repository
11 | public interface LeaveMapper extends BaseMapper {
12 |
13 | List findLeavedStudent(Integer courseId, Timestamp startTime, Timestamp endTime);
14 |
15 | List findAllLeave(Integer courseId);
16 |
17 | List findAllLeaveWithStudent();
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/mapper/RecordMapper.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.jdk.projectinterface.bean.Record;
5 | import org.springframework.stereotype.Repository;
6 |
7 | import java.util.List;
8 |
9 | @Repository
10 | public interface RecordMapper extends BaseMapper {
11 |
12 | List findRecordByTime(String recordTime);
13 |
14 | // 查询某次考勤任务的所以签到记录
15 | List findAllRecord(Integer attendId);
16 |
17 | List findAllRecordWithAttend();
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/mapper/StudentMapper.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.jdk.projectinterface.bean.Student;
5 | import org.springframework.stereotype.Repository;
6 |
7 | import java.util.List;
8 |
9 | @Repository
10 | public interface StudentMapper extends BaseMapper {
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/mapper/TeacherMapper.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.jdk.projectinterface.bean.Teacher;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface TeacherMapper extends BaseMapper {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/service/AccountService.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.service;
2 |
3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 | import com.jdk.projectinterface.bean.Admin;
5 | import com.jdk.projectinterface.bean.Student;
6 | import com.jdk.projectinterface.bean.Teacher;
7 | import com.jdk.projectinterface.common.ServiceResponse;
8 | import com.jdk.projectinterface.mapper.AdminMapper;
9 | import com.jdk.projectinterface.mapper.StudentMapper;
10 | import com.jdk.projectinterface.mapper.TeacherMapper;
11 | import com.jdk.projectinterface.utils.Utils;
12 | import org.springframework.beans.factory.annotation.Autowired;
13 | import org.springframework.stereotype.Service;
14 |
15 | import java.util.ArrayList;
16 | import java.util.List;
17 |
18 | @Service
19 | public class AccountService {
20 | @Autowired
21 | AdminMapper adminMapper;
22 |
23 | @Autowired
24 | TeacherMapper teacherMapper;
25 |
26 | @Autowired
27 | StudentMapper studentMapper;
28 |
29 | /**
30 | * 根据type指定的用户角色查询数据库,进行登录
31 | * @param type 用户角色
32 | * @param username 用户账号
33 | * @param password 用户密码
34 | * @return ServiceResponse
35 | */
36 | public ServiceResponse accountLogin(Integer type, String username, String password){
37 | switch (type){
38 | case 0:
39 | QueryWrapper adminQuery = new QueryWrapper().eq("admin_account",username).eq("admin_password",password);
40 | Admin admin = adminMapper.selectOne(adminQuery);
41 | return ServiceResponse.backFailResponse("账号或密码错误","登陆成功",admin);
42 | case 1:
43 | QueryWrapper teacherQuery = new QueryWrapper().eq("teacher_account",username).eq("teacher_password",password);
44 | Teacher teacher = teacherMapper.selectOne(teacherQuery);
45 | return ServiceResponse.backFailResponse("账号或密码错误","登陆成功",teacher);
46 | case 2:
47 | QueryWrapper studentQuery = new QueryWrapper().eq("student_account",username).eq("student_password",password);
48 | Student student = studentMapper.selectOne(studentQuery);
49 | return ServiceResponse.backFailResponse("账号或密码错误","登陆成功",student);
50 | default:
51 | return ServiceResponse.createFailResponse("查询失败");
52 | }
53 | }
54 |
55 | /**
56 | * 添加教师
57 | * @param teacher 要添加的教师对象
58 | * @return 执行操作返回的ServiceResponse对象
59 | */
60 | public ServiceResponse addTeacher(Teacher teacher){
61 | ServiceResponse response;
62 | QueryWrapper teacherQuery = new QueryWrapper().eq("teacher_account",teacher.getTeacherAccount());
63 | Teacher queryResult = teacherMapper.selectOne(teacherQuery);
64 | if (!Utils.isEmpty(queryResult)){
65 | response = ServiceResponse.createEmptyResponse("该账号已被注册");
66 | } else {
67 | teacherMapper.insert(teacher);
68 | response = ServiceResponse.createResponse("账号注册成功");
69 | }
70 | return response;
71 | }
72 |
73 | /**
74 | * 添加学生用户
75 | * @param student 要添加的学生对象
76 | * @return 执行操作返回的ServiceResponse对象
77 | */
78 | public ServiceResponse addStudent(Student student){
79 | ServiceResponse response;
80 | QueryWrapper studentQueryWrapper = new QueryWrapper().eq("student_account",student.getStudentAccount());
81 | Student queryResult = studentMapper.selectOne(studentQueryWrapper);
82 | if (!Utils.isEmpty(queryResult)){
83 | response = ServiceResponse.createEmptyResponse("该账号已被注册");
84 | } else {
85 | studentMapper.insert(student);
86 | response = ServiceResponse.createResponse("账号注册成功");
87 | }
88 | return response;
89 | }
90 |
91 | /**
92 | *通过id和password判断管理员身份
93 | */
94 | public ServiceResponse findAdminById(Integer adminId, String adminPassword) {
95 | QueryWrapper queryWrapper = new QueryWrapper().eq("admin_id",adminId).eq("admin_password",adminPassword);
96 | Admin admin = adminMapper.selectOne(queryWrapper);
97 | return ServiceResponse.backFailResponse("账号或密码错误","登陆成功",admin);
98 | }
99 |
100 | /**
101 | *修改教师信息
102 | */
103 | public ServiceResponse modifyTeacher(Teacher teacher) {
104 | teacherMapper.updateById(teacher);
105 | return ServiceResponse.createResponse("修改成功");
106 | }
107 |
108 | /**
109 | *修改学生信息
110 | */
111 | public ServiceResponse modifyStudent(Student student) {
112 | studentMapper.updateById(student);
113 | return ServiceResponse.createResponse("修改成功");
114 | }
115 |
116 | /**
117 | *查找所有教师
118 | */
119 | public ServiceResponse> findAllTeacher() {
120 | List teachers = teacherMapper.selectList(null);
121 | return ServiceResponse.createResponse("查询成功",teachers);
122 | }
123 |
124 | /**
125 | *查找所有学生
126 | */
127 | public ServiceResponse> findAllStudent() {
128 | List students = studentMapper.selectList(null);
129 | return ServiceResponse.createResponse("查询成功",students);
130 | }
131 |
132 | /**
133 | *根据column属性的value值,模糊查询教师信息
134 | */
135 | public ServiceResponse> findTeacher(String column,Object value) {
136 | List teachers = teacherMapper.selectList(new QueryWrapper().like(column, value));
137 | return ServiceResponse.createResponse("查询成功",teachers);
138 | }
139 |
140 | /**
141 | *根据column属性的value值,模糊查询学生信息
142 | */
143 | public ServiceResponse> findStudent(String column, Object value) {
144 | List students = studentMapper.selectList(new QueryWrapper().like(column, value));
145 | return ServiceResponse.createResponse("查询成功",students);
146 | }
147 |
148 | /**
149 | *通过教师id删除教师
150 | */
151 | public ServiceResponse deleteTeacher(Integer accountId) {
152 | teacherMapper.deleteById(accountId);
153 | return ServiceResponse.createResponse("删除成功");
154 | }
155 |
156 | /**
157 | * 通过学生id删除学生
158 | */
159 | public ServiceResponse deleteStudent(Integer accountId) {
160 | studentMapper.deleteById(accountId);
161 | return ServiceResponse.createResponse("删除成功");
162 | }
163 |
164 | /**
165 | * 查询某账号是否存在
166 | * 存在code为200,不存在为204
167 | */
168 | public Object confirmAccount(Integer type,String account) {
169 | Integer count;
170 | if (type == 1){
171 | count = teacherMapper.selectCount(new QueryWrapper().eq("teacher_account", account));
172 | } else {
173 | count = studentMapper.selectCount(new QueryWrapper().eq("student_account", account));
174 | }
175 | if (count == 0) {
176 | return ServiceResponse.createEmptyResponse(String.valueOf(count));
177 | } else {
178 | return ServiceResponse.createResponse(String.valueOf(count));
179 | }
180 | }
181 |
182 | public Object confirmAccount(Integer type, String account, String phone) {
183 | List accountTeachers = new ArrayList<>();
184 | List accountStudents = new ArrayList<>();
185 | if (type == 1){
186 | accountTeachers = teacherMapper.selectList(new QueryWrapper().eq("teacher_account", account).eq("teacher_phone",phone));
187 | } else {
188 | accountStudents = studentMapper.selectList(new QueryWrapper().eq("student_account", account).eq("student_phone",phone));
189 | }
190 | if (accountStudents.size() + accountTeachers.size() == 0 ) {
191 | return ServiceResponse.createEmptyResponse("0");
192 | } else if (accountStudents.size() != 0){
193 | return ServiceResponse.createResponse(String.valueOf(accountStudents.get(0).getStudentId()));
194 | } else {
195 | return ServiceResponse.createResponse(String.valueOf(accountTeachers.get(0).getTeacherId()));
196 | }
197 | }
198 | }
199 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/service/AttendService.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.service;
2 |
3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
5 | import com.jdk.projectinterface.bean.Attend;
6 | import com.jdk.projectinterface.bean.CourseStudent;
7 | import com.jdk.projectinterface.bean.Leave;
8 | import com.jdk.projectinterface.bean.Record;
9 | import com.jdk.projectinterface.common.ServiceResponse;
10 | import com.jdk.projectinterface.mapper.AttendMapper;
11 | import com.jdk.projectinterface.mapper.CourseStudentMapper;
12 | import com.jdk.projectinterface.mapper.LeaveMapper;
13 | import com.jdk.projectinterface.mapper.RecordMapper;
14 | import org.springframework.beans.factory.annotation.Autowired;
15 | import org.springframework.stereotype.Service;
16 | import org.springframework.transaction.annotation.Transactional;
17 | import org.springframework.transaction.interceptor.TransactionAspectSupport;
18 |
19 | import java.sql.Timestamp;
20 | import java.util.List;
21 | import java.util.Map;
22 |
23 | @Service
24 | public class AttendService {
25 | @Autowired
26 | AttendMapper attendMapper;
27 |
28 | @Autowired
29 | LeaveMapper leaveMapper;
30 |
31 | @Autowired
32 | RecordMapper recordMapper;
33 |
34 | @Autowired
35 | CourseStudentMapper courseStudentMapper;
36 |
37 | /**
38 | * 添加
39 | */
40 | @Transactional(rollbackFor = Exception.class)
41 | public ServiceResponse addAttend(Attend attend) {
42 | try {
43 | attendMapper.insert(attend);
44 |
45 | List courseStudents = courseStudentMapper.selectList(new QueryWrapper().eq("course_id", attend.getCourseId()));
46 | Record record = new Record();
47 | record.setAttendId(attend.getAttendId());
48 | // 将所有参与考勤学生结果初始化为0
49 | for (CourseStudent courseStudent : courseStudents) {
50 | record.setStudentId(courseStudent.getStudentId());
51 | record.setRecordResult(0);
52 | recordMapper.insert(record);
53 | }
54 | // 再去查看是否有请假学生,在申请请假表时也会查看考勤表
55 | List leavedStudent = leaveMapper.findLeavedStudent(attend.getCourseId(), attend.getAttendStart(), attend.getAttendEnd());
56 | for (Leave leave : leavedStudent) {
57 | record.setStudentId(leave.getStudentId());
58 | record.setRecordResult(3);
59 | recordMapper.update(record,new UpdateWrapper().eq("student_id",record.getStudentId()).eq("attend_id",record.getAttendId()));
60 | }
61 |
62 | return ServiceResponse.createResponse("创建成功");
63 | } catch (Exception e){
64 | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
65 | e.printStackTrace();
66 | return ServiceResponse.createFailResponse("创建错误,请重试");
67 | }
68 | }
69 |
70 | /**
71 | * 修改
72 | */
73 | public ServiceResponse modifyAttend(Attend attend){
74 | attendMapper.updateById(attend);
75 | return ServiceResponse.createResponse("修改成功");
76 | }
77 |
78 | /**
79 | * 查询
80 | */
81 | public ServiceResponse> findAttendByColumn(String column,Object value){
82 | List attends = attendMapper.selectList(new QueryWrapper().like(column, value).orderByDesc("attend_start"));
83 | return ServiceResponse.backFailResponse("查询结果为空","查询成功", attends);
84 | }
85 |
86 | public ServiceResponse> findAttendByMap(Map map){
87 | List attends = attendMapper.selectByMap(map);
88 | return ServiceResponse.backFailResponse("查询结果为空","查询成功", attends);
89 | }
90 |
91 | public ServiceResponse> findAttendByCourseId(Integer courseId){
92 | List attends = attendMapper.selectList(new QueryWrapper().eq("course_id", courseId).orderByDesc("attend_start"));
93 | return ServiceResponse.createResponse("查询成功",attends);
94 | }
95 |
96 | /**
97 | * 删除
98 | */
99 | public ServiceResponse deleteAttend(Integer attendId){
100 | attendMapper.deleteById(attendId);
101 | return ServiceResponse.createResponse("删除成功");
102 | }
103 |
104 | public ServiceResponse> findStudentAttend(Integer courseId, Timestamp joinTime) {
105 | List attends = attendMapper.findStudentAttend(courseId,joinTime);
106 | return ServiceResponse.createResponse("查询成功",attends);
107 | }
108 |
109 | public ServiceResponse> findStudentAttendByTime(Integer courseId, Timestamp joinTime, String time) {
110 | List attends = attendMapper.findStudentAttendByTime(courseId,joinTime,time);
111 | return ServiceResponse.createResponse("查询成功",attends);
112 | }
113 |
114 | public ServiceResponse> findAttendByTime(Integer courseId, String time) {
115 | List attends = attendMapper.findAttendByTime(courseId,time);
116 | return ServiceResponse.createResponse("查询成功",attends);
117 | }
118 | }
119 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/service/CourseService.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.service;
2 |
3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 | import com.jdk.projectinterface.bean.Course;
5 | import com.jdk.projectinterface.bean.CourseStudent;
6 | import com.jdk.projectinterface.common.ServiceResponse;
7 | import com.jdk.projectinterface.mapper.CourseMapper;
8 | import com.jdk.projectinterface.mapper.CourseStudentMapper;
9 | import com.jdk.projectinterface.mapper.TeacherMapper;
10 | import com.jdk.projectinterface.utils.Utils;
11 | import org.springframework.beans.factory.annotation.Autowired;
12 | import org.springframework.stereotype.Service;
13 |
14 | import java.util.ArrayList;
15 | import java.util.List;
16 | import java.util.Map;
17 |
18 | @Service
19 | public class CourseService {
20 | @Autowired
21 | CourseMapper courseMapper;
22 |
23 | @Autowired
24 | CourseStudentMapper courseStudentMapper;
25 |
26 | @Autowired
27 | TeacherMapper teacherMapper;
28 |
29 | public ServiceResponse addCourse(Course course) {
30 | String code;
31 | while (true){
32 | code = String.valueOf((int) ((Math.random() * 9 + 1) * 100000));
33 | Course result = courseMapper.selectOne(new QueryWrapper().eq("course_code", code));
34 | if (Utils.isEmpty(result)) {
35 | break;
36 | }
37 | }
38 | course.setCourseCode(code);
39 | courseMapper.insert(course);
40 | if (course.getCourseId() != null) {
41 | // 修改课程头像名称并重写入数据库
42 | String s = Utils.renameImage(course.getCourseAvatar(), "c" + course.getCourseId());
43 | course.setCourseAvatar(s);
44 | courseMapper.updateById(course);
45 | return ServiceResponse.createResponse("创建成功",code);
46 | }
47 | return ServiceResponse.createFailResponse("添加失败");
48 | }
49 |
50 | /**
51 | * 模糊查询
52 | */
53 | public ServiceResponse> findCourseByColumn(String column, Object value) {
54 | List courses = courseMapper.selectList(new QueryWrapper().like(column, value));
55 | return ServiceResponse.createResponse("查询成功",courses);
56 | }
57 |
58 | /**
59 | * 根据map里的值进行准确查找
60 | */
61 | public ServiceResponse> findCourseByMap(Map map){
62 | List courses = courseMapper.selectByMap(map);
63 | return ServiceResponse.createResponse("查询成功",courses);
64 | }
65 |
66 | public ServiceResponse modifyCourse(Course course) {
67 | courseMapper.updateById(course);
68 | return ServiceResponse.createResponse("修改成功");
69 | }
70 |
71 |
72 | public ServiceResponse deleteCourse(Integer courseId) {
73 | courseMapper.deleteById(courseId);
74 | return ServiceResponse.createResponse("删除成功");
75 | }
76 |
77 | public ServiceResponse findCourseByCode(String code) {
78 | Course course = courseMapper.findCourseByCode(code);
79 | return ServiceResponse.createResponse("查询成功",course);
80 | }
81 |
82 | public ServiceResponse> findCourseByTeacherId(Integer teacherId){
83 | List courses = courseMapper.findTeacherAllCourse(teacherId);
84 | return ServiceResponse.createResponse("查询成功",courses);
85 | }
86 |
87 |
88 |
89 | public ServiceResponse> findCourseByStudentId(Integer studentId) {
90 | List courseIdList = courseStudentMapper.selectList(new QueryWrapper().eq("student_id", studentId));
91 | List courseList = new ArrayList<>();
92 | for (CourseStudent courseStudent : courseIdList) {
93 | Course course = courseMapper.selectById(courseStudent.getCourseId());
94 | course.setTeacher(teacherMapper.selectById(course.getTeacherId()));
95 | course.setJoinTime(courseStudent.getJoinTime());
96 | courseList.add(course);
97 | }
98 | return ServiceResponse.createResponse("查询成功",courseList);
99 | }
100 |
101 | public ServiceResponse> findAllCourse(){
102 | List courses = courseMapper.findAllCourse();
103 | return ServiceResponse.createResponse("查询成功",courses);
104 | }
105 |
106 | public ServiceResponse> findCourseByTeacherIdWithName(Integer teacherId, String name) {
107 | List courses = courseMapper.findTeacherAllCourseWithName(teacherId,name);
108 | return ServiceResponse.createResponse("查询成功",courses);
109 | }
110 |
111 | public ServiceResponse> findCourseByStudentIdWithName(Integer studentId, String name) {
112 | List courseIdList = courseStudentMapper.selectList(new QueryWrapper().eq("student_id", studentId));
113 | List courseList = new ArrayList<>();
114 | for (CourseStudent courseStudent : courseIdList) {
115 | Course course = courseMapper.selectOne(new QueryWrapper().eq("course_id",courseStudent.getCourseId()).like("course_name",name));
116 | if (Utils.isEmpty(course)){
117 | continue;
118 | }
119 | course.setTeacher(teacherMapper.selectById(course.getTeacherId()));
120 | course.setJoinTime(courseStudent.getJoinTime());
121 | courseList.add(course);
122 | }
123 | return ServiceResponse.createResponse("查询成功",courseList);
124 | }
125 | }
126 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/service/CourseStudentService.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.service;
2 |
3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 | import com.jdk.projectinterface.bean.Course;
5 | import com.jdk.projectinterface.bean.CourseStudent;
6 | import com.jdk.projectinterface.bean.Student;
7 | import com.jdk.projectinterface.common.ServiceResponse;
8 | import com.jdk.projectinterface.mapper.CourseStudentMapper;
9 | import com.jdk.projectinterface.mapper.StudentMapper;
10 | import org.springframework.beans.factory.annotation.Autowired;
11 | import org.springframework.stereotype.Service;
12 |
13 | import java.util.ArrayList;
14 | import java.util.List;
15 | import java.util.Map;
16 |
17 | @Service
18 | public class CourseStudentService {
19 | @Autowired
20 | CourseStudentMapper courseStudentMapper;
21 |
22 | @Autowired
23 | CourseService courseService;
24 |
25 | @Autowired
26 | StudentMapper studentMapper;
27 |
28 | /**
29 | *添加
30 | */
31 | public ServiceResponse addCourseStudent(String courseCode, Integer studentId) {
32 | List response = courseService.findCourseByColumn("course_code", courseCode).getData();
33 | if (response.size() == 0){
34 | return ServiceResponse.createEmptyResponse("邀请码不存在");
35 | }
36 | QueryWrapper query = new QueryWrapper().eq("course_id", response.get(0).getCourseId()).eq("student_id", studentId);
37 | Integer count = courseStudentMapper.selectCount(query);
38 | if (count != 0){
39 | return ServiceResponse.createEmptyResponse("已加入该课程");
40 | }
41 |
42 | courseStudentMapper.insert(new CourseStudent(response.get(0).getCourseId(),studentId));
43 | CourseStudent courseStudent = courseStudentMapper.selectOne(query);
44 | return ServiceResponse.createResponse("加入课程成功",courseStudent);
45 | }
46 |
47 | /**
48 | *查询
49 | */
50 | public ServiceResponse> findCourseStudentByMap(Map map){
51 | List totals = courseStudentMapper.selectByMap(map);
52 | return ServiceResponse.createResponse("查询成功",totals);
53 | }
54 |
55 | public ServiceResponse> findCourseStudentByColumn(String column,Object value){
56 | List totals = courseStudentMapper.selectList(new QueryWrapper().like(column,value));
57 | return ServiceResponse.createResponse("查询成功",totals);
58 | }
59 |
60 | /**
61 | *修改
62 | */
63 | public ServiceResponse modifyCourseStudent(CourseStudent total){
64 | courseStudentMapper.update(total, new QueryWrapper().eq("course_id", total.getCourseId()).eq("student_id", total.getStudentId()));
65 | return ServiceResponse.createResponse("修改成功");
66 | }
67 |
68 | /**
69 | *删除
70 | */
71 | public ServiceResponse deleteCourseStudent(Integer courseId,Integer studentId){
72 | courseStudentMapper.delete(new QueryWrapper().eq("course_id", courseId).eq("student_id", studentId));
73 | return ServiceResponse.createResponse("删除成功");
74 | }
75 |
76 | public ServiceResponse> findAllByCourseId(Integer courseId) {
77 | /*List courseStudents = courseStudentMapper.selectList(new QueryWrapper().eq("course_id", courseId));
78 | List students = new ArrayList<>();
79 | for (CourseStudent courseStudent : courseStudents) {
80 | students.add(studentMapper.selectById(courseStudent.getStudentId()));
81 | }*/
82 | List students = courseStudentMapper.findStudentByCourseId(courseId);
83 | return ServiceResponse.createResponse("查询成功",students);
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/service/LeaveService.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.service;
2 |
3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
5 | import com.jdk.projectinterface.bean.Attend;
6 | import com.jdk.projectinterface.bean.Leave;
7 | import com.jdk.projectinterface.bean.Record;
8 | import com.jdk.projectinterface.common.ServiceResponse;
9 | import com.jdk.projectinterface.mapper.AttendMapper;
10 | import com.jdk.projectinterface.mapper.LeaveMapper;
11 | import com.jdk.projectinterface.mapper.RecordMapper;
12 | import org.springframework.beans.factory.annotation.Autowired;
13 | import org.springframework.stereotype.Service;
14 |
15 | import java.util.List;
16 | import java.util.Map;
17 |
18 | @Service
19 | public class LeaveService {
20 | @Autowired
21 | LeaveMapper leaveMapper;
22 |
23 | @Autowired
24 | RecordMapper recordMapper;
25 |
26 | @Autowired
27 | AttendMapper attendMapper;
28 |
29 |
30 | public ServiceResponse addLeave(Leave leave) {
31 | leaveMapper.insert(leave);
32 | return ServiceResponse.createResponse("创建成功");
33 | }
34 |
35 | public ServiceResponse> findLeaveByMap(Map map) {
36 | List leaves = leaveMapper.selectByMap(map);
37 | return ServiceResponse.createResponse("查询成功",leaves);
38 | }
39 |
40 | public ServiceResponse> findLeaveByColumn(String column,Object value) {
41 | List leaves = leaveMapper.selectList(new QueryWrapper().like(column,value));
42 | return ServiceResponse.createResponse("查询成功",leaves);
43 | }
44 |
45 | public ServiceResponse modifyLeave(Leave leave) {
46 | if (leave.getApprovalResult() == 2){
47 | Record record = new Record();
48 | record.setStudentId(leave.getStudentId());
49 | /**
50 | * 首先通过课程id找到该课程下的所有考勤任务
51 | * 再选择考勤时间在请假时间内的部分,获得他们的attendID
52 | * 将这些任务中该生的状态设为请假
53 | */
54 | List needLeaveAttend = attendMapper.findNeedLeaveAttend(leave.getCourseId(), leave.getLeaveTime(), leave.getBackTime());
55 | for (Attend attend : needLeaveAttend) {
56 | record.setAttendId(attend.getAttendId());
57 | record.setRecordResult(3);
58 | recordMapper.update(record,new UpdateWrapper().eq("attend_id",record.getAttendId()).eq("student_id",record.getStudentId()));
59 | }
60 | }
61 | leaveMapper.updateById(leave);
62 | return ServiceResponse.createResponse("审批成功");
63 | }
64 |
65 | public ServiceResponse deleteLeave(Integer leaveId) {
66 | leaveMapper.deleteById(leaveId);
67 | return ServiceResponse.createResponse("删除成功");
68 | }
69 |
70 | public ServiceResponse> findAllLeave(Integer courseId) {
71 | List allLeave = leaveMapper.findAllLeave(courseId);
72 | return ServiceResponse.createResponse("查询成功",allLeave);
73 |
74 | }
75 |
76 | public ServiceResponse> findAllLeaveByStudentId(Integer courseId, Integer studentId) {
77 | List leaves = leaveMapper.selectList(new QueryWrapper().eq("course_id",courseId).eq("student_id", studentId).orderByDesc("leave_time"));
78 | return ServiceResponse.createResponse("查询成功",leaves);
79 | }
80 |
81 | public ServiceResponse> findAllLeaveWithStudent() {
82 | List allLeave = leaveMapper.findAllLeaveWithStudent();
83 | return ServiceResponse.createResponse("查询成功",allLeave);
84 |
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/service/RecordService.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.service;
2 |
3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 | import com.jdk.projectinterface.bean.*;
5 | import com.jdk.projectinterface.common.ServiceResponse;
6 | import com.jdk.projectinterface.mapper.CourseStudentMapper;
7 | import com.jdk.projectinterface.mapper.RecordMapper;
8 | import org.springframework.beans.factory.annotation.Autowired;
9 | import org.springframework.stereotype.Service;
10 |
11 | import java.util.ArrayList;
12 | import java.util.HashMap;
13 | import java.util.List;
14 | import java.util.Map;
15 |
16 | @Service
17 | public class RecordService {
18 | @Autowired
19 | RecordMapper recordMapper;
20 |
21 | @Autowired
22 | AttendService attendService;
23 |
24 | @Autowired
25 | CourseStudentService courseStudentService;
26 |
27 | public ServiceResponse modifyRecord(Record record){
28 | /**
29 | * 在修改之前,先检查其
30 | */
31 | recordMapper.update(record, new QueryWrapper().eq("attend_id", record.getAttendId()).eq("student_id", record.getStudentId()));
32 | String message = record.getRecordResult() == 1 ? "人脸识别未通过" : "签到成功";
33 | return ServiceResponse.createResponse(message);
34 | }
35 |
36 | /**
37 | * 查找
38 | */
39 | public ServiceResponse> findRecordByMap(Map map) {
40 | List records = recordMapper.selectByMap(map);
41 | return ServiceResponse.createResponse("查找成功",records);
42 | }
43 |
44 | // 通过考勤id查询到当前所有该考勤下的数据
45 | public ServiceResponse> findAllRecord(Integer attendId){
46 | List records = recordMapper.findAllRecord(attendId);
47 | return ServiceResponse.createResponse("查找成功",records);
48 | }
49 |
50 | public ServiceResponse> findRecordByColumn(String column,Object value){
51 | List records = recordMapper.selectList(new QueryWrapper().like(column, value));
52 | return ServiceResponse.createResponse("查找成功",records);
53 | }
54 |
55 | /**
56 | * 通过时间戳类型模糊查询
57 | */
58 | public ServiceResponse> findRecordByTime(String value){
59 | List records = recordMapper.findRecordByTime(value);
60 | return ServiceResponse.createResponse("查询成功",records);
61 | }
62 |
63 | /**
64 | * 删除
65 | */
66 | public ServiceResponse deleteRecord(Integer attendId,Integer studentId){
67 | recordMapper.delete(new QueryWrapper().eq("attend_id", attendId).eq("student_id", studentId));
68 | return ServiceResponse.createResponse("删除成功");
69 | }
70 |
71 | /**
72 | * 统计所有学生的考勤记录
73 | */
74 | public ServiceResponse> findAllStudentRecord(Integer courseId) {
75 | List allStudent = courseStudentService.findAllByCourseId(courseId).getData();
76 | List attends = attendService.findAttendByCourseId(courseId).getData();
77 | QueryWrapper wrapper = new QueryWrapper<>();
78 | List list = new ArrayList<>();
79 | for (CourseStudent courseStudent : allStudent) {
80 | Student student = courseStudent.getStudent();
81 | Integer absentNum = 0;
82 | Integer failNum = 0;
83 | Integer successNum = 0;
84 | Integer leaveNum = 0;
85 | for (Attend attend : attends) {
86 | absentNum = absentNum + recordMapper.selectCount(wrapper.eq("attend_id",attend.getAttendId()).eq("student_id", student.getStudentId()).eq("record_result", 0));
87 | wrapper.clear();
88 | failNum = failNum + recordMapper.selectCount(wrapper.eq("attend_id",attend.getAttendId()).eq("student_id", student.getStudentId()).eq("record_result", 1));
89 | wrapper.clear();
90 | successNum = successNum + recordMapper.selectCount(wrapper.eq("attend_id",attend.getAttendId()).eq("student_id", student.getStudentId()).eq("record_result", 2));
91 | wrapper.clear();
92 | leaveNum = leaveNum + recordMapper.selectCount(wrapper.eq("attend_id",attend.getAttendId()).eq("student_id", student.getStudentId()).eq("record_result", 3));
93 | wrapper.clear();
94 | }
95 | list.add(new Statistics(student.getStudentName(),student.getStudentAccount(),absentNum,failNum,successNum,leaveNum));
96 | }
97 | return ServiceResponse.createResponse("查询成功",list);
98 | }
99 |
100 | public ServiceResponse> findAllRecordWithAttend(){
101 | List records = recordMapper.findAllRecordWithAttend();
102 | return ServiceResponse.createResponse("查找成功",records);
103 | }
104 | }
105 |
--------------------------------------------------------------------------------
/src/main/java/com/jdk/projectinterface/utils/Utils.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface.utils;
2 |
3 | import org.springframework.web.multipart.MultipartFile;
4 |
5 | import javax.servlet.http.HttpServletRequest;
6 | import java.io.BufferedReader;
7 | import java.io.File;
8 | import java.io.IOException;
9 | import java.io.InputStreamReader;
10 | import java.util.*;
11 | import java.util.regex.Matcher;
12 | import java.util.regex.Pattern;
13 |
14 | public class Utils {
15 |
16 | /**
17 | * 调用人脸识别脚本并获取识别结果
18 | * @param path1 人脸图片地址
19 | * @param path2 考勤图片地址
20 | * @return 2:成功 1:失败
21 | */
22 | public static Integer doIdentify(String path1,String path2){
23 | StringBuffer sb = new StringBuffer();
24 | try {
25 | String[] args = new String[]{"F:\\Anaconda\\envs\\face\\python.exe","F:/graduation_project/project_face/face.py" , path1 , path2};
26 | Process process = Runtime.getRuntime().exec(args);
27 | process.waitFor();
28 | BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
29 | String line;
30 | while ((line = in.readLine()) != null) {
31 | sb.append(line);
32 | }
33 | in.close();
34 | } catch (IOException | InterruptedException e) {
35 | e.printStackTrace();
36 | }
37 | return Integer.valueOf(String.valueOf(sb));
38 | }
39 |
40 | /**
41 | * 上传图像至服务器
42 | * @param file 上传的图片文件
43 | * @param type 1:老师头像,2:学生头像,3:课程头像,4:人脸信息,5:考勤时的人脸信息
44 | * @param id 编号
45 | * @return 存储的映射路径
46 | */
47 | public static String saveImage(MultipartFile file,String type,String id){
48 | if (file.isEmpty()){
49 | return null;
50 | }
51 | String prefix = "";
52 | String parentPath = "";
53 | switch (type){
54 | case "1":
55 | prefix = "t";
56 | parentPath = "avatars";
57 | break;
58 | case "2":
59 | prefix = "s";
60 | parentPath = "avatars";
61 | break;
62 | case "3":
63 | prefix = "c";
64 | parentPath = "avatars";
65 | break;
66 | case "4":
67 | prefix = "";
68 | parentPath = "face";
69 | break;
70 | case "5":
71 | prefix = "";
72 | parentPath = "check";
73 | break;
74 | default:
75 | break;
76 | }
77 |
78 | String path = "src/main/resources/static/"+ parentPath + "/";
79 | File folder = new File(path);
80 | if (!folder.isDirectory()){
81 | folder.mkdirs();
82 | }
83 | String ext = ".png";
84 | String photoName = prefix + id + ext;
85 | try {
86 | File newFile = new File(folder.getAbsolutePath() + File.separator + photoName);
87 | file.transferTo(newFile);
88 | return "/image/" + parentPath + "/" + photoName;
89 | } catch (IOException e) {
90 | e.printStackTrace();
91 | }
92 | return null;
93 | }
94 |
95 | public static String renameImage(String path,String name){
96 | String realPath = "src/main/resources/static/avatars/";
97 | String virtualPath = path.substring(0,path.lastIndexOf("/") + 1);
98 | String oldName = path.substring(path.lastIndexOf("/") + 1);
99 | String ext = oldName.substring(oldName.lastIndexOf("."));
100 | File file = new File(realPath + oldName);
101 | File file1 = new File(realPath + name + ext);
102 | boolean b = file.renameTo(file1);
103 | return b ? virtualPath + name + ext : null;
104 | }
105 |
106 | /**
107 | * 删除图片
108 | * @param path 图片的路径
109 | */
110 | public static void deleteImage(String path , String parentPath){
111 | String p = "src/main/resources/static/"+ parentPath + path.substring(path.lastIndexOf("/"));
112 | File file = new File(p);
113 | if (!path.isEmpty()){
114 | file.delete();
115 | }
116 | }
117 |
118 | /**
119 | * 判断对象是否为空
120 | * @param o 需要判断的对象
121 | * @return 为空返回true, 不为空返回false
122 | */
123 | public static boolean isEmpty(Object o) {
124 | if (o == null || Objects.isNull(o)) {
125 | return true;
126 | }
127 | if (o instanceof String) {
128 | if ("".equals(o.toString().trim())) {
129 | return true;
130 | }
131 | return "undefined".equals(o.toString().trim());
132 | } else if (o instanceof List) {
133 | return ((List) o).size() == 0;
134 | } else if (o instanceof Map) {
135 | return ((Map) o).size() == 0;
136 | } else if (o instanceof Set) {
137 | return ((Set) o).size() == 0;
138 | } else if (o instanceof Object[]) {
139 | return ((Object[]) o).length == 0;
140 | } else if (o instanceof int[]) {
141 | return ((int[]) o).length == 0;
142 | } else if (o instanceof long[]) {
143 | return ((long[]) o).length == 0;
144 | }
145 | return false;
146 | }
147 |
148 | /**
149 | * 验证手机号码
150 | * @param mobiles
151 | * @return
152 | */
153 | public static boolean isPhone(String mobiles){
154 | boolean flag = false;
155 | try{
156 | String pattern = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
157 | Pattern p = Pattern.compile(pattern);
158 | Matcher m = p.matcher(mobiles);
159 | flag = m.matches();
160 | }catch(Exception e){
161 | e.printStackTrace();
162 | }
163 | return flag;
164 | }
165 |
166 | /**
167 | * 验证邮箱地址是否正确
168 | * @param email
169 | * @return
170 | */
171 | public static boolean IsEmail(String email){
172 | boolean flag = false;
173 | try{
174 | String check = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
175 | Pattern regex = Pattern.compile(check);
176 | Matcher matcher = regex.matcher(email);
177 | flag = matcher.matches();
178 | }catch(Exception e){
179 | e.printStackTrace();
180 | }
181 | return flag;
182 | }
183 | }
184 |
--------------------------------------------------------------------------------
/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | datasource:
3 | url: jdbc:mysql://localhost:3306/project_database?serverTimezone=GMT%2B8
4 | driver-class-name: com.mysql.cj.jdbc.Driver
5 | # 数据库用户名
6 | username: root
7 | # 数据库密码
8 | password:
9 | type: com.zaxxer.hikari.HikariDataSource
10 | thymeleaf:
11 | prefix: classpath:/templates/
12 | suffix: .html
13 | cache: false
14 |
15 | servlet:
16 | multipart:
17 | max-file-size: 100MB
18 | mybatis-plus:
19 | config-location: classpath:mybatis/mybatis-config.xml
20 | mapper-locations: classpath:mapper/*.xml
21 |
22 |
23 | server:
24 | port: 8080
25 |
26 | logging:
27 | level:
28 | com.jdk.projectinterface.mapper.*: debug
--------------------------------------------------------------------------------
/src/main/resources/mapper/AttendMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
13 |
18 |
24 |
28 |
--------------------------------------------------------------------------------
/src/main/resources/mapper/CourseMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
35 |
41 |
46 |
53 |
--------------------------------------------------------------------------------
/src/main/resources/mapper/LeaveMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
26 |
27 |
32 |
36 |
37 |
--------------------------------------------------------------------------------
/src/main/resources/mapper/RecordMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
53 |
54 |
60 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/src/main/resources/mapper/StudentMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
--------------------------------------------------------------------------------
/src/main/resources/mybatis/mybatis-config.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/main/resources/templates/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 测试
7 |
8 |
9 | 接口测试
10 | 账户管理
11 | 测试
12 | 管理员登录
13 | 教师登录
14 | 学生登录
15 |
16 | 教师注册
17 | 学生注册
18 |
19 | 教师修改
20 | 学生修改
21 |
22 | 查看所有教师用户
23 | 查看所有学生用户
24 | 模糊查询用户(type为用户角色,column为要查询的列名,value为模糊查询的值)
25 |
26 | 删除教师
27 |
28 | 课程管理
29 | 创建课程
30 | 查询课程
31 | 修改课程
32 | 删除课程
33 |
34 | 课程学生管理
35 | 学生加入课程
36 | 修改课程学生信息
37 | 查看所有课程学生信息
38 | 查看课程学生信息(模糊查询)
39 | 查看课程学生信息(Map)
40 | 删除课程学生
41 |
42 | 考勤任务管理
43 | 创建考勤任务
44 | 修改考勤任务
45 | 查询考勤任务(map)
46 | 查询考勤任务(column模糊查找)
47 | 删除考勤任务
48 |
49 | 考勤记录管理(学生完成考勤任务)
50 | 执行签到
51 |
52 |
58 |
59 | 修改考勤记录(允许教师修改,或者学生在规定时间重复提交)
60 | 查询考勤记录(column)
61 | 查询考勤记录(Map)
62 | 删除考勤记录
63 |
64 | 请假管理
65 | 学生提交申请
66 | 查看课程的所有申请
67 | 审批请假
68 | 撤销请假申请
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/src/python/face.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JinFengHua/project-interface/e619461b90d39744bf3dbfabaecc130028c5b6e7/src/python/face.exe
--------------------------------------------------------------------------------
/src/test/java/com/jdk/projectinterface/ProjectInterfaceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jdk.projectinterface;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.boot.test.context.SpringBootTest;
6 |
7 | @SpringBootTest
8 | class ProjectInterfaceApplicationTests {
9 |
10 | @Test
11 | public void test(){
12 | service.doUpdateCourse();
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------