├── .gitignore ├── .mvn └── wrapper │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── LICENSE ├── README.md ├── mvnw ├── mvnw.cmd ├── pom.xml ├── server.keystore ├── src ├── main │ ├── java │ │ ├── Ognl.java │ │ └── com │ │ │ └── slxy │ │ │ └── www │ │ │ ├── MybatisPlusGenerator.java │ │ │ ├── SelectApplication.java │ │ │ ├── common │ │ │ ├── Constant.java │ │ │ ├── ExcelUtil.java │ │ │ ├── ExcelUtils.java │ │ │ ├── SelectMapStructMapper.java │ │ │ └── TimeHWUtil.java │ │ │ ├── config │ │ │ ├── AutoFinishSelect.java │ │ │ ├── DocumentDirectoryCustomizer.java │ │ │ ├── DruidConfiguration.java │ │ │ ├── MyShiroRealm.java │ │ │ ├── MybatisPlusConfig.java │ │ │ ├── MybatisPlusSqlInterceptor.java │ │ │ ├── ShiroConfig.java │ │ │ ├── Swagger2Configuration.java │ │ │ └── WebAppConfig.java │ │ │ ├── dao │ │ │ ├── ISelectBugLogMapper.java │ │ │ ├── ISelectDepartmentMapper.java │ │ │ ├── ISelectMajorMapper.java │ │ │ ├── ISelectProcessControlMapper.java │ │ │ ├── ISelectScorePerMapper.java │ │ │ ├── ISelectSubjectMapper.java │ │ │ ├── ISelectTopicMapper.java │ │ │ └── ISelectUserBaseMapper.java │ │ │ ├── domain │ │ │ ├── dto │ │ │ │ ├── SelectBugLogDto.java │ │ │ │ ├── SelectMajorDTO.java │ │ │ │ ├── SelectSubjectDto.java │ │ │ │ ├── SelectTopicDto.java │ │ │ │ └── SelectUserBaseDto.java │ │ │ ├── po │ │ │ │ ├── ChangePs.java │ │ │ │ ├── ExcelBean.java │ │ │ │ ├── SelectBugLog.java │ │ │ │ ├── SelectDepartment.java │ │ │ │ ├── SelectMajor.java │ │ │ │ ├── SelectProcessControl.java │ │ │ │ ├── SelectScorePer.java │ │ │ │ ├── SelectSubject.java │ │ │ │ ├── SelectTopic.java │ │ │ │ └── SelectUserBase.java │ │ │ └── vo │ │ │ │ ├── ImportScoreVo.java │ │ │ │ ├── ImportStuVo.java │ │ │ │ ├── ImportTeaVo.java │ │ │ │ ├── PageVo.java │ │ │ │ ├── SelectDepartmentVo.java │ │ │ │ ├── SelectMajorVo.java │ │ │ │ ├── SelectSubjectVo.java │ │ │ │ ├── SelectTopicVo.java │ │ │ │ └── SelectUserBaseVo.java │ │ │ ├── enums │ │ │ ├── EnumEnOrDis.java │ │ │ ├── EnumProControl.java │ │ │ ├── EnumSubSelectStatus.java │ │ │ ├── EnumSubState.java │ │ │ ├── EnumSubType.java │ │ │ ├── EnumTeaEducation.java │ │ │ ├── EnumTeaPosition.java │ │ │ ├── EnumUserSex.java │ │ │ ├── EnumUserType.java │ │ │ └── EnumYesOrNo.java │ │ │ ├── filter │ │ │ ├── LoginInterceptor.java │ │ │ ├── LoginRequired.java │ │ │ ├── ParameterRequestWrapper.java │ │ │ ├── ParameterTrimFilter.java │ │ │ └── WebLogAspect.java │ │ │ ├── service │ │ │ ├── SelectBugLogService.java │ │ │ ├── SelectDepartmentService.java │ │ │ ├── SelectJavaMailService.java │ │ │ ├── SelectMajorService.java │ │ │ ├── SelectProcessControlService.java │ │ │ ├── SelectScorePerService.java │ │ │ ├── SelectSubjectService.java │ │ │ ├── SelectTopicService.java │ │ │ └── SelectUserBaseService.java │ │ │ └── web │ │ │ ├── BaseController.java │ │ │ ├── SelectBugLogController.java │ │ │ ├── SelectDepartmentController.java │ │ │ ├── SelectJavaMailController.java │ │ │ ├── SelectMajorController.java │ │ │ ├── SelectProcessControlController.java │ │ │ ├── SelectScorePerController.java │ │ │ ├── SelectSubjectController.java │ │ │ ├── SelectTopicController.java │ │ │ └── SelectUserBaseController.java │ ├── resources │ │ ├── application.properties │ │ ├── application.yml │ │ ├── mapper │ │ │ ├── SelectBugLogMapper.xml │ │ │ ├── SelectDepartmentMapper.xml │ │ │ ├── SelectMajorMapper.xml │ │ │ ├── SelectProcessControlMapper.xml │ │ │ ├── SelectScorePerMapper.xml │ │ │ ├── SelectSubjectMapper.xml │ │ │ ├── SelectTopicMapper.xml │ │ │ └── SelectUserBaseMapper.xml │ │ ├── server.keystore │ │ └── slxy-select.sql │ └── webapp │ │ ├── WEB-INF │ │ ├── file │ │ │ ├── select_scores.xls │ │ │ ├── select_students.xls │ │ │ └── select_teachers.xls │ │ ├── pages │ │ │ ├── CountModule │ │ │ │ ├── subAllList.jsp │ │ │ │ ├── subCountList.jsp │ │ │ │ ├── topicCountList.jsp │ │ │ │ └── topicScoreList.jsp │ │ │ ├── adminModule │ │ │ │ ├── admAdd.jsp │ │ │ │ ├── admList.jsp │ │ │ │ ├── admSelfInfo.jsp │ │ │ │ ├── admUpdate.jsp │ │ │ │ ├── scoreAdd.jsp │ │ │ │ ├── scoreList.jsp │ │ │ │ └── scoreUpdate.jsp │ │ │ ├── bugModule │ │ │ │ └── bugList.jsp │ │ │ ├── changePs.jsp │ │ │ ├── chat.jsp │ │ │ ├── common │ │ │ │ ├── adminSider.jsp │ │ │ │ ├── changeAdmPass.jsp │ │ │ │ ├── changePass.jsp │ │ │ │ ├── footer.jsp │ │ │ │ ├── include.jsp │ │ │ │ ├── macDownCommon.jsp │ │ │ │ ├── macTopCommon.jsp │ │ │ │ ├── page.jsp │ │ │ │ ├── studentSider.jsp │ │ │ │ └── teacherSider.jsp │ │ │ ├── depmaj │ │ │ │ ├── depAdd.jsp │ │ │ │ ├── depFind.jsp │ │ │ │ ├── depList.jsp │ │ │ │ ├── depUpdate.jsp │ │ │ │ ├── majAdd.jsp │ │ │ │ ├── majFind.jsp │ │ │ │ ├── majList.jsp │ │ │ │ └── majUpdate.jsp │ │ │ ├── forgetPs.jsp │ │ │ ├── index.jsp │ │ │ ├── login.jsp │ │ │ ├── main.jsp │ │ │ ├── pcModule │ │ │ │ └── pcList.jsp │ │ │ ├── scoreModule │ │ │ │ ├── scoreUpload.jsp │ │ │ │ └── scoreUploadList.jsp │ │ │ ├── stuModule │ │ │ │ ├── stuAdd.jsp │ │ │ │ ├── stuList.jsp │ │ │ │ ├── stuSelfInfo.jsp │ │ │ │ └── stuUpdate.jsp │ │ │ ├── subjectModule │ │ │ │ ├── auditedList.jsp │ │ │ │ ├── mySubList.jsp │ │ │ │ ├── optionalList.jsp │ │ │ │ ├── stuSubList.jsp │ │ │ │ ├── subAdd.jsp │ │ │ │ ├── subDetails.jsp │ │ │ │ ├── subUpdate.jsp │ │ │ │ ├── subjectDetails.jsp │ │ │ │ └── unAuditedList.jsp │ │ │ ├── teaModule │ │ │ │ ├── teaAdd.jsp │ │ │ │ ├── teaDetails.jsp │ │ │ │ ├── teaList.jsp │ │ │ │ ├── teaSelfInfo.jsp │ │ │ │ └── teaUpdate.jsp │ │ │ └── topicModule │ │ │ │ ├── myTopicDetails.jsp │ │ │ │ ├── noTopicList.jsp │ │ │ │ ├── topicDetails.jsp │ │ │ │ ├── topicList.jsp │ │ │ │ └── topicSelectedList.jsp │ │ └── web.xml │ │ ├── auth.html │ │ ├── error.html │ │ ├── footer.jsp │ │ ├── login.jsp │ │ ├── resources │ │ ├── a.jpg │ │ ├── beAlert │ │ │ ├── BeAlert.css │ │ │ ├── BeAlert.js │ │ │ ├── alert.png │ │ │ ├── confirm.png │ │ │ ├── error.png │ │ │ ├── index.html │ │ │ ├── info.png │ │ │ ├── jquery-3.1.1.min.js │ │ │ ├── jquery插件库.url │ │ │ ├── overlay.png │ │ │ ├── question.png │ │ │ ├── success.png │ │ │ ├── warning.png │ │ │ └── www.jq22.com.txt │ │ ├── bg │ │ │ ├── canvas-nest.js │ │ │ ├── html5shiv.js │ │ │ ├── jquery1.8.3.min.js │ │ │ ├── layer │ │ │ │ ├── extend │ │ │ │ │ └── layer.ext.js │ │ │ │ ├── layer.js │ │ │ │ └── skin │ │ │ │ │ ├── default │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ └── loading-2.gif │ │ │ │ │ ├── layer.css │ │ │ │ │ └── layer.ext.css │ │ │ ├── login │ │ │ │ ├── reset.css │ │ │ │ ├── style.css │ │ │ │ └── supersized.css │ │ │ ├── supersized-init.js │ │ │ └── supersized.3.2.7.min.js │ │ ├── bootstrap │ │ │ ├── css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ ├── bootstrap.min.css │ │ │ │ └── bootstrap.min.css.map │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ │ ├── bootstrap.js │ │ │ │ └── bootstrap.min.js │ │ ├── favicon.ico │ │ ├── font │ │ │ └── fontawesome-webfont.woff │ │ ├── img │ │ │ ├── back.png │ │ │ ├── black.png │ │ │ ├── cleditor │ │ │ │ ├── buttons.gif │ │ │ │ └── toolbar.gif │ │ │ ├── cream.png │ │ │ ├── delete.gif │ │ │ ├── icons │ │ │ │ ├── android.png │ │ │ │ ├── chrome.png │ │ │ │ ├── firefox.png │ │ │ │ ├── ie.png │ │ │ │ ├── ios.png │ │ │ │ ├── linux.png │ │ │ │ ├── mac.png │ │ │ │ ├── metro.png │ │ │ │ ├── opera.png │ │ │ │ ├── safari.png │ │ │ │ └── windows.png │ │ │ ├── main-back.png │ │ │ ├── photos │ │ │ │ ├── 2.jpg │ │ │ │ ├── 3.jpg │ │ │ │ ├── 5.jpg │ │ │ │ ├── 上铺.jpg │ │ │ │ ├── 小柴.jpg │ │ │ │ └── 笑柴.jpg │ │ │ ├── prettyPhoto │ │ │ │ ├── dark_rounded │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ ├── contentPattern.png │ │ │ │ │ ├── loader.gif │ │ │ │ │ └── sprite.png │ │ │ │ ├── dark_square │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ ├── loader.gif │ │ │ │ │ └── sprite.png │ │ │ │ ├── default │ │ │ │ │ ├── default_thumb.png │ │ │ │ │ ├── loader.gif │ │ │ │ │ ├── sprite.png │ │ │ │ │ ├── sprite_next.png │ │ │ │ │ ├── sprite_prev.png │ │ │ │ │ ├── sprite_x.png │ │ │ │ │ └── sprite_y.png │ │ │ │ ├── facebook │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ ├── contentPatternBottom.png │ │ │ │ │ ├── contentPatternLeft.png │ │ │ │ │ ├── contentPatternRight.png │ │ │ │ │ ├── contentPatternTop.png │ │ │ │ │ ├── default_thumbnail.gif │ │ │ │ │ ├── loader.gif │ │ │ │ │ └── sprite.png │ │ │ │ ├── light_rounded │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ ├── loader.gif │ │ │ │ │ └── sprite.png │ │ │ │ └── light_square │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ └── sprite.png │ │ │ ├── star.gif │ │ │ ├── user-big.jpg │ │ │ └── user.jpg │ │ ├── jquery │ │ │ ├── bootstrap-datetimepicker.js │ │ │ ├── bootstrap-datetimepicker.min.css │ │ │ ├── bootstrap.min.css │ │ │ ├── jquery-2.2.3.min.js │ │ │ └── jquery.js │ │ ├── js │ │ │ ├── MD5.js │ │ │ ├── bootstrap-datetimepicker.min.js │ │ │ ├── bootstrap-datetimepicker.zh-CN.js │ │ │ ├── bootstrap-switch.min.js │ │ │ ├── bootstrap.js │ │ │ ├── bootstrapValidator.js │ │ │ ├── charts.js │ │ │ ├── custom.js │ │ │ ├── excanvas.min.js │ │ │ ├── filter.js │ │ │ ├── fullcalendar.min.js │ │ │ ├── html5shim.js │ │ │ ├── jquery-ui-1.9.2.custom.min.js │ │ │ ├── jquery.cleditor.min.js │ │ │ ├── jquery.downCount.js │ │ │ ├── jquery.flot.js │ │ │ ├── jquery.flot.pie.js │ │ │ ├── jquery.flot.resize.js │ │ │ ├── jquery.flot.stack.js │ │ │ ├── jquery.js │ │ │ ├── jquery.noty.js │ │ │ ├── jquery.prettyPhoto.js │ │ │ ├── jquery.rateit.min.js │ │ │ ├── layouts │ │ │ │ ├── bottom.js │ │ │ │ ├── top.js │ │ │ │ └── topRight.js │ │ │ ├── popper.min.js │ │ │ ├── sparklines.js │ │ │ └── themes │ │ │ │ └── default.js │ │ ├── mac │ │ │ └── index.html │ │ └── style │ │ │ ├── bootstrap-datetimepicker.min.css │ │ │ ├── bootstrap-switch.css │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap3-2.min.css │ │ │ ├── bootstrap4.0.min.css │ │ │ ├── bootstrapValidator.css │ │ │ ├── font-awesome.css │ │ │ ├── fullcalendar.css │ │ │ ├── images │ │ │ ├── bootstrap.min.css │ │ │ ├── ui-bg_diagonals-thick_18_b81900_40x40.png │ │ │ ├── ui-bg_diagonals-thick_20_666666_40x40.png │ │ │ ├── ui-bg_flat_10_000000_40x100.png │ │ │ ├── ui-bg_glass_100_f6f6f6_1x400.png │ │ │ ├── ui-bg_glass_100_fdf5ce_1x400.png │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ ├── ui-bg_gloss-wave_35_f6a828_500x100.png │ │ │ ├── ui-bg_highlight-soft_100_eeeeee_1x100.png │ │ │ ├── ui-bg_highlight-soft_75_ffe45c_1x100.png │ │ │ ├── ui-icons_222222_256x240.png │ │ │ ├── ui-icons_228ef1_256x240.png │ │ │ ├── ui-icons_ef8c08_256x240.png │ │ │ ├── ui-icons_ffd27a_256x240.png │ │ │ └── ui-icons_ffffff_256x240.png │ │ │ ├── jquery-ui.css │ │ │ ├── jquery.cleditor.css │ │ │ ├── prettyPhoto.css │ │ │ ├── rateit.css │ │ │ ├── style.css │ │ │ └── widgets.css │ │ ├── sider.jsp │ │ ├── test.jsp │ │ ├── times.html │ │ └── top.jsp └── test │ └── java │ └── com │ └── slxy │ └── www │ ├── SelectApplicationTests.java │ ├── dao │ ├── ISelectUserBaseMapper.java │ └── SelectUserBaseMapper.xml │ ├── domain │ └── po │ │ └── SelectUserBase.java │ ├── service │ └── SelectUserBaseService.java │ └── web │ └── SelectUserBaseController.java ├── velocity.log └── velocity.log.1 /.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /build/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.3/apache-maven-3.5.3-bin.zip 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 商洛学院毕业论文选题系统说明 2 | 3 | ## 说明 4 | >本项目是[Lars Cheng](https://www.larscheng.com)在2018年的本科毕业设计,《基于本科高校实际情况的毕业论文选题信息管理系统》 5 | >其中涉及了毕业设计中从选题到结题所有过程的在线管理 6 | 7 | 8 | ***目前该项目涉及到多个年级多人维护,当出现版本迭代时,将上一个版本进行独立分支保存,并对分支进行规范命名*** 9 | 10 | 分支命名:姓名_select(lars_select) 11 | 12 | >如有学弟学妹需要重构项目或者添加新功能,直接fork项目,开发完成后提交pr即可,我会第一时间处理。 13 | 14 | 15 | 16 | ## 分支 17 | 18 | 目前已存在分支介绍: 19 | 20 | |分支|负责人|负责人邮箱|版本|分支内容| 21 | |---|---|---|---|---| 22 | |boot|larscheng|larscheng5@gmail.com|2.0.0|主分支,线上环境代码,最新最完整的代码分支| 23 | |zql_select|larscheng|larscheng5@gmail.com|1.0.1|备份分支,保存了第一个版本的全部代码| 24 | |master|larscheng|larscheng5@gmail.com|1.0.0|备份分支,以ssm框架为基础的半成品分支(`已停止维护`)| 25 | 26 | 27 | ## 最后 28 | 29 | 关于项目如有任何问题可联系对应分支的负责人。 30 | 31 | -------------------------------------------------------------------------------- /server.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/server.keystore -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/MybatisPlusGenerator.java: -------------------------------------------------------------------------------- 1 | //package com.slxy.www; 2 | // 3 | //import com.baomidou.mybatisplus.annotations.IdType; 4 | //import com.baomidou.mybatisplus.generator.AutoGeneratorMy; 5 | //import com.baomidou.mybatisplus.generator.ConfigGeneratorMy; 6 | // 7 | //public class MybatisPlusGenerator { 8 | // 9 | // public static void main(String[] args) { 10 | // ConfigGeneratorMy cg = new ConfigGeneratorMy(); 11 | // 12 | // // 配置 MySQL 连接 13 | // cg.setDbUrl("jdbc:mysql://127.0.0.1:3306/slxy-select"); 14 | // cg.setDbUser("root"); 15 | // cg.setDbPassword("root"); 16 | // cg.setDbDriverName("com.mysql.jdbc.Driver"); 17 | // 18 | // // 配置包名 19 | // String[] table = {"select_topic","select_subject","select_score_per","select_process_control","select_major","select_department","select_bug_log"}; 20 | // cg.setTableNames(table); 21 | // cg.setBuliderModel(true); 22 | // cg.setResultMap(true); 23 | // cg.setFileOverride(true); 24 | // cg.setEntityPackage("com.slxy.www.domain.po"); 25 | // cg.setMapperName("I%sMapper"); 26 | // cg.setMapperPackage("com.slxy.www.dao"); 27 | // cg.setServiceImplName("%sService"); 28 | // cg.setServicePackage(null); 29 | // cg.setXmlPackage("com.slxy.www.dao"); 30 | // cg.setServiceImplPackage("com.slxy.www.service"); 31 | // cg.setControllerPackage("com.slxy.www.web"); 32 | // 33 | // // 配置表主键策略 34 | // cg.setIdType(IdType.AUTO); 35 | // 36 | // // 配置保存路径 37 | // cg.setSaveDir(System.getProperty("user.dir") + "/src/test/java/"); 38 | // // 其他参数请根据上面的参数说明自行配置,当所有配置完善后,运行AutoGenerator.run()方法生成Code 39 | // // 生成代码 40 | // AutoGeneratorMy.run(cg); 41 | // } 42 | //} 43 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/SelectApplication.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www; 2 | 3 | import org.apache.catalina.Context; 4 | import org.apache.catalina.connector.Connector; 5 | import org.apache.tomcat.util.descriptor.web.SecurityCollection; 6 | import org.apache.tomcat.util.descriptor.web.SecurityConstraint; 7 | import org.mybatis.spring.annotation.MapperScan; 8 | import org.springframework.boot.SpringApplication; 9 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 10 | import org.springframework.boot.autoconfigure.SpringBootApplication; 11 | import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; 12 | import org.springframework.boot.builder.SpringApplicationBuilder; 13 | import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; 14 | import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; 15 | import org.springframework.boot.web.support.SpringBootServletInitializer; 16 | import org.springframework.context.annotation.Bean; 17 | import org.springframework.scheduling.annotation.EnableScheduling; 18 | import springfox.documentation.swagger2.annotations.EnableSwagger2; 19 | 20 | @MapperScan("com.slxy.www.dao") 21 | @EnableSwagger2 22 | //@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 23 | @EnableScheduling 24 | @SpringBootApplication 25 | 26 | public class SelectApplication extends SpringBootServletInitializer { 27 | @Override 28 | protected final SpringApplicationBuilder configure(final SpringApplicationBuilder application) { 29 | return application.sources(SelectApplication.class); 30 | } 31 | public static void main(String[] args) { 32 | SpringApplication.run(SelectApplication.class, args); 33 | } 34 | 35 | 36 | 37 | 38 | //https配置 39 | // @Bean 40 | // public EmbeddedServletContainerFactory servletContainer(){ 41 | // TomcatEmbeddedServletContainerFactory tomcat=new TomcatEmbeddedServletContainerFactory(){ 42 | // @Override 43 | // protected void postProcessContext(Context context) { 44 | // SecurityConstraint securityConstraint=new SecurityConstraint(); 45 | // securityConstraint.setUserConstraint("CONFIDENTIAL");//confidential 46 | // SecurityCollection collection=new SecurityCollection(); 47 | // collection.addPattern("/*"); 48 | // securityConstraint.addCollection(collection); 49 | // context.addConstraint(securityConstraint); 50 | // } 51 | // }; 52 | // tomcat.addAdditionalTomcatConnectors(httpConnector()); 53 | // return tomcat; 54 | // } 55 | // 56 | // @Bean 57 | // public Connector httpConnector(){ 58 | // Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol"); 59 | // connector.setScheme("http"); 60 | // connector.setPort(8080); 61 | // connector.setSecure(false); 62 | // connector.setRedirectPort(8088); 63 | // return connector; 64 | // } 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/common/Constant.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.common; 2 | 3 | /** 4 | * @author zhengql 5 | * @description 常量类 6 | * @className Constant 7 | * @create 2018年01月13日 19:28 8 | */ 9 | public class Constant { 10 | public static final String USER_PASSWORD = "123456"; 11 | 12 | 13 | /** 14 | * 消息格式: 模块_操作_结果 15 | */ 16 | //ajax 消息返回 17 | public static final String SUCCESS = "OK"; 18 | public static final String ERROR = "操作失败!"; 19 | public static final String PARAM_ERROR = "请求参数异常!"; 20 | public static final String NULL_ERROR = "数据不存在!"; 21 | 22 | 23 | //系别 24 | public static final String DEP_EXIST = "该系别已存在!"; 25 | public static final String DEP_DISABLE_ERROR = "该系别下有专业正在启用中,不可禁用!"; 26 | public static final String DEP_DISABLE_ERROR_TEACHER = "该系别下有教师正在启用中,不可禁用!"; 27 | public static final String DEP_DELETE_ERROR = "该系别下存在专业,不可删除!"; 28 | public static final String DEP_DELETE_ERROR_EXIST_TEACHER = "该系别下存在教师,不可删除!"; 29 | public static final String DEP_DELETE_ERROR_EXIST_TEACHER_NAME = "该系别下存在教师,不可删除!系别名:"; 30 | public static final String DEP_DELETE_ERROR_NAME = "该系别下存在专业,不可删除!系别名:"; 31 | 32 | //专业 33 | public static final String MAJ_ABLE_ERROR = "启用失败!原因:该专业所属系别已被禁用"; 34 | public static final String MAJ_DISABLE_ERROR = "禁用失败!原因:该专业已有启用中的学生!"; 35 | public static final String MAJ_DELETE_ERROR = "删除失败!原因:该专业已有学生!"; 36 | public static final String MAJ_DELETE_ERROR_NAME = "删除失败!原因:该专业已有学生!专业名:"; 37 | public static final String MAJ_NAME_EXIST = "该专业已存在!"; 38 | 39 | //教师 40 | public static final String TEA_DEL_ERROR_EXIST_SELECT = "该教师存在题目信息不可删除!"; 41 | public static final String TEA_DEL_ERROR_EXIST_SELECT_NAME = "该教师存在题目信息不可删除!教师名:"; 42 | public static final String TEA_ABLE_ERROR_DEP_DISABLE = "启用失败,该教师所属系别已禁用"; 43 | 44 | 45 | //学生 46 | public static final String STU_ABLE_ERROR_MAJ_DISABLE = "启用失败!原因:该生所在专业已被禁用"; 47 | public static final String STU_DISABLE_ERROR_TOPIC = "禁用失败!原因:该生选题未结题!"; 48 | public static final String STU_ADD_ERROR_CODE_EXIST = "账号重复!!!"; 49 | public static final String STU_ADD_ERROR_NAME_EXIST = "姓名重复!!!"; 50 | public static final String STU_IMPORT_ERROR_FILE_NAME_ERROR = "导入失败,请检查模板格式和名称是否正确"; 51 | public static final String STU_IMPORT_ERROR_FILE_ERROR = "导入失败,请检查导入模板"; 52 | public static final String STU_DEL_ERROR_EXIST_SELECT = "删除失败,该生存在选题记录"; 53 | public static final String STU_DEL_ERROR_EXIST_SELECT_NAME = "删除失败,该生存在选题记录,姓名:"; 54 | 55 | 56 | 57 | //论文 58 | 59 | public static final String AUDIT_FAIL_REASON = "审核失败请您检查后重试!!!"; 60 | public static final String AUDIT_SUCCESS_REASON = "恭喜您,论文审核通过!!!"; 61 | public static final String SUB_ADD_NAME_EXIST = "该题目名称已存在,添加失败!"; 62 | public static final String SUB_DEL_ERROR = "删除失败!该题目已被选择但尚未结题!"; 63 | 64 | //选题 65 | public static final String SELECT_ERROR_REPEAT = "您已选过题目,请勿重复选择!"; 66 | public static final String SELECT_ERROR_SELECTED = "该题目已经被选,请重新选择!"; 67 | public static final String SELECT_SUCCESS_REASON = "恭喜你选题成功!"; 68 | public static final String SELECT_ERROR_NOT_EXIST = "该选题记录不存在!"; 69 | public static final String SELECT_ERROR_NOT_AUDIT_SUCCESS = "该记录还未通过审核,不能进行此操作!"; 70 | public static final String SELECT_DEL_ERROR = "删除失败!该题目已被选择但尚未结题!"; 71 | public static final String SELECT_REV_ERROR = "撤销失败!该题目已结题 : "; 72 | public static final String SELECT_AGAIN = "您存在未过审核的选题记录,请删除后重新选题!"; 73 | 74 | 75 | //成绩比例 76 | public static final String SCORE_INSERT_NAME_REPEAT = "组成模块名称重复!"; 77 | 78 | 79 | 80 | //流程控制 81 | public static final String NOT_UPLOAD_SUBJECT_TIME = "不在上传题目操作时间内,操作失败!"; 82 | public static final String NOT_TIME = "该功能不在操作时间内,请稍后再试!"; 83 | 84 | 85 | public static final String FILE_DIR = "C:/select_files/"; 86 | 87 | 88 | } 89 | 90 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/common/SelectMapStructMapper.java: -------------------------------------------------------------------------------- 1 | 2 | 3 | package com.slxy.www.common; 4 | 5 | 6 | import com.slxy.www.domain.dto.SelectSubjectDto; 7 | import com.slxy.www.domain.dto.SelectTopicDto; 8 | import com.slxy.www.domain.dto.SelectUserBaseDto; 9 | import com.slxy.www.domain.po.SelectSubject; 10 | import com.slxy.www.domain.po.SelectTopic; 11 | import com.slxy.www.domain.po.SelectUserBase; 12 | import com.slxy.www.domain.vo.SelectSubjectVo; 13 | import com.slxy.www.domain.vo.SelectTopicVo; 14 | import org.mapstruct.Mapper; 15 | import org.mapstruct.factory.Mappers; 16 | 17 | import java.util.List; 18 | 19 | @Mapper 20 | @SuppressWarnings("all") 21 | public interface SelectMapStructMapper { 22 | 23 | SelectMapStructMapper INSTANCE = Mappers.getMapper(SelectMapStructMapper.class); 24 | 25 | 26 | SelectUserBaseDto SelectUserBasePo2Dto(SelectUserBase user); 27 | 28 | List SelectUserBasesPo2Dto(List userList); 29 | 30 | SelectSubjectDto SelectSubjectPoToDto(SelectSubject subject); 31 | 32 | List SelectSubjectsPoToDto(List subjectList); 33 | 34 | SelectSubject SelectSubjectVoToPo(SelectSubjectVo vo); 35 | 36 | SelectTopicDto SelectTopicPoToDto(SelectTopic topic); 37 | 38 | SelectTopic SelectTopicVoToPo(SelectTopicVo vo); 39 | 40 | SelectSubjectVo SelectSubjectPoToVo(SelectSubject selectSubject); 41 | } 42 | 43 | 44 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/common/TimeHWUtil.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.common; 2 | 3 | import java.text.SimpleDateFormat; 4 | import java.util.Date; 5 | 6 | public class TimeHWUtil { 7 | /*** 8 | * 9 | * @param date 10 | * @param dateFormat : e.g:yyyy-MM-dd HH:mm:ss 11 | * @return 12 | */ 13 | public static String formatDateByPattern(Date date, String dateFormat){ 14 | SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); 15 | String formatTimeStr = null; 16 | if (date != null) { 17 | formatTimeStr = sdf.format(date); 18 | } 19 | return formatTimeStr; 20 | } 21 | /*** 22 | * convert Date to cron ,eg. "0 06 10 15 1 ? 2014" 23 | * @param date : 时间点 24 | * @return 25 | */ 26 | public String getCron(Date date){ 27 | String dateFormat="ss mm HH dd MM ? yyyy"; 28 | return formatDateByPattern(date, dateFormat); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/config/AutoFinishSelect.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.config; 2 | 3 | import com.slxy.www.common.TimeHWUtil; 4 | import com.slxy.www.service.SelectProcessControlService; 5 | import com.slxy.www.service.SelectSubjectService; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.boot.ApplicationArguments; 10 | import org.springframework.boot.ApplicationRunner; 11 | import org.springframework.context.annotation.Bean; 12 | import org.springframework.context.annotation.Configuration; 13 | import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; 14 | import org.springframework.scheduling.support.CronTrigger; 15 | import org.springframework.stereotype.Component; 16 | 17 | import java.util.Date; 18 | import java.util.concurrent.ScheduledFuture; 19 | 20 | /** 21 | * 描述: 22 | * 23 | * @author zhengql 24 | * @date 2018/10/29 17:04 25 | */ 26 | 27 | @Configuration 28 | @Component 29 | public class AutoFinishSelect implements ApplicationRunner { 30 | private Logger logger = LoggerFactory.getLogger(getClass()); 31 | 32 | @Autowired 33 | private ThreadPoolTaskScheduler threadPoolTaskScheduler; 34 | @Autowired 35 | private SelectProcessControlService selectProcessControlService; 36 | @Autowired 37 | private SelectSubjectService selectSubjectService; 38 | 39 | @Bean 40 | public ThreadPoolTaskScheduler threadPoolTaskScheduler() { 41 | return new ThreadPoolTaskScheduler(); 42 | } 43 | 44 | private ScheduledFuture future; 45 | 46 | private static String cron = null; 47 | 48 | public String getCron(Date date){ 49 | cron = new TimeHWUtil().getCron(date).substring(0, 16); 50 | return cron; 51 | } 52 | 53 | public void update(Date date){ 54 | if(future != null) { 55 | logger.info("---------------------------------清除线程池 "); 56 | future.cancel(true); 57 | } 58 | future = threadPoolTaskScheduler.schedule(task, new CronTrigger(getCron(date))); 59 | logger.info("---------------------------------更新自动结题业务 "+cron); 60 | } 61 | 62 | 63 | Runnable task = new Runnable() { 64 | @Override 65 | public void run() { 66 | selectSubjectService.autoEnd(); 67 | logger.info("---------------------------------执行自动结题业务"); 68 | } 69 | }; 70 | 71 | @Override 72 | public void run(ApplicationArguments applicationArguments) throws Exception { 73 | Thread.sleep(1000); 74 | future = threadPoolTaskScheduler.schedule(task, new CronTrigger(getCron(selectProcessControlService.selectById(6).getProEndTime()))); 75 | logger.info("---------------------------------初始化自动结题业务 "+cron); 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/config/DocumentDirectoryCustomizer.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.config; 2 | 3 | /** 4 | * @author zhengql 5 | * @description 6 | * @className DocumentDirectoryCustomizer 7 | * @create 2018年04月11日 10:42 8 | */ 9 | 10 | import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer; 11 | import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer; 12 | import org.springframework.context.annotation.Configuration; 13 | 14 | import java.io.File; 15 | 16 | /** 17 | * 内嵌Tomcat 运行项目目录 18 | */ 19 | @Configuration 20 | public class DocumentDirectoryCustomizer implements EmbeddedServletContainerCustomizer { 21 | public void customize(ConfigurableEmbeddedServletContainer container) { 22 | //项目目录 23 | container.setDocumentRoot(new File( 24 | System.getProperty("user.dir") + "/src/main/webapp")); 25 | } 26 | } 27 | 28 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/config/DruidConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.config; 2 | 3 | import com.alibaba.druid.support.http.StatViewServlet; 4 | import com.alibaba.druid.support.http.WebStatFilter; 5 | import com.alibaba.druid.support.spring.stat.DruidStatInterceptor; 6 | import org.springframework.aop.support.DefaultPointcutAdvisor; 7 | import org.springframework.aop.support.JdkRegexpMethodPointcut; 8 | import org.springframework.boot.web.servlet.FilterRegistrationBean; 9 | import org.springframework.boot.web.servlet.ServletRegistrationBean; 10 | import org.springframework.context.annotation.Bean; 11 | import org.springframework.context.annotation.Configuration; 12 | 13 | /** 14 | * Druid 配置 15 | * 16 | * @author Leaves 17 | * @version 1.0.0 18 | * @date 2018/4/13 19 | */ 20 | @Configuration 21 | public class DruidConfiguration { 22 | 23 | /** 24 | * StatViewServlet 配置 25 | */ 26 | @Bean 27 | public ServletRegistrationBean druidServlet() { 28 | ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet()); 29 | servletRegistrationBean.addUrlMappings("/druid/*"); 30 | servletRegistrationBean.addInitParameter("loginUsername", "admin"); 31 | servletRegistrationBean.addInitParameter("loginPassword", "druidadmin"); 32 | //是否能够重置数据,禁用HTML页面上的“Reset All”功能 33 | servletRegistrationBean.addInitParameter("resetEnable", "false"); 34 | //IP白名单 (没有配置或者为空,则允许所有访问) 35 | servletRegistrationBean.addInitParameter("allow", ""); 36 | //IP黑名单(共同存在时,deny优先于allow) 37 | //servletRegistrationBean.addInitParameter("deny", "10.200.0.101"); 38 | return servletRegistrationBean; 39 | } 40 | 41 | /** 42 | * WebStatFilter 配置 43 | */ 44 | @Bean 45 | public FilterRegistrationBean filterRegistrationBean() { 46 | FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); 47 | filterRegistrationBean.setEnabled(true); 48 | //添加过滤规则 49 | filterRegistrationBean.addUrlPatterns("/*"); 50 | //添加不需要忽略的格式信息 51 | filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); 52 | return filterRegistrationBean; 53 | } 54 | 55 | /** 56 | * 监听 Spring: 定义切入点 57 | */ 58 | @Bean 59 | public JdkRegexpMethodPointcut druidStatPointcut() { 60 | JdkRegexpMethodPointcut druidStatPointcut = new JdkRegexpMethodPointcut(); 61 | druidStatPointcut.setPatterns("com.slxy.www.web.*", "com.slxy.www.dao.*"); 62 | return druidStatPointcut; 63 | } 64 | 65 | /** 66 | * 监听 Spring: 定义拦截器 67 | */ 68 | @Bean 69 | public DruidStatInterceptor druidStatInterceptor() { 70 | return new DruidStatInterceptor(); 71 | } 72 | 73 | /** 74 | * 监听 Spring: 定义通知类 75 | */ 76 | @Bean 77 | public DefaultPointcutAdvisor druidStatAdvisor(JdkRegexpMethodPointcut druidStatPointcut, DruidStatInterceptor druidStatInterceptor) { 78 | DefaultPointcutAdvisor defaultPointAdvisor = new DefaultPointcutAdvisor(); 79 | defaultPointAdvisor.setPointcut(druidStatPointcut); 80 | defaultPointAdvisor.setAdvice(druidStatInterceptor); 81 | return defaultPointAdvisor; 82 | } 83 | 84 | } 85 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/config/MyShiroRealm.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.config;//package com.zql.jspdemo.config; 2 | // 3 | // 4 | //import org.apache.shiro.authc.AuthenticationException; 5 | //import org.apache.shiro.authc.AuthenticationInfo; 6 | //import org.apache.shiro.authc.AuthenticationToken; 7 | //import org.apache.shiro.authc.SimpleAuthenticationInfo; 8 | //import org.apache.shiro.authz.AuthorizationInfo; 9 | //import org.apache.shiro.authz.SimpleAuthorizationInfo; 10 | //import org.apache.shiro.realm.AuthorizingRealm; 11 | //import org.apache.shiro.subject.PrincipalCollection; 12 | //import org.apache.shiro.util.ByteSource; 13 | // 14 | //import javax.annotation.Resource; 15 | // 16 | //public class MyShiroRealm extends AuthorizingRealm { 17 | // @Resource 18 | // private UserInfoService userInfoService; 19 | // @Override 20 | // protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { 21 | // System.out.println("权限配置-->MyShiroRealm.doGetAuthorizationInfo()"); 22 | // SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo(); 23 | // UserInfo userInfo = (UserInfo)principals.getPrimaryPrincipal(); 24 | // for(SysRole role:userInfo.getRoleList()){ 25 | // authorizationInfo.addRole(role.getRole()); 26 | // for(SysPermission p:role.getPermissions()){ 27 | // authorizationInfo.addStringPermission(p.getPermission()); 28 | // } 29 | // } 30 | // return authorizationInfo; 31 | // } 32 | // 33 | // /*主要是用来进行身份认证的,也就是说验证用户输入的账号和密码是否正确。*/ 34 | // @Override 35 | // protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) 36 | // throws AuthenticationException { 37 | // System.out.println("MyShiroRealm.doGetAuthenticationInfo()"); 38 | // //获取用户的输入的账号. 39 | // String username = (String)token.getPrincipal(); 40 | // System.out.println(token.getCredentials()); 41 | // //通过username从数据库中查找 User对象,如果找到,没找到. 42 | // //实际项目中,这里可以根据实际情况做缓存,如果不做,Shiro自己也是有时间间隔机制,2分钟内不会重复执行该方法 43 | // UserInfo userInfo = userInfoService.findByUsername(username); 44 | // System.out.println("----->>userInfo="+userInfo); 45 | // if(userInfo == null){ 46 | // return null; 47 | // } 48 | // SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo( 49 | // userInfo, //用户名 50 | // userInfo.getPassword(), //密码 51 | // ByteSource.Util.bytes(userInfo.getCredentialsSalt()),//salt=username+salt 52 | // getName() //realm name 53 | // ); 54 | // return authenticationInfo; 55 | // } 56 | // 57 | //} -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/config/ShiroConfig.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.config;//package com.zql.jspdemo.config; 2 | // 3 | //import org.apache.shiro.authc.credential.HashedCredentialsMatcher; 4 | //import org.apache.shiro.mgt.SecurityManager; 5 | //import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; 6 | //import org.apache.shiro.spring.web.ShiroFilterFactoryBean; 7 | //import org.apache.shiro.web.mgt.DefaultWebSecurityManager; 8 | //import org.springframework.context.annotation.Bean; 9 | //import org.springframework.context.annotation.Configuration; 10 | //import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; 11 | // 12 | //import java.util.LinkedHashMap; 13 | //import java.util.Map; 14 | //import java.util.Properties; 15 | // 16 | //@Configuration 17 | //public class ShiroConfig { 18 | // @Bean 19 | // public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { 20 | // System.out.println("ShiroConfiguration.shirFilter()"); 21 | // ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); 22 | // shiroFilterFactoryBean.setSecurityManager(securityManager); 23 | // //拦截器. 24 | // Map filterChainDefinitionMap = new LinkedHashMap(); 25 | // // 配置不会被拦截的链接 顺序判断 26 | // filterChainDefinitionMap.put("/static/**", "anon"); 27 | // //配置退出 过滤器,其中的具体的退出代码Shiro已经替我们实现了 28 | // filterChainDefinitionMap.put("/logout", "logout"); 29 | // //:这是一个坑呢,一不小心代码就不好使了; 30 | // // 31 | // filterChainDefinitionMap.put("/**", "authc"); 32 | // // 如果不设置默认会自动寻找Web工程根目录下的"/login.jsp"页面 33 | // shiroFilterFactoryBean.setLoginUrl("/login"); 34 | // // 登录成功后要跳转的链接 35 | // shiroFilterFactoryBean.setSuccessUrl("/index"); 36 | // 37 | // //未授权界面; 38 | // shiroFilterFactoryBean.setUnauthorizedUrl("/403"); 39 | // shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); 40 | // return shiroFilterFactoryBean; 41 | // } 42 | // 43 | // /** 44 | // * 凭证匹配器 45 | // * (由于我们的密码校验交给Shiro的SimpleAuthenticationInfo进行处理了 46 | // * ) 47 | // * @return 48 | // */ 49 | // @Bean 50 | // public HashedCredentialsMatcher hashedCredentialsMatcher(){ 51 | // HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher(); 52 | // hashedCredentialsMatcher.setHashAlgorithmName("md5");//散列算法:这里使用MD5算法; 53 | // hashedCredentialsMatcher.setHashIterations(2);//散列的次数,比如散列两次,相当于 md5(md5("")); 54 | // return hashedCredentialsMatcher; 55 | // } 56 | // 57 | // @Bean 58 | // public MyShiroRealm myShiroRealm(){ 59 | // MyShiroRealm myShiroRealm = new MyShiroRealm(); 60 | // myShiroRealm.setCredentialsMatcher(hashedCredentialsMatcher()); 61 | // return myShiroRealm; 62 | // } 63 | // 64 | // 65 | // @Bean 66 | // public SecurityManager securityManager(){ 67 | // DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); 68 | // securityManager.setRealm(myShiroRealm()); 69 | // return securityManager; 70 | // } 71 | // 72 | // /** 73 | // * 开启shiro aop注解支持. 74 | // * 使用代理方式;所以需要开启代码支持; 75 | // * @param securityManager 76 | // * @return 77 | // */ 78 | // @Bean 79 | // public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager){ 80 | // AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor(); 81 | // authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); 82 | // return authorizationAttributeSourceAdvisor; 83 | // } 84 | // 85 | // @Bean(name="simpleMappingExceptionResolver") 86 | // public SimpleMappingExceptionResolver 87 | // createSimpleMappingExceptionResolver() { 88 | // SimpleMappingExceptionResolver r = new SimpleMappingExceptionResolver(); 89 | // Properties mappings = new Properties(); 90 | // mappings.setProperty("DatabaseException", "databaseError");//数据库异常处理 91 | // mappings.setProperty("UnauthorizedException","403"); 92 | // r.setExceptionMappings(mappings); // None by default 93 | // r.setDefaultErrorView("error"); // No default 94 | // r.setExceptionAttribute("ex"); // Default is "exception" 95 | // //r.setWarnLogCategory("example.MvcLogger"); // No default 96 | // return r; 97 | // } 98 | //} -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/config/WebAppConfig.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.config; 2 | 3 | import com.slxy.www.filter.LoginInterceptor; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 7 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 8 | 9 | /** 10 | * @author zhengql 11 | * @description 12 | * @className WebAppConfig 13 | * @create 2018年04月11日 18:18 14 | */ 15 | @Configuration 16 | public class WebAppConfig extends WebMvcConfigurerAdapter { 17 | 18 | @Bean 19 | public LoginInterceptor LoginInterceptor() { 20 | return new LoginInterceptor(); 21 | } 22 | 23 | @Override 24 | public void addInterceptors(InterceptorRegistry registry) { 25 | registry.addInterceptor(LoginInterceptor()).excludePathPatterns("/static/*") 26 | .excludePathPatterns("/error").addPathPatterns("/**"); 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/dao/ISelectBugLogMapper.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.dao; 2 | 3 | import com.slxy.www.domain.dto.SelectBugLogDto; 4 | import com.slxy.www.domain.po.SelectBugLog; 5 | import com.baomidou.mybatisplus.mapper.BaseMapper; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 11 | * SelectBugLog 表数据库控制层接口 12 | * 13 | */ 14 | public interface ISelectBugLogMapper extends BaseMapper { 15 | 16 | List selectTenLog(); 17 | } -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/dao/ISelectDepartmentMapper.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.dao; 2 | 3 | import com.baomidou.mybatisplus.plugins.Page; 4 | import com.slxy.www.domain.po.SelectDepartment; 5 | import com.baomidou.mybatisplus.mapper.BaseMapper; 6 | import com.slxy.www.domain.vo.SelectDepartmentVo; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 12 | * SelectDepartment 表数据库控制层接口 13 | * 14 | */ 15 | public interface ISelectDepartmentMapper extends BaseMapper { 16 | List getDepByPage(Page page, SelectDepartmentVo vo); 17 | 18 | List selectTeaDep(); 19 | 20 | } -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/dao/ISelectMajorMapper.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.dao; 2 | 3 | import com.baomidou.mybatisplus.plugins.Page; 4 | import com.slxy.www.domain.dto.SelectMajorDTO; 5 | import com.slxy.www.domain.po.SelectMajor; 6 | import com.baomidou.mybatisplus.mapper.BaseMapper; 7 | import com.slxy.www.domain.vo.SelectMajorVo; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * 13 | * SelectMajor 表数据库控制层接口 14 | * 15 | */ 16 | public interface ISelectMajorMapper extends BaseMapper { 17 | List getMajByPage(Page page, SelectMajorVo vo); 18 | 19 | } -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/dao/ISelectProcessControlMapper.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.dao; 2 | 3 | import com.slxy.www.domain.po.SelectProcessControl; 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 10 | * SelectProcessControl 表数据库控制层接口 11 | * 12 | */ 13 | public interface ISelectProcessControlMapper extends BaseMapper { 14 | 15 | 16 | List selectPro(); 17 | } -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/dao/ISelectScorePerMapper.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.dao; 2 | 3 | import com.slxy.www.domain.po.SelectScorePer; 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | 6 | /** 7 | * 8 | * SelectScorePer 表数据库控制层接口 9 | * 10 | */ 11 | public interface ISelectScorePerMapper extends BaseMapper { 12 | 13 | 14 | } -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/dao/ISelectSubjectMapper.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.dao; 2 | 3 | import com.baomidou.mybatisplus.plugins.Page; 4 | import com.slxy.www.domain.dto.SelectSubjectDto; 5 | import com.slxy.www.domain.po.SelectSubject; 6 | import com.baomidou.mybatisplus.mapper.BaseMapper; 7 | import com.slxy.www.domain.vo.SelectSubjectVo; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * 13 | * SelectSubject 表数据库控制层接口 14 | * 15 | */ 16 | public interface ISelectSubjectMapper extends BaseMapper { 17 | 18 | List getSubByPage(SelectSubjectVo vo, Page page); 19 | 20 | List getMySubByPage(SelectSubjectVo vo, Page page); 21 | 22 | List selectAllSubject(); 23 | 24 | void autoUpdateStatus(); 25 | 26 | List getSubByPage(SelectSubjectVo vo); 27 | 28 | List countSubByPage(SelectSubjectVo vo, Page page); 29 | 30 | List countSubByPage(SelectSubjectVo vo); 31 | } -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/dao/ISelectTopicMapper.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.dao; 2 | 3 | import com.baomidou.mybatisplus.plugins.Page; 4 | import com.slxy.www.domain.dto.SelectTopicDto; 5 | import com.slxy.www.domain.po.SelectTopic; 6 | import com.baomidou.mybatisplus.mapper.BaseMapper; 7 | import com.slxy.www.domain.vo.ImportScoreVo; 8 | import com.slxy.www.domain.vo.SelectTopicVo; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * 14 | * SelectTopic 表数据库控制层接口 15 | * 16 | */ 17 | public interface ISelectTopicMapper extends BaseMapper { 18 | 19 | 20 | List getTopicByPage(Page page, SelectTopicVo vo); 21 | 22 | List selectAllTopic(); 23 | 24 | List selectByInfo(ImportScoreVo importScoreVo); 25 | 26 | List getTopicByPage(SelectTopicVo vo); 27 | 28 | List countTopicByPage(Page page, SelectTopicVo vo); 29 | 30 | List countTopicByPage(SelectTopicVo vo); 31 | } -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/dao/ISelectUserBaseMapper.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.dao; 2 | 3 | import com.baomidou.mybatisplus.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.plugins.Page; 5 | import com.slxy.www.domain.dto.SelectUserBaseDto; 6 | import com.slxy.www.domain.po.SelectUserBase; 7 | import com.slxy.www.domain.vo.SelectUserBaseVo; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * 13 | * SelectUserBase 表数据库控制层接口 14 | * 15 | */ 16 | public interface ISelectUserBaseMapper extends BaseMapper { 17 | 18 | List getUserByPage(Page page, SelectUserBaseVo vo); 19 | 20 | List selectStuYear(); 21 | 22 | List selectStuMajor(); 23 | 24 | List selectStuClass(); 25 | 26 | List selectTeaDep(); 27 | 28 | } -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/dto/SelectBugLogDto.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.dto; 2 | 3 | import java.util.Date; 4 | 5 | /** 6 | *

7 | * 8 | *

9 | * 10 | * @author zhengql123 11 | * @since 2018-04-03 12 | */ 13 | 14 | public class SelectBugLogDto { 15 | 16 | private Integer id; 17 | private Integer userId; 18 | private String userName; 19 | private String bugTitle; 20 | private String bugContent; 21 | private Date gmtCreate; 22 | 23 | 24 | public Integer getId() { 25 | return id; 26 | } 27 | 28 | public void setId(Integer id) { 29 | this.id = id; 30 | } 31 | 32 | public String getBugTitle() { 33 | return bugTitle; 34 | } 35 | 36 | public void setBugTitle(String bugTitle) { 37 | this.bugTitle = bugTitle; 38 | } 39 | 40 | public String getBugContent() { 41 | return bugContent; 42 | } 43 | 44 | public void setBugContent(String bugContent) { 45 | this.bugContent = bugContent; 46 | } 47 | 48 | public Date getGmtCreate() { 49 | return gmtCreate; 50 | } 51 | 52 | public void setGmtCreate(Date gmtCreate) { 53 | this.gmtCreate = gmtCreate; 54 | } 55 | 56 | public Integer getUserId() { 57 | return userId; 58 | } 59 | 60 | public void setUserId(Integer userId) { 61 | this.userId = userId; 62 | } 63 | 64 | public String getUserName() { 65 | return userName; 66 | } 67 | 68 | public void setUserName(String userName) { 69 | this.userName = userName; 70 | } 71 | 72 | 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/dto/SelectMajorDTO.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.dto; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | *

11 | * 12 | *

13 | * 14 | * @author zhengql 15 | * @since 2018-01-07 16 | */ 17 | @Data 18 | @EqualsAndHashCode(callSuper = false) 19 | @Accessors(chain = true) 20 | public class SelectMajorDTO{ 21 | 22 | 23 | /** 24 | * 专业id 25 | */ 26 | private Integer id; 27 | /** 28 | * 专业名称 29 | */ 30 | private String majName; 31 | /** 32 | * 所属系别 33 | */ 34 | private Integer depId; 35 | /** 36 | * 专业班级数 37 | */ 38 | private Integer majClassNum; 39 | /** 40 | * 专业状态 0禁用,1启用 41 | */ 42 | private Integer majStatus; 43 | /** 44 | * 专业介绍 45 | */ 46 | private String majInfo; 47 | /** 48 | * 创建时间 49 | */ 50 | private Date gmtCreate; 51 | 52 | private Date gmtModify; 53 | 54 | private String depName; 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/po/ChangePs.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.po; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * @author zhengql 7 | * @description 修改密码实体类 8 | * @className ChangePs 9 | * @create 2018年04月15日 16:57 10 | */ 11 | public class ChangePs implements Serializable { 12 | 13 | private Integer userId; 14 | private String userMail; 15 | private String passWord; 16 | private String newPassWord; 17 | private String newPassWord2; 18 | private String userPhone; 19 | private String userQq; 20 | private String sixCode; 21 | 22 | private Integer userType; 23 | private String userCode; 24 | 25 | public String getSixCode() { 26 | return sixCode; 27 | } 28 | 29 | public void setSixCode(String sixCode) { 30 | this.sixCode = sixCode; 31 | } 32 | 33 | public String getUserPhone() { 34 | return userPhone; 35 | } 36 | 37 | public void setUserPhone(String userPhone) { 38 | this.userPhone = userPhone; 39 | } 40 | 41 | public String getUserQq() { 42 | return userQq; 43 | } 44 | 45 | public void setUserQq(String userQq) { 46 | this.userQq = userQq; 47 | } 48 | 49 | public Integer getUserType() { 50 | return userType; 51 | } 52 | 53 | public void setUserType(Integer userType) { 54 | this.userType = userType; 55 | } 56 | 57 | public String getUserCode() { 58 | return userCode; 59 | } 60 | 61 | public void setUserCode(String userCode) { 62 | this.userCode = userCode; 63 | } 64 | 65 | public Integer getUserId() { 66 | return userId; 67 | } 68 | 69 | public void setUserId(Integer userId) { 70 | this.userId = userId; 71 | } 72 | 73 | public String getUserMail() { 74 | return userMail; 75 | } 76 | 77 | public void setUserMail(String userMail) { 78 | this.userMail = userMail; 79 | } 80 | 81 | public String getPassWord() { 82 | return passWord; 83 | } 84 | 85 | public void setPassWord(String passWord) { 86 | this.passWord = passWord; 87 | } 88 | 89 | public String getNewPassWord() { 90 | return newPassWord; 91 | } 92 | 93 | public void setNewPassWord(String newPassWord) { 94 | this.newPassWord = newPassWord; 95 | } 96 | 97 | public String getNewPassWord2() { 98 | return newPassWord2; 99 | } 100 | 101 | public void setNewPassWord2(String newPassWord2) { 102 | this.newPassWord2 = newPassWord2; 103 | } 104 | } 105 | 106 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/po/ExcelBean.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.po; 2 | 3 | 4 | import org.apache.poi.xssf.usermodel.XSSFCellStyle; 5 | 6 | 7 | /** 8 | * @author zhengql 9 | * @description 数据封装 10 | * @className ExcelBean 11 | * @create 2018年03月29日 19:12 12 | */ 13 | 14 | /** 15 | * 16 | * @Description: 导入导出excel 17 | * @author haipeng 18 | * @date 2017年4月11日 19 | */ 20 | public class ExcelBean implements java.io.Serializable { 21 | private String headTextName;//列头(标题)名 22 | private String propertyName;//对应字段名 23 | private Integer cols;//合并单元格数 24 | private XSSFCellStyle cellStyle; 25 | 26 | public ExcelBean(){ 27 | 28 | } 29 | public ExcelBean(String headTextName, String propertyName){ 30 | this.headTextName = headTextName; 31 | this.propertyName = propertyName; 32 | } 33 | 34 | public ExcelBean(String headTextName, String propertyName, Integer cols) { 35 | super(); 36 | this.headTextName = headTextName; 37 | this.propertyName = propertyName; 38 | this.cols = cols; 39 | } 40 | 41 | public String getHeadTextName() { 42 | return headTextName; 43 | } 44 | 45 | public void setHeadTextName(String headTextName) { 46 | this.headTextName = headTextName; 47 | } 48 | 49 | public String getPropertyName() { 50 | return propertyName; 51 | } 52 | 53 | public void setPropertyName(String propertyName) { 54 | this.propertyName = propertyName; 55 | } 56 | 57 | public Integer getCols() { 58 | return cols; 59 | } 60 | 61 | public void setCols(Integer cols) { 62 | this.cols = cols; 63 | } 64 | 65 | public XSSFCellStyle getCellStyle() { 66 | return cellStyle; 67 | } 68 | 69 | public void setCellStyle(XSSFCellStyle cellStyle) { 70 | this.cellStyle = cellStyle; 71 | } 72 | } -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/po/SelectBugLog.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.po; 2 | 3 | import java.io.Serializable; 4 | import java.util.Date; 5 | 6 | import com.baomidou.mybatisplus.annotations.IdType; 7 | 8 | import com.baomidou.mybatisplus.annotations.TableField; 9 | import com.baomidou.mybatisplus.annotations.TableId; 10 | import com.baomidou.mybatisplus.annotations.TableName; 11 | 12 | /** 13 | * 14 | * 15 | * 16 | */ 17 | @TableName("select_bug_log") 18 | public class SelectBugLog implements Serializable { 19 | 20 | @TableField(exist = false) 21 | private static final long serialVersionUID = 1L; 22 | 23 | /** */ 24 | @TableId(type = IdType.AUTO) 25 | private Integer id; 26 | 27 | /** */ 28 | @TableField(value = "user_id") 29 | private Integer userId; 30 | 31 | /** */ 32 | @TableField(value = "bug_title") 33 | private String bugTitle; 34 | 35 | /** */ 36 | @TableField(value = "bug_content") 37 | private String bugContent; 38 | 39 | /** */ 40 | @TableField(value = "gmt_create") 41 | private Date gmtCreate; 42 | 43 | 44 | public Integer getId() { 45 | return this.id; 46 | } 47 | 48 | public SelectBugLog setId(Integer id) { 49 | this.id = id; 50 | return this; 51 | } 52 | 53 | public Integer getUserId() { 54 | return this.userId; 55 | } 56 | 57 | public SelectBugLog setUserId(Integer userId) { 58 | this.userId = userId; 59 | return this; 60 | } 61 | 62 | public String getBugTitle() { 63 | return this.bugTitle; 64 | } 65 | 66 | public SelectBugLog setBugTitle(String bugTitle) { 67 | this.bugTitle = bugTitle; 68 | return this; 69 | } 70 | 71 | public String getBugContent() { 72 | return this.bugContent; 73 | } 74 | 75 | public SelectBugLog setBugContent(String bugContent) { 76 | this.bugContent = bugContent; 77 | return this; 78 | } 79 | 80 | public Date getGmtCreate() { 81 | return this.gmtCreate; 82 | } 83 | 84 | public SelectBugLog setGmtCreate(Date gmtCreate) { 85 | this.gmtCreate = gmtCreate; 86 | return this; 87 | } 88 | 89 | } 90 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/po/SelectDepartment.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.po; 2 | 3 | import java.io.Serializable; 4 | import java.util.Date; 5 | 6 | import com.baomidou.mybatisplus.annotations.IdType; 7 | 8 | import com.baomidou.mybatisplus.annotations.TableField; 9 | import com.baomidou.mybatisplus.annotations.TableId; 10 | import com.baomidou.mybatisplus.annotations.TableName; 11 | 12 | /** 13 | * 14 | * 15 | * 16 | */ 17 | @TableName("select_department") 18 | public class SelectDepartment implements Serializable { 19 | 20 | @TableField(exist = false) 21 | private static final long serialVersionUID = 1L; 22 | 23 | /** 系别id */ 24 | @TableId(type = IdType.AUTO) 25 | private Integer id; 26 | 27 | /** 系别名称 */ 28 | @TableField(value = "dep_name") 29 | private String depName; 30 | 31 | /** 系别介绍 */ 32 | @TableField(value = "dep_info") 33 | private String depInfo; 34 | 35 | /** 系别状态 0禁用,1启用 */ 36 | @TableField(value = "dep_status") 37 | private Integer depStatus; 38 | 39 | /** */ 40 | @TableField(value = "gmt_create") 41 | private Date gmtCreate; 42 | 43 | /** 修改时间 */ 44 | @TableField(value = "gmt_modify") 45 | private Date gmtModify; 46 | 47 | 48 | public Integer getId() { 49 | return this.id; 50 | } 51 | 52 | public SelectDepartment setId(Integer id) { 53 | this.id = id; 54 | return this; 55 | } 56 | 57 | public String getDepName() { 58 | return this.depName; 59 | } 60 | 61 | public SelectDepartment setDepName(String depName) { 62 | this.depName = depName; 63 | return this; 64 | } 65 | 66 | public String getDepInfo() { 67 | return this.depInfo; 68 | } 69 | 70 | public SelectDepartment setDepInfo(String depInfo) { 71 | this.depInfo = depInfo; 72 | return this; 73 | } 74 | 75 | public Integer getDepStatus() { 76 | return this.depStatus; 77 | } 78 | 79 | public SelectDepartment setDepStatus(Integer depStatus) { 80 | this.depStatus = depStatus; 81 | return this; 82 | } 83 | 84 | public Date getGmtCreate() { 85 | return this.gmtCreate; 86 | } 87 | 88 | public SelectDepartment setGmtCreate(Date gmtCreate) { 89 | this.gmtCreate = gmtCreate; 90 | return this; 91 | } 92 | 93 | public Date getGmtModify() { 94 | return this.gmtModify; 95 | } 96 | 97 | public SelectDepartment setGmtModify(Date gmtModify) { 98 | this.gmtModify = gmtModify; 99 | return this; 100 | } 101 | 102 | } 103 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/po/SelectMajor.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.po; 2 | 3 | import java.io.Serializable; 4 | import java.util.Date; 5 | 6 | import com.baomidou.mybatisplus.annotations.IdType; 7 | 8 | import com.baomidou.mybatisplus.annotations.TableField; 9 | import com.baomidou.mybatisplus.annotations.TableId; 10 | import com.baomidou.mybatisplus.annotations.TableName; 11 | 12 | /** 13 | * 14 | * 15 | * 16 | */ 17 | @TableName("select_major") 18 | public class SelectMajor implements Serializable { 19 | 20 | @TableField(exist = false) 21 | private static final long serialVersionUID = 1L; 22 | 23 | /** 专业id */ 24 | @TableId(type = IdType.AUTO) 25 | private Integer id; 26 | 27 | /** 专业名称 */ 28 | @TableField(value = "maj_name") 29 | private String majName; 30 | 31 | /** 所属系别 */ 32 | @TableField(value = "dep_id") 33 | private Integer depId; 34 | 35 | /** 专业班级数 */ 36 | @TableField(value = "maj_class_num") 37 | private Integer majClassNum; 38 | 39 | /** 专业状态 0禁用,1启用 */ 40 | @TableField(value = "maj_status") 41 | private Integer majStatus; 42 | 43 | /** 专业介绍 */ 44 | @TableField(value = "maj_info") 45 | private String majInfo; 46 | 47 | /** 创建时间 */ 48 | @TableField(value = "gmt_create") 49 | private Date gmtCreate; 50 | 51 | /** 修改时间 */ 52 | @TableField(value = "gmt_modify") 53 | private Date gmtModify; 54 | 55 | 56 | public Integer getId() { 57 | return this.id; 58 | } 59 | 60 | public SelectMajor setId(Integer id) { 61 | this.id = id; 62 | return this; 63 | } 64 | 65 | public String getMajName() { 66 | return this.majName; 67 | } 68 | 69 | public SelectMajor setMajName(String majName) { 70 | this.majName = majName; 71 | return this; 72 | } 73 | 74 | public Integer getDepId() { 75 | return this.depId; 76 | } 77 | 78 | public SelectMajor setDepId(Integer depId) { 79 | this.depId = depId; 80 | return this; 81 | } 82 | 83 | public Integer getMajClassNum() { 84 | return this.majClassNum; 85 | } 86 | 87 | public SelectMajor setMajClassNum(Integer majClassNum) { 88 | this.majClassNum = majClassNum; 89 | return this; 90 | } 91 | 92 | public Integer getMajStatus() { 93 | return this.majStatus; 94 | } 95 | 96 | public SelectMajor setMajStatus(Integer majStatus) { 97 | this.majStatus = majStatus; 98 | return this; 99 | } 100 | 101 | public String getMajInfo() { 102 | return this.majInfo; 103 | } 104 | 105 | public SelectMajor setMajInfo(String majInfo) { 106 | this.majInfo = majInfo; 107 | return this; 108 | } 109 | 110 | public Date getGmtCreate() { 111 | return this.gmtCreate; 112 | } 113 | 114 | public SelectMajor setGmtCreate(Date gmtCreate) { 115 | this.gmtCreate = gmtCreate; 116 | return this; 117 | } 118 | 119 | public Date getGmtModify() { 120 | return this.gmtModify; 121 | } 122 | 123 | public SelectMajor setGmtModify(Date gmtModify) { 124 | this.gmtModify = gmtModify; 125 | return this; 126 | } 127 | 128 | } 129 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/po/SelectProcessControl.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.po; 2 | 3 | import java.io.Serializable; 4 | import java.util.Date; 5 | 6 | import com.baomidou.mybatisplus.annotations.IdType; 7 | 8 | import com.baomidou.mybatisplus.annotations.TableField; 9 | import com.baomidou.mybatisplus.annotations.TableId; 10 | import com.baomidou.mybatisplus.annotations.TableName; 11 | 12 | /** 13 | * 14 | * 15 | * 16 | */ 17 | @TableName("select_process_control") 18 | public class SelectProcessControl implements Serializable { 19 | 20 | @TableField(exist = false) 21 | private static final long serialVersionUID = 1L; 22 | 23 | /** 流程id */ 24 | @TableId(type = IdType.AUTO) 25 | private Integer id; 26 | 27 | /** 流程名称 */ 28 | @TableField(value = "pro_name") 29 | private String proName; 30 | 31 | /** 流程开始时间 */ 32 | @TableField(value = "pro_start_time") 33 | private Date proStartTime; 34 | 35 | /** 流程结束时间 */ 36 | @TableField(value = "pro_end_time") 37 | private Date proEndTime; 38 | 39 | /** 创建时间 */ 40 | @TableField(value = "gmt_create") 41 | private Date gmtCreate; 42 | 43 | /** 修改时间 */ 44 | @TableField(value = "gmt_modify") 45 | private Date gmtModify; 46 | 47 | 48 | public Integer getId() { 49 | return this.id; 50 | } 51 | 52 | public SelectProcessControl setId(Integer id) { 53 | this.id = id; 54 | return this; 55 | } 56 | 57 | public String getProName() { 58 | return this.proName; 59 | } 60 | 61 | public SelectProcessControl setProName(String proName) { 62 | this.proName = proName; 63 | return this; 64 | } 65 | 66 | public Date getProStartTime() { 67 | return this.proStartTime; 68 | } 69 | 70 | public SelectProcessControl setProStartTime(Date proStartTime) { 71 | this.proStartTime = proStartTime; 72 | return this; 73 | } 74 | 75 | public Date getProEndTime() { 76 | return this.proEndTime; 77 | } 78 | 79 | public SelectProcessControl setProEndTime(Date proEndTime) { 80 | this.proEndTime = proEndTime; 81 | return this; 82 | } 83 | 84 | public Date getGmtCreate() { 85 | return this.gmtCreate; 86 | } 87 | 88 | public SelectProcessControl setGmtCreate(Date gmtCreate) { 89 | this.gmtCreate = gmtCreate; 90 | return this; 91 | } 92 | 93 | public Date getGmtModify() { 94 | return this.gmtModify; 95 | } 96 | 97 | public SelectProcessControl setGmtModify(Date gmtModify) { 98 | this.gmtModify = gmtModify; 99 | return this; 100 | } 101 | 102 | } 103 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/po/SelectScorePer.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.po; 2 | 3 | import java.io.Serializable; 4 | import java.util.Date; 5 | 6 | import com.baomidou.mybatisplus.annotations.IdType; 7 | 8 | import com.baomidou.mybatisplus.annotations.TableField; 9 | import com.baomidou.mybatisplus.annotations.TableId; 10 | import com.baomidou.mybatisplus.annotations.TableName; 11 | 12 | /** 13 | * 14 | * 15 | * 16 | */ 17 | @TableName("select_score_per") 18 | public class SelectScorePer implements Serializable { 19 | 20 | @TableField(exist = false) 21 | private static final long serialVersionUID = 1L; 22 | 23 | /** */ 24 | @TableId(type = IdType.AUTO) 25 | private Integer id; 26 | 27 | /** 成绩模块 */ 28 | @TableField(value = "score_name") 29 | private String scoreName; 30 | 31 | /** 成绩所占百分比 */ 32 | @TableField(value = "score_per") 33 | private Integer scorePer; 34 | 35 | /** 创建时间 */ 36 | @TableField(value = "gmt_create") 37 | private Date gmtCreate; 38 | 39 | /** 修改时间 */ 40 | @TableField(value = "gmt_modify") 41 | private Date gmtModify; 42 | 43 | 44 | public Integer getId() { 45 | return this.id; 46 | } 47 | 48 | public SelectScorePer setId(Integer id) { 49 | this.id = id; 50 | return this; 51 | } 52 | 53 | public String getScoreName() { 54 | return this.scoreName; 55 | } 56 | 57 | public SelectScorePer setScoreName(String scoreName) { 58 | this.scoreName = scoreName; 59 | return this; 60 | } 61 | 62 | public Integer getScorePer() { 63 | return this.scorePer; 64 | } 65 | 66 | public SelectScorePer setScorePer(Integer scorePer) { 67 | this.scorePer = scorePer; 68 | return this; 69 | } 70 | 71 | public Date getGmtCreate() { 72 | return this.gmtCreate; 73 | } 74 | 75 | public SelectScorePer setGmtCreate(Date gmtCreate) { 76 | this.gmtCreate = gmtCreate; 77 | return this; 78 | } 79 | 80 | public Date getGmtModify() { 81 | return this.gmtModify; 82 | } 83 | 84 | public SelectScorePer setGmtModify(Date gmtModify) { 85 | this.gmtModify = gmtModify; 86 | return this; 87 | } 88 | 89 | } 90 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/vo/ImportScoreVo.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.vo; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @author zhengql 9 | * @description 学生导入类 10 | * @className ImportStuVo 11 | * @create 2018年01月30日 10:18 12 | */ 13 | 14 | @Data 15 | @EqualsAndHashCode 16 | @Accessors 17 | public class ImportScoreVo { 18 | 19 | 20 | /** 21 | * 题目名称 22 | */ 23 | private String subName; 24 | 25 | /** 26 | * 题目id 27 | */ 28 | private Integer subId; 29 | /**. 30 | * 教师名称 31 | */ 32 | private String teaName; 33 | /** 34 | * 学生名称 35 | */ 36 | private String stuName; 37 | /** 38 | * 题目届别 39 | */ 40 | private String subYear; 41 | /** 42 | * 指导老师评分 43 | */ 44 | private Double tutorScore; 45 | /** 46 | * 评阅老师评分 47 | */ 48 | private Double judgeScore; 49 | /** 50 | * 答辩得分 51 | */ 52 | private Double defenceScore; 53 | 54 | } 55 | 56 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/vo/ImportStuVo.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.vo; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @author zhengql 9 | * @description 学生导入类 10 | * @className ImportStuVo 11 | * @create 2018年01月30日 10:18 12 | */ 13 | 14 | @Data 15 | @EqualsAndHashCode 16 | @Accessors 17 | public class ImportStuVo { 18 | 19 | 20 | /** 21 | * 账号 22 | */ 23 | private String userCode; 24 | /** 25 | * 姓名 26 | */ 27 | private String userName; 28 | /** 29 | * 性别 1男,2女 30 | */ 31 | private String userSex; 32 | /** 33 | * 邮箱 34 | */ 35 | private String userMail; 36 | /** 37 | * 电话 38 | */ 39 | private String userPhone; 40 | /** 41 | * qq 42 | */ 43 | private String userQq; 44 | /** 45 | * 学生专业名称 46 | */ 47 | private String stuMajorName; 48 | /** 49 | * 学生班级 50 | */ 51 | private Integer stuClass; 52 | /** 53 | * 学生届别 54 | */ 55 | private String stuYear; 56 | 57 | } 58 | 59 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/vo/ImportTeaVo.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.vo; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @author zhengql 9 | * @description 教师导入类 10 | * @className ImportTeaVo 11 | * @create 2018年01月30日 14:01 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | @Accessors(chain = true) 16 | public class ImportTeaVo { 17 | /** 18 | * 用户id 19 | */ 20 | private Integer id; 21 | /** 22 | * 账号 23 | */ 24 | private String userCode; 25 | /** 26 | * 姓名 27 | */ 28 | private String userName; 29 | /** 30 | * 性别 1男,2女 31 | */ 32 | private String userSex; 33 | /** 34 | * 邮箱 35 | */ 36 | private String userMail; 37 | /** 38 | * 电话 39 | */ 40 | private String userPhone; 41 | /** 42 | * qq 43 | */ 44 | private String userQq; 45 | /** 46 | * 教师职称 1教授,2副教授,3讲师,4助教 47 | */ 48 | private String teaPosition; 49 | /** 50 | * 教师专业名称 51 | */ 52 | private String teaMajorName; 53 | /** 54 | * 教师学历 1博士,2硕士,3本科 55 | */ 56 | private String teaEducation; 57 | /** 58 | * 教师所属系别 59 | */ 60 | private String teaDepName; 61 | } 62 | 63 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/vo/PageVo.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author zhengql 7 | * @description 通用分页查询类 8 | * @className PageVo 9 | * @create 2017年12月12日 14:44 10 | */ 11 | @Data 12 | public class PageVo { 13 | 14 | /** 15 | * 当前页码 16 | */ 17 | private Integer page = 1; 18 | 19 | /** 20 | * 每页数量 21 | */ 22 | private Integer pageSize = 15; 23 | 24 | /** 25 | * 搜索关键词 26 | */ 27 | private String search; 28 | 29 | /** 30 | * 时间开始区间 31 | */ 32 | private String searchBgnTime; 33 | 34 | /** 35 | * 时间结束区间 36 | */ 37 | private String searchEndTime; 38 | 39 | /** 40 | * 按某字段排序 41 | */ 42 | 43 | 44 | } 45 | 46 | 47 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/vo/SelectDepartmentVo.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.vo; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | *

11 | * 12 | *

13 | * 14 | * @author zhengql 15 | * @since 2018-01-07 16 | */ 17 | @Data 18 | @EqualsAndHashCode(callSuper = false) 19 | @Accessors(chain = true) 20 | public class SelectDepartmentVo extends PageVo{ 21 | 22 | 23 | /** 24 | * 系别id 25 | */ 26 | private Integer id; 27 | /** 28 | * 系别名称 29 | */ 30 | private String depName; 31 | /** 32 | * 系别状态 0禁用,1启用 33 | */ 34 | private Integer depStatus; 35 | 36 | /** 37 | * 系别状态 0禁用,1启用 38 | */ 39 | private String depInfo; 40 | 41 | private Date gmtCreate; 42 | 43 | private Date gmtModify; 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/vo/SelectMajorVo.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.vo; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | *

11 | * 12 | *

13 | * 14 | * @author zhengql 15 | * @since 2018-01-07 16 | */ 17 | @Data 18 | @EqualsAndHashCode(callSuper = false) 19 | @Accessors(chain = true) 20 | public class SelectMajorVo extends PageVo { 21 | 22 | 23 | /** 24 | * 专业id 25 | */ 26 | private Integer id; 27 | /** 28 | * 专业名称 29 | */ 30 | private String majName; 31 | /** 32 | * 所属系别 33 | */ 34 | private Integer depId; 35 | /** 36 | * 专业班级数 37 | */ 38 | private Integer majClassNum; 39 | /** 40 | * 专业状态 0禁用,1启用 41 | */ 42 | private Integer majStatus; 43 | 44 | /** 45 | * 专业介绍 46 | */ 47 | private String majInfo; 48 | /** 49 | * 创建时间 50 | */ 51 | private Date gmtCreate; 52 | 53 | private Date gmtModify; 54 | 55 | private String depName; 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/vo/SelectTopicVo.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.vo; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | * @author zhengql 11 | * @description 选题信息vo 12 | * @className SelectTopicVo 13 | * @create 2018年02月04日 13:16 14 | */ 15 | @Data 16 | @EqualsAndHashCode(callSuper = false) 17 | @Accessors(chain = true) 18 | public class SelectTopicVo extends PageVo { 19 | /** 20 | * 选题id 21 | */ 22 | private Integer id; 23 | /** 24 | * 题目id 25 | */ 26 | private Integer subId; 27 | /** 28 | * 教师id 29 | */ 30 | private Integer teaId; 31 | /** 32 | * 学生id 33 | */ 34 | private Integer stuId; 35 | /** 36 | * 学生选择理由 37 | */ 38 | private String stuSelectReason; 39 | /** 40 | * 教师审核状态 0待处理 1审核不通过,2审核通过 41 | */ 42 | private Integer teaAuditState; 43 | /** 44 | * 教师审核理由 45 | */ 46 | private String teaAuditContent; 47 | /** 48 | * 选题年份 49 | */ 50 | private String topicYear; 51 | /*** 52 | * 任务书 53 | */ 54 | private String taskFile; 55 | /** 56 | * 开题报告 57 | */ 58 | private String openingReport; 59 | /** 60 | * 论文 61 | */ 62 | private String dissertation; 63 | /** 64 | * 创建时间 65 | */ 66 | private Date gmtCreate; 67 | /** 68 | * 修改时间 69 | */ 70 | private Date gmtModify; 71 | 72 | /** 73 | * 删除状态 74 | */ 75 | private Integer delState; 76 | 77 | /** 78 | * 指导老师评分 79 | */ 80 | private Double tutorScore; 81 | /** 82 | * 评阅老师评分 83 | */ 84 | private Double judgeScore; 85 | /** 86 | * 答辩得分 87 | */ 88 | private Double defenceScore; 89 | /** 90 | * 最终总得分 91 | */ 92 | private Double finalTotalScore; 93 | 94 | private Integer subState; 95 | 96 | private Integer forDepId; 97 | private Integer majorId; 98 | private Integer stuClass; 99 | 100 | private Integer countType; 101 | 102 | 103 | 104 | 105 | } 106 | 107 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/domain/vo/SelectUserBaseVo.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.domain.vo; 2 | 3 | import com.slxy.www.domain.po.SelectMajor; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.experimental.Accessors; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | *

13 | * 14 | *

15 | * 16 | * @author zhengql 17 | * @since 2018-01-06 18 | */ 19 | @Data 20 | @EqualsAndHashCode(callSuper = false) 21 | @Accessors(chain = true) 22 | public class SelectUserBaseVo extends PageVo { 23 | 24 | /** 25 | * 用户id 26 | */ 27 | private Integer id; 28 | /** 29 | * 账号 30 | */ 31 | private String userCode; 32 | /** 33 | * 密码 34 | */ 35 | private String userPassword; 36 | /** 37 | * 姓名 38 | */ 39 | private String userName; 40 | /** 41 | * 性别 1男,2女 42 | */ 43 | private Integer userSex; 44 | /** 45 | * 邮箱 46 | */ 47 | private String userMail; 48 | /** 49 | * 电话 50 | */ 51 | private String userPhone; 52 | /** 53 | * qq 54 | */ 55 | private String userQq; 56 | /** 57 | * 学生专业名称 58 | */ 59 | private Integer stuMajorId; 60 | /** 61 | * 学生班级 62 | */ 63 | private Integer stuClass; 64 | /** 65 | * 学生届别 66 | */ 67 | private String stuYear; 68 | /** 69 | * 教师职称 1教授,2副教授,3讲师,4助教 70 | */ 71 | private Integer teaPosition; 72 | /** 73 | * 教师专业名称 74 | */ 75 | private String teaMajorName; 76 | /** 77 | * 教师学历 1博士,2硕士,3本科 78 | */ 79 | private Integer teaEducation; 80 | /** 81 | * 教师研究方向 82 | */ 83 | private String teaDirection; 84 | 85 | /** 86 | * 教师所属系别 87 | */ 88 | private Integer teaDepId; 89 | /** 90 | * 教师个人简介 91 | */ 92 | private String teaInfo; 93 | /** 94 | * 用户状态 0禁用,1启用 95 | */ 96 | private Integer userStatus; 97 | /** 98 | * 用户类型 1管理员,2教师,3学生 99 | */ 100 | private Integer userType; 101 | /** 102 | * 操作人员id 103 | */ 104 | private Integer operatorId; 105 | /** 106 | * 创建时间 107 | */ 108 | private Date gmtCreate; 109 | /** 110 | * 修改时间 111 | */ 112 | private Date gmtModify; 113 | 114 | /*** 115 | * 专业id集合 116 | */ 117 | private List majorIds; 118 | 119 | } 120 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/enums/EnumEnOrDis.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.enums; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * @ClassName : EnumEnOrDis 8 | * @Description : 公共启用禁用枚举 9 | * @Author : zhengql@senthink.com 10 | * @CreationDate : 2018年1月7日 下午2:24:25 11 | * @Version : v0.0.1 12 | * 13 | */ 14 | public enum EnumEnOrDis { 15 | DISABLED(0, "禁用"), 16 | ENABLED(1, "启用"), 17 | ; 18 | 19 | private Integer value; 20 | 21 | private String name; 22 | 23 | /** 24 | * 全局索引池 25 | */ 26 | private static Map pool = new HashMap(); 27 | static { 28 | for (EnumEnOrDis et : EnumEnOrDis.values()) { 29 | pool.put(et.value, et); 30 | } 31 | } 32 | 33 | public static Map toMap() { 34 | Map enumDataMap = new HashMap(); 35 | for (EnumEnOrDis type : EnumEnOrDis.values()) { 36 | enumDataMap.put(type.getValue(), type.getName()); 37 | } 38 | return enumDataMap; 39 | } 40 | 41 | /** 42 | * 根据内容索引 43 | * @param value 44 | * @return 45 | */ 46 | public static EnumEnOrDis indexByValue(Integer value) { 47 | return pool.get(value); 48 | } 49 | 50 | private EnumEnOrDis(Integer value, String name) { 51 | this.value = value; 52 | this.name = name; 53 | } 54 | 55 | public Integer getValue() { 56 | return value; 57 | } 58 | 59 | public String getName() { 60 | return name; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/enums/EnumProControl.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.enums; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * @ClassName : EnumProControl 8 | * @Description : 流程枚举 9 | * @Author : zhengql@senthink.com 10 | * @CreationDate : 2018年1月7日 下午2:24:25 11 | * @Version : v0.0.1 12 | * 13 | */ 14 | public enum EnumProControl { 15 | subAdd(1, "上传题目"), 16 | auditSub(2, "审核论文"), 17 | select(3, "学生选题"), 18 | teaAudit(4, "教师审核选题"), 19 | fileUp(5, "学生上传文档"), 20 | scoreCount(6, "成绩评定"), 21 | score(7, "成绩查询"), 22 | ; 23 | 24 | private Integer value; 25 | 26 | private String name; 27 | 28 | /** 29 | * 全局索引池 30 | */ 31 | private static Map pool = new HashMap(); 32 | static { 33 | for (EnumProControl et : EnumProControl.values()) { 34 | pool.put(et.value, et); 35 | } 36 | } 37 | 38 | public static Map toMap() { 39 | Map enumDataMap = new HashMap(); 40 | for (EnumProControl type : EnumProControl.values()) { 41 | enumDataMap.put(type.getValue(), type.getName()); 42 | } 43 | return enumDataMap; 44 | } 45 | 46 | /** 47 | * 根据内容索引 48 | * @param value 49 | * @return 50 | */ 51 | public static EnumProControl indexByValue(Integer value) { 52 | return pool.get(value); 53 | } 54 | 55 | private EnumProControl(Integer value, String name) { 56 | this.value = value; 57 | this.name = name; 58 | } 59 | 60 | public Integer getValue() { 61 | return value; 62 | } 63 | 64 | public String getName() { 65 | return name; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/enums/EnumSubSelectStatus.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.enums; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * @ClassName : EnumSubSelectStatus 8 | * @Description : 论文题目选题状态 0未选 1审核中 2已选, 9 | * @Author : zhengql@senthink.com 10 | * @CreationDate : 2018年1月7日 下午2:24:25 11 | * @Version : v0.0.1 12 | * 13 | */ 14 | public enum EnumSubSelectStatus { 15 | Untreated(0, "未选"), 16 | FAIL(1, "正在审核"), 17 | SUCCESS(2, "已被选"), 18 | OVER(3, "结题"), 19 | ; 20 | 21 | private Integer value; 22 | 23 | private String name; 24 | 25 | /** 26 | * 全局索引池 27 | */ 28 | private static Map pool = new HashMap(); 29 | static { 30 | for (EnumSubSelectStatus et : EnumSubSelectStatus.values()) { 31 | pool.put(et.value, et); 32 | } 33 | } 34 | 35 | public static Map toMap() { 36 | Map enumDataMap = new HashMap(); 37 | for (EnumSubSelectStatus type : EnumSubSelectStatus.values()) { 38 | enumDataMap.put(type.getValue(), type.getName()); 39 | } 40 | return enumDataMap; 41 | } 42 | 43 | /** 44 | * 根据内容索引 45 | * @param value 46 | * @return 47 | */ 48 | public static EnumSubSelectStatus indexByValue(Integer value) { 49 | return pool.get(value); 50 | } 51 | 52 | private EnumSubSelectStatus(Integer value, String name) { 53 | this.value = value; 54 | this.name = name; 55 | } 56 | 57 | public Integer getValue() { 58 | return value; 59 | } 60 | 61 | public String getName() { 62 | return name; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/enums/EnumSubState.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.enums; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * @ClassName : EnumSubState 8 | * @Description : 论文状态枚举 '审核状态 0未处理,1审核不通过,2审核通过', 9 | * @Author : zhengql@senthink.com 10 | * @CreationDate : 2018年1月7日 下午2:24:25 11 | * @Version : v0.0.1 12 | * 13 | */ 14 | public enum EnumSubState { 15 | Untreated(0, "未处理"), 16 | FAIL(1, "审核不通过"), 17 | SUCCESS(2, "审核通过"), 18 | OVER(3, "结题"), 19 | ; 20 | 21 | private Integer value; 22 | 23 | private String name; 24 | 25 | /** 26 | * 全局索引池 27 | */ 28 | private static Map pool = new HashMap(); 29 | static { 30 | for (EnumSubState et : EnumSubState.values()) { 31 | pool.put(et.value, et); 32 | } 33 | } 34 | 35 | public static Map toMap() { 36 | Map enumDataMap = new HashMap(); 37 | for (EnumSubState type : EnumSubState.values()) { 38 | enumDataMap.put(type.getValue(), type.getName()); 39 | } 40 | return enumDataMap; 41 | } 42 | 43 | /** 44 | * 根据内容索引 45 | * @param value 46 | * @return 47 | */ 48 | public static EnumSubState indexByValue(Integer value) { 49 | return pool.get(value); 50 | } 51 | 52 | private EnumSubState(Integer value, String name) { 53 | this.value = value; 54 | this.name = name; 55 | } 56 | 57 | public Integer getValue() { 58 | return value; 59 | } 60 | 61 | public String getName() { 62 | return name; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/enums/EnumSubType.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.enums; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * @ClassName : EnumSubType 8 | * @Description : 题目类型,1应用型,2理论性' 9 | * @Author : zhengql@senthink.com 10 | * @CreationDate : 2018年1月7日 下午2:24:25 11 | * @Version : v0.0.1 12 | * 13 | */ 14 | public enum EnumSubType { 15 | APPLIED(1, "应用型"), 16 | THEORY(2, "理论性"), 17 | ; 18 | 19 | private Integer value; 20 | 21 | private String name; 22 | 23 | /** 24 | * 全局索引池 25 | */ 26 | private static Map pool = new HashMap(); 27 | static { 28 | for (EnumSubType et : EnumSubType.values()) { 29 | pool.put(et.value, et); 30 | } 31 | } 32 | 33 | public static Map toMap() { 34 | Map enumDataMap = new HashMap(); 35 | for (EnumSubType type : EnumSubType.values()) { 36 | enumDataMap.put(type.getValue(), type.getName()); 37 | } 38 | return enumDataMap; 39 | } 40 | 41 | /** 42 | * 根据内容索引 43 | * @param value 44 | * @return 45 | */ 46 | public static EnumSubType indexByValue(Integer value) { 47 | return pool.get(value); 48 | } 49 | 50 | private EnumSubType(Integer value, String name) { 51 | this.value = value; 52 | this.name = name; 53 | } 54 | 55 | public Integer getValue() { 56 | return value; 57 | } 58 | 59 | public String getName() { 60 | return name; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/enums/EnumTeaEducation.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.enums; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * @ClassName : EnumTeaEducation 8 | * @Description : 教师职称枚举类 9 | * @Author : zhengql@senthink.com 10 | * @CreationDate : 2018年1月7日 下午2:24:25 11 | * @Version : v0.0.1 12 | * 13 | */ 14 | public enum EnumTeaEducation { 15 | DG(1, "博士"), 16 | MD(2, "硕士"), 17 | BA(3, "学士"), 18 | ; 19 | 20 | private Integer value; 21 | 22 | private String name; 23 | 24 | /** 25 | * 全局索引池 26 | */ 27 | private static Map pool = new HashMap(); 28 | static { 29 | for (EnumTeaEducation et : EnumTeaEducation.values()) { 30 | pool.put(et.value, et); 31 | } 32 | } 33 | 34 | public static Map toMap() { 35 | Map enumDataMap = new HashMap(); 36 | for (EnumTeaEducation type : EnumTeaEducation.values()) { 37 | enumDataMap.put(type.getValue(), type.getName()); 38 | } 39 | return enumDataMap; 40 | } 41 | public static Map toMap2() { 42 | Map enumDataMap = new HashMap(); 43 | for (EnumTeaEducation type : EnumTeaEducation.values()) { 44 | enumDataMap.put( type.getName(),type.getValue()); 45 | } 46 | return enumDataMap; 47 | } 48 | 49 | /** 50 | * 根据内容索引 51 | * @param value 52 | * @return 53 | */ 54 | public static EnumTeaEducation indexByValue(Integer value) { 55 | return pool.get(value); 56 | } 57 | 58 | private EnumTeaEducation(Integer value, String name) { 59 | this.value = value; 60 | this.name = name; 61 | } 62 | 63 | public Integer getValue() { 64 | return value; 65 | } 66 | 67 | public String getName() { 68 | return name; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/enums/EnumTeaPosition.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.enums; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * @ClassName : EnumTeaPosition 8 | * @Description : 教师学历枚举类 9 | * @Author : zhengql@senthink.com 10 | * @CreationDate : 2018年1月7日 下午2:24:25 11 | * @Version : v0.0.1 12 | * 13 | */ 14 | public enum EnumTeaPosition { 15 | professor(1, "教授"), 16 | professors(2, "副教授"), 17 | lecturers(3, "讲师"), 18 | assistants(4, "助教"), 19 | ; 20 | 21 | private Integer value; 22 | 23 | private String name; 24 | 25 | /** 26 | * 全局索引池 27 | */ 28 | private static Map pool = new HashMap(); 29 | static { 30 | for (EnumTeaPosition et : EnumTeaPosition.values()) { 31 | pool.put(et.value, et); 32 | } 33 | } 34 | 35 | public static Map toMap() { 36 | Map enumDataMap = new HashMap(); 37 | for (EnumTeaPosition type : EnumTeaPosition.values()) { 38 | enumDataMap.put(type.getValue(), type.getName()); 39 | } 40 | return enumDataMap; 41 | } 42 | public static Map toMap2() { 43 | Map enumDataMap = new HashMap(); 44 | for (EnumTeaPosition type : EnumTeaPosition.values()) { 45 | enumDataMap.put( type.getName(),type.getValue()); 46 | } 47 | return enumDataMap; 48 | } 49 | 50 | /** 51 | * 根据内容索引 52 | * @param value 53 | * @return 54 | */ 55 | public static EnumTeaPosition indexByValue(Integer value) { 56 | return pool.get(value); 57 | } 58 | 59 | private EnumTeaPosition(Integer value, String name) { 60 | this.value = value; 61 | this.name = name; 62 | } 63 | 64 | public Integer getValue() { 65 | return value; 66 | } 67 | 68 | public String getName() { 69 | return name; 70 | } 71 | 72 | 73 | 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/enums/EnumUserSex.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.enums; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * @ClassName : EnumUserSex 8 | * @Description : 用户性别枚举类 9 | * @Author : zhengql@senthink.com 10 | * @CreationDate : 2018年1月7日 下午2:24:25 11 | * @Version : v0.0.1 12 | * 13 | */ 14 | public enum EnumUserSex { 15 | male(1, "男"), 16 | female(2, "女"), 17 | ; 18 | 19 | private Integer value; 20 | 21 | private String name; 22 | 23 | /** 24 | * 全局索引池 25 | */ 26 | private static Map pool = new HashMap(); 27 | static { 28 | for (EnumUserSex et : EnumUserSex.values()) { 29 | pool.put(et.value, et); 30 | } 31 | } 32 | 33 | public static Map toMap() { 34 | Map enumDataMap = new HashMap(); 35 | for (EnumUserSex type : EnumUserSex.values()) { 36 | enumDataMap.put(type.getValue(), type.getName()); 37 | } 38 | return enumDataMap; 39 | } 40 | 41 | public static Map toMap2() { 42 | Map enumDataMap = new HashMap(); 43 | for (EnumUserSex type : EnumUserSex.values()) { 44 | enumDataMap.put( type.getName(),type.getValue()); 45 | } 46 | return enumDataMap; 47 | } 48 | 49 | /** 50 | * 根据内容索引 51 | * @param value 52 | * @return 53 | */ 54 | public static EnumUserSex indexByValue(Integer value) { 55 | return pool.get(value); 56 | } 57 | 58 | private EnumUserSex(Integer value, String name) { 59 | this.value = value; 60 | this.name = name; 61 | } 62 | 63 | public Integer getValue() { 64 | return value; 65 | } 66 | 67 | public String getName() { 68 | return name; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/enums/EnumUserType.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.enums; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * @ClassName : EnumUserType 8 | * @Description : 用户类型枚举类 9 | * @Author : zhengql@senthink.com 10 | * @CreationDate : 2018年1月7日 下午2:24:25 11 | * @Version : v0.0.1 12 | * 13 | */ 14 | public enum EnumUserType { 15 | ADMIN0(0, "超级管理员"), 16 | ADMIN(1, "管理员"), 17 | TEACHER(2, "教师"), 18 | STUDENT(3, "学生"), 19 | ; 20 | 21 | private Integer value; 22 | 23 | private String name; 24 | 25 | /** 26 | * 全局索引池 27 | */ 28 | private static Map pool = new HashMap(); 29 | static { 30 | for (EnumUserType et : EnumUserType.values()) { 31 | pool.put(et.value, et); 32 | } 33 | } 34 | 35 | public static Map toMap() { 36 | Map enumDataMap = new HashMap(); 37 | for (EnumUserType type : EnumUserType.values()) { 38 | enumDataMap.put(type.getValue(), type.getName()); 39 | } 40 | return enumDataMap; 41 | } 42 | 43 | /** 44 | * 根据内容索引 45 | * @param value 46 | * @return 47 | */ 48 | public static EnumUserType indexByValue(Integer value) { 49 | return pool.get(value); 50 | } 51 | 52 | private EnumUserType(Integer value, String name) { 53 | this.value = value; 54 | this.name = name; 55 | } 56 | 57 | public Integer getValue() { 58 | return value; 59 | } 60 | 61 | public String getName() { 62 | return name; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/enums/EnumYesOrNo.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.enums; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * @ClassName : EnumYesOrNo 8 | * @Description : 公用是否枚举 9 | * @Author : Jason@senthink.com 10 | * @CreationDate : 2015年9月18日 下午2:24:25 11 | * @Version : v0.0.1 12 | * 13 | */ 14 | public enum EnumYesOrNo { 15 | NO(0, "否"), 16 | YES(1, "是"), 17 | ; 18 | 19 | private Integer value; 20 | 21 | private String name; 22 | 23 | /** 24 | * 全局索引池 25 | */ 26 | private static Map pool = new HashMap(); 27 | static { 28 | for (EnumYesOrNo et : EnumYesOrNo.values()) { 29 | pool.put(et.value, et); 30 | } 31 | } 32 | 33 | public static Map toMap() { 34 | Map enumDataMap = new HashMap(); 35 | for (EnumYesOrNo type : EnumYesOrNo.values()) { 36 | enumDataMap.put(type.getValue(), type.getName()); 37 | } 38 | return enumDataMap; 39 | } 40 | 41 | /** 42 | * 根据内容索引 43 | * @param value 44 | * @return 45 | */ 46 | public static EnumYesOrNo indexByValue(Integer value) { 47 | return pool.get(value); 48 | } 49 | 50 | private EnumYesOrNo(Integer value, String name) { 51 | this.value = value; 52 | this.name = name; 53 | } 54 | 55 | public Integer getValue() { 56 | return value; 57 | } 58 | 59 | public String getName() { 60 | return name; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/filter/LoginRequired.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.filter; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * @author zhengql 7 | * @description 自定义注解拦截器 8 | * @className LoginRequired 9 | * @create 2018年04月02日 15:00 10 | */ 11 | @Target({ElementType.TYPE, ElementType.METHOD}) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Inherited 14 | @Documented 15 | public @interface LoginRequired { 16 | String value() default ""; 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/filter/ParameterRequestWrapper.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.filter; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import javax.servlet.http.HttpServletRequestWrapper; 5 | import java.util.Enumeration; 6 | import java.util.Map; 7 | import java.util.Vector; 8 | 9 | /** 10 | * @author zhengql 11 | * @description 12 | * @className ParameterRequestWrapper 13 | * @create 2018年04月02日 14:03 14 | */ 15 | public class ParameterRequestWrapper extends HttpServletRequestWrapper { 16 | private Map params; 17 | 18 | public ParameterRequestWrapper(HttpServletRequest request, Map newParams) { 19 | super(request); 20 | this.params = newParams; 21 | } 22 | 23 | public Map getParameterMap() { 24 | return this.params; 25 | } 26 | 27 | public Enumeration getParameterNames() { 28 | Vector l = new Vector(this.params.keySet()); 29 | return l.elements(); 30 | } 31 | 32 | public String[] getParameterValues(String name) { 33 | Object v = this.params.get(name); 34 | if (v == null) 35 | return null; 36 | if (v instanceof String[]) 37 | return (String[]) v; 38 | if (v instanceof String) { 39 | return new String[] { (String) v }; 40 | } 41 | return new String[] { v.toString() }; 42 | } 43 | 44 | public String getParameter(String name) { 45 | Object v = this.params.get(name); 46 | if (v == null) 47 | return null; 48 | if (v instanceof String[]) { 49 | String[] strArr = (String[]) v; 50 | if (strArr.length > 0) { 51 | return strArr[0]; 52 | } 53 | return null; 54 | } 55 | if (v instanceof String) { 56 | return (String) v; 57 | } 58 | return v.toString(); 59 | } 60 | } 61 | 62 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/filter/ParameterTrimFilter.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.filter; 2 | 3 | import javax.servlet.*; 4 | import javax.servlet.http.HttpServletRequest; 5 | import java.io.IOException; 6 | import java.util.HashMap; 7 | import java.util.Map.Entry; 8 | import java.util.Set; 9 | 10 | /** 11 | * @author zhengql 12 | * @description 参数空格过滤 请求参数值空格过滤器(去除前后空格) 13 | * @className ParameterTrimFilter 14 | * @create 2018年04月02日 14:00 15 | */ 16 | public class ParameterTrimFilter implements Filter { 17 | public void init(FilterConfig filterconfig) throws ServletException { 18 | } 19 | 20 | public void destroy() { 21 | } 22 | 23 | public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, 24 | ServletException { 25 | HttpServletRequest req = (HttpServletRequest) request; 26 | HashMap map = new HashMap(request.getParameterMap()); 27 | if (map != null && map.size() > 0) { 28 | Set entrySet = map.entrySet(); 29 | // 遍历,参数值去空格 30 | for (Entry entry : entrySet) { 31 | Object key = entry.getKey(); 32 | Object value = entry.getValue(); 33 | if (value instanceof String[]) { 34 | String[] valueArray = (String[]) value; 35 | for (int i = 0; i < valueArray.length; ++i) { 36 | // 去空格 37 | valueArray[i] = valueArray[i].trim(); 38 | } 39 | map.put(key, valueArray); 40 | } 41 | } 42 | } 43 | 44 | // 类型转换 45 | ParameterRequestWrapper wrapRequest = new ParameterRequestWrapper(req, map); 46 | request = wrapRequest; 47 | chain.doFilter(request, response); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/filter/WebLogAspect.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.filter; 2 | 3 | import org.aspectj.lang.JoinPoint; 4 | import org.aspectj.lang.annotation.AfterReturning; 5 | import org.aspectj.lang.annotation.Aspect; 6 | import org.aspectj.lang.annotation.Before; 7 | import org.aspectj.lang.annotation.Pointcut; 8 | import org.slf4j.Logger; 9 | import org.slf4j.LoggerFactory; 10 | import org.springframework.core.annotation.Order; 11 | import org.springframework.stereotype.Component; 12 | import org.springframework.web.context.request.RequestContextHolder; 13 | import org.springframework.web.context.request.ServletRequestAttributes; 14 | 15 | import javax.servlet.http.HttpServletRequest; 16 | import java.util.Arrays; 17 | 18 | /** 19 | * 接口拦截器 20 | * 21 | * @author 应用三组 22 | * @version 1.0.1 23 | * @date 2016/11/7 24 | */ 25 | @Aspect 26 | @Order(5) 27 | @Component 28 | public class WebLogAspect { 29 | 30 | private Logger logger = LoggerFactory.getLogger(WebLogAspect.class); 31 | 32 | /** 33 | * 在WebLogAspect切面中定义一个成员变量来给doBefore和doAfterReturning一起访问会有同步问题,所以引入ThreadLocal对象 34 | */ 35 | private ThreadLocal startTime = new ThreadLocal<>(); 36 | 37 | @Pointcut("execution(public * com.slxy.www.web..*.*(..))") 38 | public void webLog() { 39 | } 40 | 41 | @Before("webLog()") 42 | public void doBefore(JoinPoint joinPoint) throws Throwable { 43 | startTime.set(System.currentTimeMillis()); 44 | 45 | //接收到请求,记录请求内容 46 | ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); 47 | HttpServletRequest request = attributes.getRequest(); 48 | 49 | //记录下请求内容 50 | logger.info("URL : " + request.getRequestURL().toString()); 51 | logger.info("HTTP_METHOD : " + request.getMethod()); 52 | logger.info("IP : " + request.getRemoteAddr()); 53 | logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName()); 54 | logger.info("ARGS : " + Arrays.toString(joinPoint.getArgs())); 55 | } 56 | 57 | @AfterReturning(returning = "ret", pointcut = "webLog()") 58 | public void doAfterReturning(Object ret) throws Throwable { 59 | //处理完请求,返回内容 60 | logger.info("RESPONSE : " + ret); 61 | logger.info("SPEND TIME : " + (System.currentTimeMillis() - startTime.get())); 62 | startTime.remove(); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/service/SelectBugLogService.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.slxy.www.dao.ISelectBugLogMapper; 6 | import com.slxy.www.domain.po.SelectBugLog; 7 | import com.baomidou.framework.service.impl.ServiceImpl; 8 | 9 | /** 10 | * 11 | * SelectBugLog 表数据服务层接口实现类 12 | * 13 | */ 14 | @Service 15 | public class SelectBugLogService extends ServiceImpl { 16 | 17 | 18 | } -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/service/SelectProcessControlService.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.service; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 5 | import com.slxy.www.common.Constant; 6 | import com.slxy.www.config.AutoFinishSelect; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | import com.slxy.www.dao.ISelectProcessControlMapper; 11 | import com.slxy.www.domain.po.SelectProcessControl; 12 | import com.baomidou.framework.service.impl.ServiceImpl; 13 | import org.springframework.util.CollectionUtils; 14 | import org.springframework.util.ObjectUtils; 15 | import org.springframework.web.servlet.ModelAndView; 16 | 17 | import java.util.Collection; 18 | import java.util.List; 19 | 20 | /** 21 | * 22 | * SelectProcessControl 表数据服务层接口实现类 23 | * 24 | */ 25 | @Service 26 | public class SelectProcessControlService extends ServiceImpl { 27 | @Autowired 28 | private ISelectProcessControlMapper selectProcessControlMapper; 29 | 30 | @Autowired 31 | private AutoFinishSelect autoFinishSelect; 32 | /*** 33 | * 查询流程列表 34 | * @param modelAndView 35 | * @return 36 | */ 37 | 38 | public ModelAndView pcList(ModelAndView modelAndView) { 39 | List processControls = selectList(new EntityWrapper()); 40 | modelAndView.addObject("pcList",processControls); 41 | return modelAndView; 42 | } 43 | 44 | /*** 45 | * 修改流程时间 46 | * @param selectProcessControl 47 | * @return 48 | */ 49 | 50 | public String updatePc(SelectProcessControl selectProcessControl) { 51 | SelectProcessControl processControl = this.selectById(selectProcessControl.getId()); 52 | if (ObjectUtils.isEmpty(processControl)){ 53 | return JSONObject.toJSONString(Constant.PARAM_ERROR); 54 | } 55 | if (ObjectUtils.isEmpty(selectProcessControl.getProStartTime())||ObjectUtils.isEmpty(selectProcessControl.getProEndTime())){ 56 | return JSONObject.toJSONString(Constant.PARAM_ERROR); 57 | } 58 | if (selectProcessControl.getId().equals(6)){ 59 | autoFinishSelect.update(selectProcessControl.getProEndTime()); 60 | } 61 | return this.updateById(selectProcessControl)? JSONObject.toJSONString(Constant.SUCCESS):JSONObject.toJSONString(Constant.ERROR); 62 | } 63 | 64 | /*** 65 | * 流程检测 66 | * @param id 67 | * @return 68 | */ 69 | public String testPc(Integer id) { 70 | //取消流程控制 71 | // return JSONObject.toJSONString(Constant.SUCCESS); 72 | //流程控制执行逻辑 73 | List selectProcessControls = selectProcessControlMapper.selectPro(); 74 | if (CollectionUtils.isEmpty(selectProcessControls)){ 75 | return JSONObject.toJSONString(Constant.NOT_TIME); 76 | } 77 | for (SelectProcessControl pc: selectProcessControls 78 | ) { 79 | if (pc.getId().equals(id)){ 80 | return JSONObject.toJSONString(Constant.SUCCESS); 81 | } 82 | } 83 | 84 | return JSONObject.toJSONString(Constant.NOT_TIME); 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/service/SelectScorePerService.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.service; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 5 | import com.slxy.www.common.Constant; 6 | import org.springframework.stereotype.Service; 7 | 8 | import com.slxy.www.dao.ISelectScorePerMapper; 9 | import com.slxy.www.domain.po.SelectScorePer; 10 | import com.baomidou.framework.service.impl.ServiceImpl; 11 | import org.springframework.util.ObjectUtils; 12 | import org.springframework.web.servlet.ModelAndView; 13 | 14 | import java.util.Arrays; 15 | import java.util.Date; 16 | import java.util.List; 17 | 18 | /** 19 | * 20 | * SelectScorePer 表数据服务层接口实现类 21 | * 22 | */ 23 | @Service 24 | public class SelectScorePerService extends ServiceImpl { 25 | 26 | /*** 27 | * 成绩比例列表 28 | * @param modelAndView 29 | * @return 30 | */ 31 | 32 | public ModelAndView scoreList(ModelAndView modelAndView) { 33 | List selectScorePers = this.selectList(new EntityWrapper()); 34 | modelAndView.addObject("scoreList",selectScorePers); 35 | return modelAndView; 36 | } 37 | 38 | 39 | 40 | public String delScore(int i) { 41 | return this.deleteById(i) ? JSONObject.toJSONString(Constant.SUCCESS) : JSONObject.toJSONString(Constant.ERROR); 42 | } 43 | 44 | 45 | public String delAllScore(Integer[] selectedIDs) { 46 | return this.deleteBatchIds(Arrays.asList(selectedIDs))? JSONObject.toJSONString(Constant.SUCCESS):JSONObject.toJSONString(Constant.ERROR); 47 | } 48 | 49 | 50 | public String updateScore(SelectScorePer selectScorePer) { 51 | return this.updateById(selectScorePer) ? JSONObject.toJSONString(Constant.SUCCESS) : JSONObject.toJSONString(Constant.ERROR); 52 | } 53 | 54 | 55 | public String addScore(SelectScorePer selectScorePer) { 56 | SelectScorePer scorePer = this.selectOne(new EntityWrapper<>(new SelectScorePer().setScoreName(selectScorePer.getScoreName()))); 57 | if (!ObjectUtils.isEmpty(scorePer)){ 58 | return JSONObject.toJSONString(Constant.SCORE_INSERT_NAME_REPEAT); 59 | } 60 | selectScorePer.setGmtCreate(new Date()); 61 | return this.insert(selectScorePer)?JSONObject.toJSONString(Constant.SUCCESS) : JSONObject.toJSONString(Constant.ERROR); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/web/SelectBugLogController.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.web; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.slxy.www.common.Constant; 5 | import com.slxy.www.dao.ISelectBugLogMapper; 6 | import com.slxy.www.domain.dto.SelectBugLogDto; 7 | import com.slxy.www.domain.po.SelectBugLog; 8 | import io.swagger.annotations.Api; 9 | import io.swagger.annotations.ApiOperation; 10 | import org.springframework.beans.factory.annotation.Autowired; 11 | import org.springframework.stereotype.Controller; 12 | import org.springframework.web.bind.annotation.*; 13 | import org.springframework.web.servlet.ModelAndView; 14 | 15 | import java.util.Date; 16 | import java.util.List; 17 | 18 | /** 19 | * 20 | * SelectBugLog 控制层 21 | * 22 | */ 23 | 24 | /** 25 | *

26 | * 前端控制器 27 | *

28 | * 29 | * @author zhengql123 30 | * @since 2018-04-03 31 | */ 32 | @Controller 33 | @RequestMapping("/selectBugLog") 34 | @Api(tags = "bug管理", description = "bug页面功能") 35 | public class SelectBugLogController { 36 | @Autowired 37 | private ISelectBugLogMapper selectBugLogMapper; 38 | 39 | 40 | 41 | /** 42 | * 初始化bug列表 43 | * @param modelAndView 44 | * @return 45 | */ 46 | @ApiOperation(value = "初始化bug列表", notes = "") 47 | @RequestMapping(value = "/bugInitList",method = RequestMethod.GET) 48 | public ModelAndView bugList(ModelAndView modelAndView) { 49 | List bugLog = selectBugLogMapper.selectTenLog(); 50 | modelAndView.addObject("bugList",bugLog); 51 | modelAndView.setViewName("bugModule/bugList"); 52 | return modelAndView; 53 | } 54 | 55 | /** 56 | * 添加bug 57 | * @param selectBugLog 58 | * @return 59 | */ 60 | @ApiOperation(value = "添加bug", notes = "") 61 | @RequestMapping(value = "/bugAdd",method = RequestMethod.POST) 62 | @ResponseBody 63 | public String bugAdd(SelectBugLog selectBugLog) { 64 | selectBugLog.setGmtCreate(new Date()); 65 | return selectBugLogMapper.insert(selectBugLog)>0 ? JSONObject.toJSONString(Constant.SUCCESS):JSONObject.toJSONString(Constant.ERROR); 66 | } 67 | } 68 | 69 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/web/SelectJavaMailController.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.web; 2 | 3 | import com.slxy.www.service.SelectJavaMailService; 4 | import io.swagger.annotations.Api; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Controller; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RequestMethod; 9 | 10 | import java.text.SimpleDateFormat; 11 | import java.util.Date; 12 | 13 | 14 | /** 15 | * @author zhengql 16 | * @description 邮件 17 | * @className SelectJavaMailController 18 | * @create 2018年04月16日 9:25 19 | */ 20 | @Controller 21 | @Api(tags = "邮件管理", description = "邮件模块功能") 22 | public class SelectJavaMailController { 23 | @Autowired 24 | private SelectJavaMailService selectJavaMailService; 25 | 26 | @RequestMapping(value = "/sendMail1",method = RequestMethod.GET) 27 | public void send1(String to,String subject,String content){ 28 | selectJavaMailService.sendSimpleMail(to,subject,content); 29 | } 30 | 31 | @RequestMapping(value = "/sendHtmlMail1",method = RequestMethod.GET) 32 | public void send2(String to,String name,String passWord){ 33 | selectJavaMailService.sendHtmlMail(to,name,passWord,"密码重置"); 34 | } 35 | 36 | } 37 | 38 | -------------------------------------------------------------------------------- /src/main/java/com/slxy/www/web/SelectProcessControlController.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.web; 2 | 3 | import com.slxy.www.domain.po.SelectProcessControl; 4 | import com.slxy.www.filter.LoginRequired; 5 | import com.slxy.www.service.SelectProcessControlService; 6 | import io.swagger.annotations.Api; 7 | import io.swagger.annotations.ApiOperation; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Controller; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RequestMethod; 12 | import org.springframework.web.bind.annotation.ResponseBody; 13 | import org.springframework.web.bind.annotation.RestController; 14 | import org.springframework.web.servlet.ModelAndView; 15 | 16 | /** 17 | * 18 | * SelectProcessControl 控制层 19 | * 20 | */ 21 | 22 | /** 23 | *

24 | * 前端控制器 25 | *

26 | * 27 | * @author zhengql123 28 | * @since 2018-03-27 29 | */ 30 | @Controller 31 | @RequestMapping("/selectProcessControl") 32 | @Api(tags = "流程控制管理", description = "流程控制模块功能") 33 | public class SelectProcessControlController { 34 | @Autowired 35 | private SelectProcessControlService selectProcessControlService; 36 | 37 | 38 | /*** 39 | *流程控制列表 40 | * @param modelAndView 41 | * @return 42 | */ 43 | @ApiOperation(value = "流程控制列表", notes = "") 44 | @RequestMapping(value = "/pcList",method = RequestMethod.GET) 45 | public ModelAndView pcList(ModelAndView modelAndView) { 46 | modelAndView.setViewName("pcModule/pcList"); 47 | return selectProcessControlService.pcList(modelAndView); 48 | } 49 | 50 | 51 | /*** 52 | *更新流程控制 53 | * @param selectProcessControl 54 | * @return 55 | */ 56 | @ApiOperation(value = "更新流程", notes = "") 57 | @LoginRequired(value = "adm") 58 | @RequestMapping(value = "/updatePc",method = RequestMethod.POST) 59 | @ResponseBody 60 | public String updatePc(SelectProcessControl selectProcessControl) { 61 | return selectProcessControlService.updatePc(selectProcessControl); 62 | } 63 | 64 | @ApiOperation(value = "流程检测", notes = "") 65 | @RequestMapping(value = "/testPc",method = RequestMethod.POST) 66 | @ResponseBody 67 | public String testPc(Integer id) { 68 | return selectProcessControlService.testPc(id); 69 | } 70 | } 71 | 72 | -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | #logging.level.org.springframework=WARN 2 | #logging.level.com.slxy.www.dao=DEBUG 3 | #logging.file=logs/spring-boot-logging.log 4 | 5 | #邮件配置 6 | spring.mail.host= smtp.163.com 7 | spring.mail.username=13108018752@163.com 8 | spring.mail.password=zql123456 9 | #spring.mail.default-encoding=UTF-8 10 | #登录服务器是否需要认证 11 | spring.mail.properties.mail.smtp.auth=true 12 | #SSL证书Socket工厂 13 | spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory 14 | #使用SMTPS协议465端口 15 | spring.mail.properties.mail.smtp.socketFactory.port=465 16 | 17 | #https配置 18 | #server.ssl.key-store=server.keystore 19 | #server.ssl.key-alias=ssl 20 | #server.ssl.enabled=true 21 | #server.ssl.key-store-password=123456 22 | #server.ssl.key-store-type=JKS 23 | 24 | 25 | #logging.level.org.springframework=WARN 26 | #logging.level.com.slxy.www.dao=DEBUG 27 | #logging.file=logs/spring-boot-logging.log#logging.level.org.springframework=WARN 28 | ##logging.level.com.slxy.www.dao=DEBUG 29 | ##logging.file=logs/spring-boot-logging.log#logging.level.org.springframework=WARN 30 | ##logging.level.com.slxy.www.dao=DEBUG 31 | ##logging.file=logs/spring-boot-logging.log#logging.level.org.springframework=WARN 32 | ##logging.level.com.slxy.www.dao=DEBUG 33 | ##logging.file=logs/spring-boot-logging.log#logging.level.org.springframework=WARN 34 | ##logging.level.com.slxy.www.dao=DEBUG 35 | ##logging.file=logs/spring-boot-logging.log#logging.level.org.springframework=WARN 36 | ##logging.level.com.slxy.www.dao=DEBUG 37 | ##logging.file=logs/spring-boot-logging.log -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8088 3 | #session过期时间10分钟 4 | session: 5 | timeout: 600 6 | tomcat: 7 | uri-encoding: UTF-8 8 | spring: 9 | datasource: 10 | url: jdbc:mysql://127.0.0.1:3306/slxy-select?useUnicode=true&characterEncoding=UTF-8 11 | username: root 12 | password: 123456 #本地mysql-----------------------务必改成你本地的mysql密码,否则无法启动 13 | # password: root #云服务器mysql 14 | driver-class-name: com.mysql.jdbc.Driver 15 | sql-script-encoding: UTF-8 16 | type: com.alibaba.druid.pool.DruidDataSource 17 | druid: 18 | initial-size: 20 19 | max-active: 100 20 | min-idle: 20 21 | max-wait: 60000 22 | pool-prepared-statements: false 23 | max-open-prepared-statements: 20 24 | validation-query: SELECT 'x' 25 | test-on-borrow: false 26 | test-on-return: false 27 | test-while-idle: true 28 | time-between-eviction-runs-millis: 60000 29 | min-evictable-idle-time-millis: 300000 30 | use-global-data-source-stat: true 31 | filters: stat,wall,log4j 32 | filter: 33 | stat: 34 | enabled: true 35 | db-type: mysql 36 | merge-sql: true 37 | log-slow-sql: true 38 | slow-sql-millis: 500 39 | 40 | mvc: 41 | view: 42 | suffix: .jsp 43 | prefix: /WEB-INF/pages/ 44 | 45 | # 文件上传大小限制 46 | http: 47 | multipart: 48 | max-file-size: 10MB 49 | max-request-size: 10MB 50 | enabled: true 51 | encoding: 52 | charset: UTF-8 53 | force: true 54 | enabled: true 55 | 56 | #热部署生效 57 | devtools: 58 | restart: 59 | enabled: true 60 | #设置重启的目录 61 | # additional-paths: src/main/java 62 | #classpath目录下的WEB-INF文件夹内容修改不重启 63 | exclude: WEB-INF/** 64 | # mail: 65 | # host: smtp.163.com 66 | # username: 13108018752@163.com 67 | # password: zql123456 68 | # properties: 69 | # mail: 70 | # smtp: 71 | # auth: true 72 | # starttls: 73 | # enable: true 74 | # required: true 75 | # port: 465 76 | 77 | mybatis: 78 | type-aliases-package: com.slxy.www.domain.po 79 | mapper-locations: 80 | - classpath:mapper/*Mapper.xml 81 | # 82 | #logging: 83 | # level: 84 | # com.slxy.www.dao: trace # 改成你的mapper文件所在包路径 -------------------------------------------------------------------------------- /src/main/resources/mapper/SelectBugLogMapper.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 | id, bug_title AS bugTitle, bug_content AS bugContent, gmt_create AS gmtCreate 25 | 26 | 27 | 34 | 35 | -------------------------------------------------------------------------------- /src/main/resources/mapper/SelectDepartmentMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | id, dep_name, dep_status, dep_info,DATE_FORMAT(gmt_create, '%Y-%m-%d %H:%i:%s') AS gmt_create,DATE_FORMAT(gmt_modify, '%Y-%m-%d %H:%i:%s') AS gmt_modify 17 | 18 | 19 | 20 | 23 | 24 | 25 | 28 | 29 | -------------------------------------------------------------------------------- /src/main/resources/mapper/SelectMajorMapper.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 | id, maj_name, dep_id, maj_class_num, maj_status, DATE_FORMAT(gmt_create, '%Y-%m-%d %H:%i:%s') AS gmt_create,DATE_FORMAT(gmt_modify, '%Y-%m-%d %H:%i:%s') AS gmt_modify 32 | 33 | 34 | 49 | 64 | 65 | -------------------------------------------------------------------------------- /src/main/resources/mapper/SelectProcessControlMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /src/main/resources/mapper/SelectScorePerMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/main/resources/server.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/resources/server.keystore -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/file/select_scores.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/WEB-INF/file/select_scores.xls -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/file/select_students.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/WEB-INF/file/select_students.xls -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/file/select_teachers.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/WEB-INF/file/select_teachers.xls -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/chat.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Select System 11 | 12 | 13 | <%@include file="/WEB-INF/pages/common/macTopCommon.jsp" %> 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 |
22 | 23 |

24 | 25 | 教师详情 26 |

27 | 28 | 29 | 30 | 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 | <%@include file="/WEB-INF/pages/common/macDownCommon.jsp" %> 82 | 83 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/common/adminSider.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2018/1/7 5 | Time: 18:52 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | Title 12 | <%@include file="/WEB-INF/pages/common/macTopCommon.jsp" %> 13 | 14 | 15 | 16 | 17 | 74 | 75 | 76 | <%@include file="/WEB-INF/pages/common/macDownCommon.jsp" %> 77 | 78 | 79 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/common/footer.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2018/1/7 5 | Time: 19:19 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | Title 12 | <%@include file="/WEB-INF/pages/common/macTopCommon.jsp" %> 13 | 14 | 15 |
16 |
17 |
18 |
19 | 20 |

Copyright © 2018 | 商洛学院

21 |
22 |
23 |
24 |
25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/common/include.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/common/macDownCommon.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 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 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/common/macTopCommon.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 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 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/common/page.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2018/1/7 5 | Time: 19:19 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | Title 12 | <%@include file="/WEB-INF/pages/common/macTopCommon.jsp" %> 13 | 14 | 15 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/common/studentSider.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2018/1/7 5 | Time: 18:52 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | Title 12 | <%@include file="/WEB-INF/pages/common/macTopCommon.jsp" %> 13 | 14 | 15 | 16 | 17 | 41 | 42 | 43 | <%@include file="/WEB-INF/pages/common/macDownCommon.jsp" %> 44 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/common/teacherSider.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2018/1/7 5 | Time: 18:52 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | Title 12 | <%@include file="/WEB-INF/pages/common/macTopCommon.jsp" %> 13 | 14 | 15 | 16 | 17 | 64 | 65 | 66 | <%@include file="/WEB-INF/pages/common/macDownCommon.jsp" %> 67 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/index.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2018/4/11 5 | Time: 15:22 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | Title 12 | 13 | 14 | 66666666666666666666666666666666666666 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/main.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 | 4 | 5 | 6 | 7 | 8 | 毕业设计综合信息管理系统 9 | 10 | <%@include file="/WEB-INF/pages/common/macTopCommon.jsp" %> 11 | 12 | 13 | 14 | 16 | 17 | 19 | 21 | 22 | 24 | 25 | 26 | 27 | <%@include file="/WEB-INF/pages/common/macDownCommon.jsp" %> 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /src/main/webapp/auth.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 错误提示页面 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
31 | 32 |
33 |
34 | 35 |
36 | 37 |
38 | Error 39 |
40 | 41 |
42 |
43 | 44 |

😂权限不足!!!!

45 |

请更换账号或联系管理员😂😂😂😂

46 |
47 | 48 |
49 |
50 | 51 |
52 | 53 |
54 | 55 |
56 | 59 | 60 |
61 |
62 | 63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /src/main/webapp/error.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 错误提示页面 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
31 | 32 |
33 |
34 | 35 |
36 | 37 |
38 | Error 39 |
40 | 41 |
42 |
43 | 44 |

Opps!!! It's 404😐

45 |

抱歉,页面发生错误 ,我们的工程师小哥哥正在努力抢修中😐😐😐😐😐

46 |
47 | 48 |
49 |
50 | 51 |
52 | 53 |
54 | 55 |
56 | 59 | 60 |
61 |
62 | 63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /src/main/webapp/footer.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2018/1/7 5 | Time: 19:19 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | Title 12 | <%@include file="/WEB-INF/pages/common/macTopCommon.jsp" %> 13 | 14 | 15 |
16 |
17 |
18 |
19 | 20 |

Copyright © 2018 | 商洛学院

21 |
22 |
23 |
24 |
25 | <%@include file="/WEB-INF/pages/common/macDownCommon.jsp" %> 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/main/webapp/resources/a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/a.jpg -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/BeAlert.css: -------------------------------------------------------------------------------- 1 | .BeAlert_overlay { 2 | overflow: hidden; 3 | position: fixed; 4 | margin: 0; 5 | padding: 0; 6 | z-index: 9999; 7 | background: url("overlay.png"); 8 | left: 0; 9 | right: 0; 10 | top: 0; 11 | bottom: 0; 12 | width: auto; 13 | height: auto; 14 | } 15 | .BeAlert_box { 16 | position: fixed; 17 | top: 50%; 18 | left: 50%; 19 | background-color: #fff; 20 | border-radius: 5px; 21 | padding: 20px; 22 | z-index: 10000; 23 | font-family: 微软雅黑; 24 | font-size: 12px; 25 | text-align: center; 26 | } 27 | .BeAlert_box .BeAlert_image { 28 | background: #fff; 29 | width: 60px; 30 | height: 60px; 31 | margin: 10px auto; 32 | } 33 | .BeAlert_box .BeAlert_image.warning { 34 | background: url("warning.png"); 35 | background-size: 60px; 36 | } 37 | .BeAlert_box .BeAlert_image.error { 38 | background: url("error.png"); 39 | background-size: 60px; 40 | } 41 | .BeAlert_box .BeAlert_image.info { 42 | background: url("info.png"); 43 | background-size: 60px; 44 | } 45 | .BeAlert_box .BeAlert_image.question { 46 | background: url("question.png"); 47 | background-size: 60px; 48 | } 49 | .BeAlert_box .BeAlert_image.success { 50 | background: url("success.png"); 51 | background-size: 60px; 52 | } 53 | .BeAlert_box .BeAlert_title { 54 | font-size: 20px; 55 | margin: 5px auto; 56 | } 57 | .BeAlert_box .BeAlert_message { 58 | font-size: 14px; 59 | margin: 5px auto; 60 | } 61 | .BeAlert_box .BeAlert_button { 62 | margin-top: 20px; 63 | } 64 | .BeAlert_box .BeAlert_button button { 65 | display: none; 66 | background-color: #8CD4F5; 67 | color: #fff; 68 | border: none; 69 | box-shadow: none; 70 | font-size: 17px; 71 | font-weight: 500; 72 | -webkit-border-radius: 4px; 73 | border-radius: 5px; 74 | padding: 10px 30px; 75 | cursor: pointer; 76 | margin: 0 10px; 77 | outline: none; 78 | } 79 | .BeAlert_box .BeAlert_button button.BeAlert_cancel { 80 | background-color: #c1c1c1; 81 | } 82 | .BeAlert_box .BeAlert_button button.BeAlert_cancel:hover { 83 | background-color: #b9b9b9; 84 | } 85 | .BeAlert_box .BeAlert_button button.BeAlert_confirm:hover { 86 | background-color: #86CCEB; 87 | } 88 | -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/BeAlert.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Luker on 2016/10/31. 3 | */ 4 | if (typeof $ === 'function') { 5 | $(function () { 6 | var BeAlert = { 7 | defaultConfig: { 8 | width: 320, 9 | height: 170, 10 | timer: 0, 11 | type: 'warning', 12 | showConfirmButton: true, 13 | showCancelButton: false, 14 | confirmButtonText: '确认', 15 | cancelButtonText: '取消' 16 | }, 17 | html: '
' + 18 | '
' + 19 | '
' + 20 | '
' + 21 | '
' + 22 | '' + 23 | '' + 24 | '
' + 25 | '
', 26 | overlay: '
', 27 | open: function (title, message, callback, o) { 28 | var opts = {}, that = this; 29 | $.extend(opts, that.defaultConfig, o); 30 | $('body').append(that.html).append(that.overlay); 31 | var box = $('.BeAlert_box'); 32 | box.css({ 33 | 'width': opts.width + 'px', 34 | 'min-height': opts.height + 'px', 35 | 'margin-left': -(opts.width / 2) + 'px' 36 | }); 37 | $('.BeAlert_image').addClass(opts.type); 38 | title && $('.BeAlert_title').html(title).show(), 39 | message && $('.BeAlert_message').html(message).show(); 40 | var confirmBtn = $('.BeAlert_confirm'), cancelBtn = $('.BeAlert_cancel'); 41 | opts.showConfirmButton && confirmBtn.text(opts.confirmButtonText).show(), 42 | opts.showCancelButton && cancelBtn.text(opts.cancelButtonText).show(); 43 | $('.BeAlert_overlay').unbind('click').bind('click', function () { 44 | that.close(); 45 | }); 46 | confirmBtn.unbind('click').bind('click', function () { 47 | that.close(); 48 | typeof callback === 'function' && callback(true); 49 | }); 50 | cancelBtn.unbind('click').bind('click', function () { 51 | that.close(); 52 | typeof callback === 'function' && callback(false); 53 | }); 54 | var h = box.height(); 55 | box.css({ 56 | 'margin-top': -(Math.max(h, opts.height) / 2 + 100) + 'px' 57 | }); 58 | }, 59 | close: function () { 60 | $(".BeAlert_overlay,.BeAlert_box").remove(); 61 | } 62 | }; 63 | window.alert = function (title, message, callback, opts) { 64 | BeAlert.open(title, message, callback, opts); 65 | }; 66 | var _confirm = window.confirm; 67 | window.confirm = function (title, message, callback, opts) { 68 | opts = $.extend({type: 'question', showCancelButton: true}, opts); 69 | if (typeof callback === 'function') { 70 | BeAlert.open(title, message, callback, opts); 71 | } else { 72 | return _confirm(title); 73 | } 74 | } 75 | }); 76 | } 77 | -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/beAlert/alert.png -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/beAlert/confirm.png -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/beAlert/error.png -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |

Alert

13 |

Confirm

14 |
15 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/beAlert/info.png -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/jquery插件库.url: -------------------------------------------------------------------------------- 1 | [{000214A0-0000-0000-C000-000000000046}] 2 | Prop3=19,2 3 | [InternetShortcut] 4 | URL=http://www.jq22.com/ 5 | IDList= 6 | HotKey=0 7 | -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/beAlert/overlay.png -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/beAlert/question.png -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/beAlert/success.png -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/beAlert/warning.png -------------------------------------------------------------------------------- /src/main/webapp/resources/beAlert/www.jq22.com.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/beAlert/www.jq22.com.txt -------------------------------------------------------------------------------- /src/main/webapp/resources/bg/canvas-nest.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2016 hustcc 3 | * License: MIT 4 | * Version: v1.0.1 5 | * GitHub: https://github.com/hustcc/canvas-nest.js 6 | **/ 7 | !function(){function n(n,e,t){return n.getAttribute(e)||t}function e(n){return document.getElementsByTagName(n)}function t(){var t=e("script"),o=t.length,i=t[o-1];return{l:o,z:n(i,"zIndex",-1),o:n(i,"opacity",.5),c:n(i,"color","0,0,0"),n:n(i,"count",99)}}function o(){a=m.width=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,c=m.height=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}function i(){r.clearRect(0,0,a,c);var n,e,t,o,m,l;s.forEach(function(i,x){for(i.x+=i.xa,i.y+=i.ya,i.xa*=i.x>a||i.x<0?-1:1,i.ya*=i.y>c||i.y<0?-1:1,r.fillRect(i.x-.5,i.y-.5,1,1),e=x+1;e=n.max/2&&(i.x-=.03*o,i.y-=.03*m),t=(n.max-l)/n.max,r.beginPath(),r.lineWidth=t/2,r.strokeStyle="rgba("+d.c+","+(t+.2)+")",r.moveTo(i.x,i.y),r.lineTo(n.x,n.y),r.stroke()))}),x(i)}var a,c,u,m=document.createElement("canvas"),d=t(),l="c_n"+d.l,r=m.getContext("2d"),x=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(n){window.setTimeout(n,1e3/45)},w=Math.random,y={x:null,y:null,max:2e4};m.id=l,m.style.cssText="position:fixed;top:0;left:0;z-index:"+d.z+";opacity:"+d.o,e("body")[0].appendChild(m),o(),window.onresize=o,window.onmousemove=function(n){n=n||window.event,y.x=n.clientX,y.y=n.clientY},window.onmouseout=function(){y.x=null,y.y=null};for(var s=[],f=0;d.n>f;f++){var h=w()*a,g=w()*c,v=2*w()-1,p=2*w()-1;s.push({x:h,y:g,xa:v,ya:p,max:6e3})}u=s.concat([y]),setTimeout(function(){i()},100)}(); -------------------------------------------------------------------------------- /src/main/webapp/resources/bg/html5shiv.js: -------------------------------------------------------------------------------- 1 | /* 2 | HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); 5 | a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; 6 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| 7 | "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment(); 8 | for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['zh-CN'] = { 7 | days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], 8 | daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"], 9 | daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], 10 | months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 11 | monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 12 | today: "今天", 13 | suffix: [], 14 | meridiem: ["上午", "下午"] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /src/main/webapp/resources/js/charts.js: -------------------------------------------------------------------------------- 1 | /*Sparklines */ 2 | 3 | /* Sparkline plugin Section starts */ 4 | 5 | $("#status1").sparkline([5,6,7,9,9,5,9,6,5,6,6,7,7,6,7,8,9,5 ], { 6 | type: 'line', 7 | width: '80', 8 | height: '20', 9 | lineColor: '#0ca5e7', 10 | fillColor: '#e5f3f9'}); 11 | 12 | $("#status2").sparkline([5,6,7,4,9,5,9,6,4,6,6,7,8,6,7,4,9,5 ], { 13 | type: 'line', 14 | width: '80', 15 | height: '20', 16 | lineColor: '#0ca5e7', 17 | fillColor: '#e5f3f9'}); 18 | 19 | $("#status3").sparkline([9,6,7,5,9,5,9,7,5,6,3,7,7,6,7,8,8,5 ], { 20 | type: 'line', 21 | width: '80', 22 | height: '20', 23 | lineColor: '#0ca5e7', 24 | fillColor: '#e5f3f9'}); 25 | 26 | $("#status4").sparkline([5,2,7,9,9,4,9,6,5,9,6,7,5,6,7,8,4,5 ], { 27 | type: 'line', 28 | width: '80', 29 | height: '20', 30 | lineColor: '#0ca5e7', 31 | fillColor: '#e5f3f9'}); 32 | 33 | $("#status5").sparkline([7,6,3,9,9,5,4,6,6,9,6,7,7,6,4,8,9,5 ], { 34 | type: 'line', 35 | width: '80', 36 | height: '20', 37 | lineColor: '#0ca5e7', 38 | fillColor: '#e5f3f9'}); 39 | 40 | $("#status6").sparkline([4,6,7,8,9,5,3,6,5,6,7,5,7,2,7,8,7,5 ], { 41 | type: 'line', 42 | width: '80', 43 | height: '20', 44 | lineColor: '#0ca5e7', 45 | fillColor: '#e5f3f9'}); 46 | 47 | $("#status7").sparkline([3,6,3,9,9,5,4,6,5,6,4,9,7,6,7,8,8,5 ], { 48 | type: 'line', 49 | width: '80', 50 | height: '20', 51 | lineColor: '#0ca5e7', 52 | fillColor: '#e5f3f9'}); 53 | 54 | $("#todayspark1").sparkline([8,11,9,12,10,9,13,11,12,11,10,12,11,], { 55 | type: 'bar', 56 | height: '30', 57 | barWidth: 5, 58 | barColor: '#f04040'}); 59 | 60 | $("#todayspark2").sparkline([8,11,9,12,10,9,13,11,12,11,10,12,11,], { 61 | type: 'bar', 62 | height: '30', 63 | barWidth: 5, 64 | barColor: '#1eafed'}); 65 | 66 | $("#todayspark3").sparkline([8,11,9,12,10,9,13,11,12,11,10,12,11,], { 67 | type: 'bar', 68 | height: '30', 69 | barWidth: 5, 70 | barColor: '#fb7d45'}); 71 | 72 | $("#todayspark4").sparkline([8,11,9,12,10,9,13,11,12,11,10,12,11,], { 73 | type: 'bar', 74 | height: '30', 75 | barWidth: 5, 76 | barColor: '#0ec216'}); 77 | 78 | $("#todayspark5").sparkline([3,6,3,9,9,5,4,6,5,6,4,9,7,9,7,4,6,8,9,5,6,7,8,6,7,2,4,6,3,7,8,9,7,5,8,9,5,7,8,8,5 ], { 79 | type: 'line', 80 | width: '250', 81 | height: '30', 82 | lineColor: '#0ca5e7', 83 | fillColor: '#e5f3f9'}); 84 | 85 | 86 | /* Sparkline plugin section ends */ 87 | 88 | -------------------------------------------------------------------------------- /src/main/webapp/resources/js/filter.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | jQuery.expr[':'].Contains = function(a,i,m){ 3 | return (a.textContent || a.innerText || "").toUpperCase().indexOf(m[3].toUpperCase())>=0; 4 | }; 5 | 6 | function filterList(header, slist) { 7 | var form = $("
").attr({"class":"filterform form-search","action":"#"}), 8 | input = $("").attr({"class":"filterinput","placeholder":"Type to Filter","type":"text"}); 9 | $(form).append(input).appendTo(header); 10 | 11 | $(input) 12 | .change( function () { 13 | var filter = $(this).val(); 14 | if(filter) { 15 | 16 | $matches = $(slist).find('a:Contains(' + filter + ')').parent(); 17 | $('li', slist).not($matches).slideUp(); 18 | $matches.slideDown(); 19 | 20 | } else { 21 | $(slist).find("li").slideDown(); 22 | } 23 | return false; 24 | }) 25 | .keyup( function () { 26 | $(this).change(); 27 | }); 28 | } 29 | 30 | $(function () { 31 | filterList($("#form"), $("#slist")); 32 | }); 33 | }(jQuery)); -------------------------------------------------------------------------------- /src/main/webapp/resources/js/html5shim.js: -------------------------------------------------------------------------------- 1 | /* 2 | HTML5 Shiv v3.6.2pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); 5 | a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; 6 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| 7 | "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",version:"3.6.2pre",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment(); 8 | for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d, sonnyt.com 4 | */ 5 | 6 | (function ($) { 7 | 8 | $.fn.downCount = function (options, callback) { 9 | var settings = $.extend({ 10 | date: null, 11 | offset: null 12 | }, options); 13 | 14 | // Throw error if date is not set 15 | if (!settings.date) { 16 | $.error('Date is not defined.'); 17 | } 18 | 19 | // Throw error if date is set incorectly 20 | if (!Date.parse(settings.date)) { 21 | $.error('Incorrect date format, it should look like this, 12/24/2012 12:00:00.'); 22 | } 23 | 24 | // Save container 25 | var container = this; 26 | 27 | /** 28 | * Change client's local date to match offset timezone 29 | * @return {Object} Fixed Date object. 30 | */ 31 | var currentDate = function () { 32 | // get client's current date 33 | var date = new Date(); 34 | 35 | // turn date to utc 36 | var utc = date.getTime() + (date.getTimezoneOffset() * 60000); 37 | 38 | // set new Date object 39 | var new_date = new Date(utc + (3600000*settings.offset)) 40 | 41 | return new_date; 42 | }; 43 | 44 | /** 45 | * Main downCount function that calculates everything 46 | */ 47 | function countdown () { 48 | var target_date = new Date(settings.date), // set target date 49 | current_date = currentDate(); // get fixed current date 50 | 51 | // difference of dates 52 | var difference = target_date - current_date; 53 | 54 | // if difference is negative than it's pass the target date 55 | if (difference < 0) { 56 | // stop timer 57 | clearInterval(interval); 58 | 59 | if (callback && typeof callback === 'function') callback(); 60 | 61 | return; 62 | } 63 | 64 | // basic math variables 65 | var _second = 1000, 66 | _minute = _second * 60, 67 | _hour = _minute * 60, 68 | _day = _hour * 24; 69 | 70 | // calculate dates 71 | var days = Math.floor(difference / _day), 72 | hours = Math.floor((difference % _day) / _hour), 73 | minutes = Math.floor((difference % _hour) / _minute), 74 | seconds = Math.floor((difference % _minute) / _second); 75 | 76 | // fix dates so that it will show two digets 77 | days = (String(days).length >= 2) ? days : '0' + days; 78 | hours = (String(hours).length >= 2) ? hours : '0' + hours; 79 | minutes = (String(minutes).length >= 2) ? minutes : '0' + minutes; 80 | seconds = (String(seconds).length >= 2) ? seconds : '0' + seconds; 81 | 82 | // based on the date change the refrence wording 83 | /*var ref_days = (days === 1) ? 'day' : 'days', 84 | ref_hours = (hours === 1) ? 'hour' : 'hours', 85 | ref_minutes = (minutes === 1) ? 'minute' : 'minutes', 86 | ref_seconds = (seconds === 1) ? 'second' : 'seconds';*/ 87 | 88 | var ref_days = (days === 1) ? 'day' : '天', 89 | ref_hours = (hours === 1) ? 'hour' : '小时', 90 | ref_minutes = (minutes === 1) ? 'minute' : '分钟', 91 | ref_seconds = (seconds === 1) ? 'second' : '秒'; 92 | 93 | // set to DOM 94 | container.find('.days').text(days); 95 | container.find('.hours').text(hours); 96 | container.find('.minutes').text(minutes); 97 | container.find('.seconds').text(seconds); 98 | 99 | container.find('.days_ref').text(ref_days); 100 | container.find('.hours_ref').text(ref_hours); 101 | container.find('.minutes_ref').text(ref_minutes); 102 | container.find('.seconds_ref').text(ref_seconds); 103 | }; 104 | 105 | // start 106 | var interval = setInterval(countdown, 1000); 107 | }; 108 | 109 | })(jQuery); -------------------------------------------------------------------------------- /src/main/webapp/resources/js/jquery.flot.resize.js: -------------------------------------------------------------------------------- 1 | (function(n,p,u){var w=n([]),s=n.resize=n.extend(n.resize,{}),o,l="setTimeout",m="resize",t=m+"-special-event",v="delay",r="throttleWindow";s[v]=250;s[r]=true;n.event.special[m]={setup:function(){if(!s[r]&&this[l]){return false}var a=n(this);w=w.add(a);n.data(this,t,{w:a.width(),h:a.height()});if(w.length===1){q()}},teardown:function(){if(!s[r]&&this[l]){return false}var a=n(this);w=w.not(a);a.removeData(t);if(!w.length){clearTimeout(o)}},add:function(b){if(!s[r]&&this[l]){return false}var c;function a(d,h,g){var f=n(this),e=n.data(this,t);e.w=h!==u?h:f.width();e.h=g!==u?g:f.height();c.apply(this,arguments)}if(n.isFunction(b)){c=b;return a}else{c=b.handler;b.handler=a}}};function q(){o=p[l](function(){w.each(function(){var d=n(this),a=d.width(),b=d.height(),c=n.data(this,t);if(a!==c.w||b!==c.h){d.trigger(m,[c.w=a,c.h=b])}});q()},s[v])}})(jQuery,this);(function(b){var a={};function c(f){function e(){var h=f.getPlaceholder();if(h.width()==0||h.height()==0){return}f.resize();f.setupGrid();f.draw()}function g(i,h){i.getPlaceholder().resize(e)}function d(i,h){i.getPlaceholder().unbind("resize",e)}f.hooks.bindEvents.push(g);f.hooks.shutdown.push(d)}b.plot.plugins.push({init:c,options:a,name:"resize",version:"1.0"})})(jQuery); -------------------------------------------------------------------------------- /src/main/webapp/resources/js/layouts/bottom.js: -------------------------------------------------------------------------------- 1 | ;(function($) { 2 | 3 | $.noty.layouts.bottom = { 4 | name: 'bottom', 5 | options: {}, 6 | container: { 7 | object: '
    ', 8 | selector: 'ul#noty_bottom_layout_container', 9 | style: function() { 10 | $(this).css({ 11 | bottom: 0, 12 | left: '5%', 13 | position: 'fixed', 14 | width: '90%', 15 | height: 'auto', 16 | margin: 0, 17 | padding: 0, 18 | listStyleType: 'none', 19 | zIndex: 9999999 20 | }); 21 | } 22 | }, 23 | parent: { 24 | object: '
  • ', 25 | selector: 'li', 26 | css: {} 27 | }, 28 | css: { 29 | display: 'none' 30 | }, 31 | addClass: '' 32 | }; 33 | 34 | })(jQuery); -------------------------------------------------------------------------------- /src/main/webapp/resources/js/layouts/top.js: -------------------------------------------------------------------------------- 1 | ;(function($) { 2 | 3 | $.noty.layouts.top = { 4 | name: 'top', 5 | options: {}, 6 | container: { 7 | object: '
      ', 8 | selector: 'ul#noty_top_layout_container', 9 | style: function() { 10 | $(this).css({ 11 | top: 0, 12 | left: '5%', 13 | position: 'fixed', 14 | width: '90%', 15 | height: 'auto', 16 | margin: 0, 17 | padding: 0, 18 | listStyleType: 'none', 19 | zIndex: 9999999 20 | }); 21 | } 22 | }, 23 | parent: { 24 | object: '
    • ', 25 | selector: 'li', 26 | css: {} 27 | }, 28 | css: { 29 | display: 'none' 30 | }, 31 | addClass: '' 32 | }; 33 | 34 | })(jQuery); -------------------------------------------------------------------------------- /src/main/webapp/resources/js/layouts/topRight.js: -------------------------------------------------------------------------------- 1 | ;(function($) { 2 | 3 | $.noty.layouts.topRight = { 4 | name: 'topRight', 5 | options: { // overrides options 6 | 7 | }, 8 | container: { 9 | object: '
        ', 10 | selector: 'ul#noty_topRight_layout_container', 11 | style: function() { 12 | $(this).css({ 13 | top: 20, 14 | right: 20, 15 | position: 'fixed', 16 | width: '310px', 17 | height: 'auto', 18 | margin: 0, 19 | padding: 0, 20 | listStyleType: 'none', 21 | zIndex: 10000000 22 | }); 23 | 24 | if (window.innerWidth < 600) { 25 | $(this).css({ 26 | right: 5 27 | }); 28 | } 29 | } 30 | }, 31 | parent: { 32 | object: '
      • ', 33 | selector: 'li', 34 | css: {} 35 | }, 36 | css: { 37 | display: 'none', 38 | width: '310px' 39 | }, 40 | addClass: '' 41 | }; 42 | 43 | })(jQuery); -------------------------------------------------------------------------------- /src/main/webapp/resources/mac/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/main/webapp/resources/style/bootstrapValidator.css: -------------------------------------------------------------------------------- 1 | /** 2 | * BootstrapValidator (http://bootstrapvalidator.com) 3 | * 4 | * The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3 5 | * 6 | * @author http://twitter.com/nghuuphuoc 7 | * @copyright (c) 2013 - 2014 Nguyen Huu Phuoc 8 | * @license MIT 9 | */ 10 | 11 | .bv-form .help-block { 12 | margin-bottom: 0; 13 | } 14 | .nav-tabs li.bv-tab-success > a { 15 | color: #3c763d; 16 | } 17 | .nav-tabs li.bv-tab-error > a { 18 | color: #a94442; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-bg_diagonals-thick_18_b81900_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-bg_diagonals-thick_18_b81900_40x40.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-bg_diagonals-thick_20_666666_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-bg_diagonals-thick_20_666666_40x40.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-bg_flat_10_000000_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-bg_flat_10_000000_40x100.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-bg_glass_100_f6f6f6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-bg_glass_100_f6f6f6_1x400.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-bg_glass_100_fdf5ce_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-bg_glass_100_fdf5ce_1x400.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-bg_gloss-wave_35_f6a828_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-bg_gloss-wave_35_f6a828_500x100.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-bg_highlight-soft_100_eeeeee_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-bg_highlight-soft_100_eeeeee_1x100.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-bg_highlight-soft_75_ffe45c_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-bg_highlight-soft_75_ffe45c_1x100.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-icons_228ef1_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-icons_228ef1_256x240.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-icons_ef8c08_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-icons_ef8c08_256x240.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-icons_ffd27a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-icons_ffd27a_256x240.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larscheng/select/a75c07f0bf6220867433d29791652cf8abe589d0/src/main/webapp/resources/style/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /src/main/webapp/resources/style/jquery.cleditor.css: -------------------------------------------------------------------------------- 1 | .cleditorMain {border:1px solid #999; padding:0 1px 1px; background-color:white} 2 | .cleditorMain iframe {border:none; margin:0; padding:0} 3 | .cleditorMain textarea {border:none; margin:0; padding:0; overflow-y:scroll; font:10pt Arial,Verdana; resize:none; outline:none /* webkit grip focus */} 4 | .cleditorToolbar {background: url('../img/cleditor/toolbar.gif') repeat} 5 | .cleditorGroup {float:left; height:26px} 6 | .cleditorButton {float:left; width:24px; height:24px; margin:1px 0 1px 0; background: url('../img/cleditor/buttons.gif')} 7 | .cleditorDisabled {opacity:0.3; filter:alpha(opacity=30)} 8 | .cleditorDivider {float:left; width:1px; height:23px; margin:1px 0 1px 0; background:#CCC} 9 | .cleditorPopup {border:solid 1px #999; background-color:white; color:#333333; position:absolute; font:10pt Arial,Verdana; cursor:default; z-index:10000} 10 | .cleditorList div {padding:2px 4px 2px 4px} 11 | .cleditorList p, 12 | .cleditorList h1, 13 | .cleditorList h2, 14 | .cleditorList h3, 15 | .cleditorList h4, 16 | .cleditorList h5, 17 | .cleditorList h6, 18 | .cleditorList font {padding:0; margin:0; background-color:Transparent} 19 | .cleditorColor {width:150px; padding:1px 0 0 1px} 20 | .cleditorColor div {float:left; width:14px; height:14px; margin:0 1px 1px 0} 21 | .cleditorPrompt {background-color:#F6F7F9; padding:4px; font-size:8.5pt} 22 | .cleditorPrompt input, 23 | .cleditorPrompt textarea {font:8.5pt Arial,Verdana;} 24 | .cleditorMsg {background-color:#FDFCEE; width:150px; padding:4px; font-size:8.5pt} 25 | -------------------------------------------------------------------------------- /src/main/webapp/resources/style/rateit.css: -------------------------------------------------------------------------------- 1 | div.rateit 2 | { 3 | display: -moz-inline-box; 4 | display: inline-block; 5 | position: relative; 6 | -webkit-user-select: none; 7 | -khtml-user-select: none; 8 | -moz-user-select: none; 9 | -o-user-select: none; 10 | user-select: none; 11 | -webkit-touch-callout: none; 12 | } 13 | 14 | div.rateit div.rateit-range 15 | { 16 | position: relative; 17 | display: -moz-inline-box; 18 | display: inline-block; 19 | background: url("../img/star.gif"); 20 | height: 16px; 21 | } 22 | 23 | /* for IE 6 */ 24 | * html div.rateit, * html div.rateit div.rateit-range 25 | { 26 | display: inline; 27 | } 28 | 29 | /* for IE 7 */ 30 | * + html div.rateit, * + html div.rateit div.rateit-range 31 | { 32 | display: inline; 33 | } 34 | 35 | div.rateit div.rateit-hover, div.rateit div.rateit-selected 36 | { 37 | position: absolute; 38 | left: 0px; 39 | } 40 | 41 | div.rateit div.rateit-hover-rtl, div.rateit div.rateit-selected-rtl 42 | { 43 | left: auto; 44 | right: 0px; 45 | } 46 | 47 | div.rateit div.rateit-hover 48 | { 49 | background: url("../img/star.gif") left -32px; 50 | } 51 | 52 | div.rateit div.rateit-hover-rtl 53 | { 54 | background-position: right -32px; 55 | } 56 | 57 | div.rateit div.rateit-selected 58 | { 59 | background: url("../img/star.gif") left -16px; 60 | } 61 | 62 | div.rateit div.rateit-selected-rtl 63 | { 64 | background-position: right -16px; 65 | } 66 | 67 | div.rateit div.rateit-preset 68 | { 69 | background: url("../img/star.gif") left -48px; 70 | } 71 | 72 | div.rateit div.rateit-preset-rtl 73 | { 74 | background: url("../img/star.gif") left -48px; 75 | } 76 | 77 | div.rateit div.rateit-reset 78 | { 79 | background: url("../img/delete.gif") 0 0; 80 | width: 16px; 81 | height: 16px; 82 | display: -moz-inline-box; 83 | display: inline-block; 84 | float: left; 85 | } 86 | 87 | div.rateit div.rateit-reset:hover 88 | { 89 | background-position: 0 -16px; 90 | } 91 | -------------------------------------------------------------------------------- /src/main/webapp/sider.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2018/1/7 5 | Time: 18:52 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 10 | 11 | 12 | 13 | Title 14 | <%@include file="/WEB-INF/pages/common/macTopCommon.jsp" %> 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | <%@include file="/WEB-INF/pages/common/adminSider.jsp" %> 26 | 27 | 28 | <%@include file="/WEB-INF/pages/common/adminSider.jsp" %> 29 | 30 | 31 | <%@include file="/WEB-INF/pages/common/teacherSider.jsp" %> 32 | 33 | 34 | <%@include file="/WEB-INF/pages/common/studentSider.jsp" %> 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /src/main/webapp/times.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 错误提示页面 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
        30 |
        31 | 32 |
        33 |
        34 | 35 |
        36 | 37 |
        38 | Error 39 |
        40 | 41 |
        42 |
        43 | 44 |

        😂该功能暂未开放!!!!

        45 |

        请联系管理员😂😂😂😂

        46 |
        47 | 48 | 49 |
        50 | 51 |
        52 | 53 | 54 | 55 |
        56 | 59 | 60 |
        61 |
        62 | 63 |
        64 |
        65 |
        66 |
        67 |
        68 |
        69 |
        70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /src/test/java/com/slxy/www/SelectApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.boot.test.context.SpringBootTest; 6 | import org.springframework.test.context.junit4.SpringRunner; 7 | 8 | @RunWith(SpringRunner.class) 9 | @SpringBootTest 10 | public class SelectApplicationTests { 11 | 12 | @Test 13 | public void contextLoads() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/test/java/com/slxy/www/dao/ISelectUserBaseMapper.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.dao; 2 | 3 | import com.slxy.www.domain.po.SelectUserBase; 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | 6 | /** 7 | * 8 | * SelectUserBase 表数据库控制层接口 9 | * 10 | */ 11 | public interface ISelectUserBaseMapper extends BaseMapper { 12 | 13 | 14 | } -------------------------------------------------------------------------------- /src/test/java/com/slxy/www/dao/SelectUserBaseMapper.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 | -------------------------------------------------------------------------------- /src/test/java/com/slxy/www/service/SelectUserBaseService.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.slxy.www.dao.ISelectUserBaseMapper; 6 | import com.slxy.www.domain.po.SelectUserBase; 7 | import com.baomidou.framework.service.impl.ServiceImpl; 8 | 9 | /** 10 | * 11 | * SelectUserBase 表数据服务层接口实现类 12 | * 13 | */ 14 | @Service 15 | public class SelectUserBaseService extends ServiceImpl { 16 | 17 | 18 | } -------------------------------------------------------------------------------- /src/test/java/com/slxy/www/web/SelectUserBaseController.java: -------------------------------------------------------------------------------- 1 | package com.slxy.www.web; 2 | 3 | import org.springframework.web.bind.annotation.RestController; 4 | 5 | /** 6 | * 7 | * SelectUserBase 控制层 8 | * 9 | */ 10 | @RestController 11 | public class SelectUserBaseController { 12 | 13 | 14 | } --------------------------------------------------------------------------------