合并 #2

Merged
pbj2hflp4 merged 0 commits from origin into main 4 months ago

@ -1,254 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ArtifactsWorkspaceSettings">
<artifacts-to-build>
<artifact name="kuaidizhan:war exploded" />
</artifacts-to-build>
</component>
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="682fdd82-c05b-4cc6-af2f-4b67dd292c20" name="更改" comment="">
<change afterPath="$PROJECT_DIR$/src/main/java/com/controller/AntiLeechServlet.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/controller/ExpressItem.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/controller/ExpressIteml.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/controller/IgnoreAuth.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/controller/OverduePackageService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/controller/PickupCodeService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/controller/UserManagementService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/model/enums/TypeEnum.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/controller/CommonController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/controller/CommonController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/controller/ZhandianController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/controller/ZhandianController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/main.iml" beforeDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Class" />
</list>
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/src/main/java" />
<option name="ROOT_SYNC" value="DONT_SYNC" />
</component>
<component name="LogFilters">
<option name="FILTER_ERRORS" value="false" />
<option name="FILTER_WARNINGS" value="false" />
<option name="FILTER_INFO" value="true" />
<option name="FILTER_DEBUG" value="true" />
<option name="CUSTOM_FILTER" />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 1
}</component>
<component name="ProjectId" id="2vX9hZLqUjsroXdgXf6kriQDRVP" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;Tomcat 服务器.Tomcat9.executor&quot;: &quot;Run&quot;,
&quot;git-widget-placeholder&quot;: &quot;main&quot;,
&quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
&quot;last_opened_file_path&quot;: &quot;C:/Users/Administrator/Desktop/合肥师范学院/ssm076校园快递一站式服务系统+jsp/kuaidizhan/src/main/java/com&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;project.structure.last.edited&quot;: &quot;工件&quot;,
&quot;project.structure.proportion&quot;: &quot;0.15&quot;,
&quot;project.structure.side.proportion&quot;: &quot;0.2&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;configurable.group.tools&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
}
}</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="C:\Users\Administrator\Desktop\合肥师范学院\ssm076校园快递一站式服务系统+jsp\kuaidizhan\src\main\java\com" />
<recent name="C:\Users\Administrator\Desktop\合肥师范学院\ssm076校园快递一站式服务系统+jsp\kuaidizhan\src\main\webapp\WEB-INF" />
<recent name="C:\Users\Administrator\Desktop\合肥师范学院\ssm076校园快递一站式服务系统+jsp\kuaidizhan\src\main\java\com\controller" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="C:\Users\Administrator\Desktop\合肥师范学院\ssm076校园快递一站式服务系统+jsp\kuaidizhan\src\main\java" />
</key>
</component>
<component name="RunManager">
<configuration name="Tomcat9" type="#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory" factoryName="Local" APPLICATION_SERVER_NAME="Tomcat9" ALTERNATIVE_JRE_ENABLED="false" nameIsGenerated="true">
<option name="UPDATING_POLICY" value="restart-server" />
<deployment>
<artifact name="kuaidizhan:war exploded">
<settings>
<option name="CONTEXT_PATH" value="/kuaidizhan_war_exploded" />
</settings>
</artifact>
</deployment>
<server-settings>
<option name="BASE_DIRECTORY_NAME" value="057a3370-f903-49f3-ae0d-45680e48afb5" />
</server-settings>
<predefined_log_file enabled="true" id="Tomcat" />
<predefined_log_file enabled="true" id="Tomcat Catalina" />
<predefined_log_file id="Tomcat Manager" />
<predefined_log_file id="Tomcat Host Manager" />
<predefined_log_file id="Tomcat Localhost Access" />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="58199" />
</RunnerSettings>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Cover">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Debug">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Profile">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Run">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<method v="2">
<option name="Make" enabled="true" />
<option name="BuildArtifacts" enabled="true">
<artifact name="kuaidizhan:war exploded" />
</option>
</method>
</configuration>
</component>
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-jdk-9823dce3aa75-fbdcb00ec9e3-intellij.indexing.shared.core-IU-251.23774.435" />
<option value="bundled-js-predefined-d6986cc7102b-f27c65a3e318-JavaScript-IU-251.23774.435" />
</set>
</attachedChunks>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
<component name="StructureViewState">
<option name="selectedTab" value="逻辑" />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="默认任务">
<changelist id="682fdd82-c05b-4cc6-af2f-4b67dd292c20" name="更改" comment="" />
<created>1744280671626</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1744280671626</updated>
<workItem from="1744280672775" duration="39000" />
<workItem from="1744280743010" duration="312000" />
<workItem from="1745840073782" duration="4327000" />
<workItem from="1745911770182" duration="9658000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="RECENT_FILTERS">
<map>
<entry key="User">
<value>
<list>
<RecentGroup>
<option name="FILTER_VALUES">
<option value="*" />
</option>
</RecentGroup>
</list>
</value>
</entry>
</map>
</option>
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State>
<option name="FILTERS">
<map>
<entry key="branch">
<value>
<list>
<option value="master" />
</list>
</value>
</entry>
<entry key="user">
<value>
<list>
<option value="*" />
</list>
</value>
</entry>
</map>
</option>
</State>
</value>
</entry>
</map>
</option>
</component>
<component name="XSLT-Support.FileAssociations.UIState">
<expand />
<select />
</component>
</project>

217
db.sql

@ -0,0 +1,217 @@
/*
SQLyog Ultimate v11.3 (64 bit)
MySQL - 5.7.32-log : Database - kuaidizhan
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`kuaidizhan` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `kuaidizhan`;
/*Table structure for table `config` */
DROP TABLE IF EXISTS `config`;
CREATE TABLE `config` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(100) NOT NULL COMMENT '配置参数名称',
`value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='配置文件';
/*Data for the table `config` */
insert into `config`(`id`,`name`,`value`) values (1,'picture1','http://localhost:8080/fd-ssmj/upload/1613705295135.jpg'),(2,'picture2','http://localhost:8080/fd-ssmj/upload/1613705301525.jpg'),(3,'picture3','http://localhost:8080/fd-ssmj/upload/1613799912302.JPG'),(4,'picture4','http://localhost:8080/fd-ssmj/upload/1613705325348.jpg'),(5,'picture5','http://localhost:8080/fd-ssmj/upload/1613705332544.jpg'),(6,'homepage','http://localhost:8080/fd-ssmj/upload/1613705342094.jpg');
/*Table structure for table `daiqu` */
DROP TABLE IF EXISTS `daiqu`;
CREATE TABLE `daiqu` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`dqname` varchar(200) DEFAULT NULL COMMENT '快递名称 Search111',
`zhandian_id` tinyint(4) DEFAULT NULL COMMENT '站点',
`yonghu_id` tinyint(4) DEFAULT NULL COMMENT '用户',
`kddx_types` tinyint(4) DEFAULT NULL COMMENT '快递大小 Search111',
`dqphone` varchar(200) DEFAULT NULL COMMENT '手机号',
`takecode` varchar(200) DEFAULT NULL COMMENT '取件码',
`kdzt_types` tinyint(4) DEFAULT NULL COMMENT '快递状态',
`pickup_time` datetime DEFAULT NULL COMMENT '取件时间 Search111',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='待取件表';
/*Data for the table `daiqu` */
insert into `daiqu`(`id`,`dqname`,`zhandian_id`,`yonghu_id`,`kddx_types`,`dqphone`,`takecode`,`kdzt_types`,`pickup_time`) values (6,'快递1',4,3,1,'17787788787','d4334b',2,'2021-03-12 16:15:21'),(7,'快递2',3,3,2,'17787788787','6e185e',2,'2021-03-12 16:17:59'),(11,'快递3',2,2,1,'222222222','b76997',1,NULL);
/*Table structure for table `daiquren` */
DROP TABLE IF EXISTS `daiquren`;
CREATE TABLE `daiquren` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '用户名称 Search111',
`username` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '账号',
`password` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '密码',
`sex_types` tinyint(4) DEFAULT NULL COMMENT '性别 Search111',
`img_photo` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '头像',
`phone` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '联系电话',
`role` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '身份',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=latin1;
/*Data for the table `daiquren` */
insert into `daiquren`(`id`,`name`,`username`,`password`,`sex_types`,`img_photo`,`phone`,`role`) values (100,'张三','111','111',1,'http://localhost:8080/kuaidizhan/file/download?fileName=1615534764456.jpg','11111','代取人'),(101,'李四','222','222',2,'http://localhost:8080/kuaidizhan/file/download?fileName=1615534757452.jpg','22222','代取人');
/*Table structure for table `dictionary` */
DROP TABLE IF EXISTS `dictionary`;
CREATE TABLE `dictionary` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`dic_code` varchar(200) DEFAULT NULL COMMENT '字段',
`dic_name` varchar(200) DEFAULT NULL COMMENT '字段名',
`code_index` tinyint(4) DEFAULT NULL COMMENT '编码',
`index_name` varchar(200) DEFAULT NULL COMMENT '编码名字',
`super_id` int(11) DEFAULT NULL COMMENT '父字段id',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='字典表';
/*Data for the table `dictionary` */
insert into `dictionary`(`id`,`dic_code`,`dic_name`,`code_index`,`index_name`,`super_id`,`create_time`) values (1,'sex_types','性别',1,'',NULL,'2021-03-15 11:41:54'),(2,'sex_types','性别',2,'',NULL,'2021-03-15 11:41:54'),(3,'kddx_types','快递大小',1,'小件',NULL,'2021-03-15 11:41:54'),(4,'kddx_types','快递大小',2,'中件',NULL,'2021-03-15 11:41:54'),(5,'kddx_types','快递大小',3,'大件',NULL,'2021-03-15 11:41:54'),(6,'kdzt_types','快递状态',1,'待取',NULL,'2021-03-15 11:41:54'),(7,'kdzt_types','快递状态',2,'已取',NULL,'2021-03-15 11:41:54'),(8,'kdzt_types','快递状态',3,'已发布订单',NULL,'2021-03-15 11:41:54'),(9,'jdzt_types','快递状态',1,'未接',NULL,'2021-03-15 11:41:54'),(10,'jdzt_types','快递状态',2,'已接',NULL,'2021-03-15 11:41:54'),(11,'kdlx_types','快递类型',1,'取件',NULL,'2021-03-15 11:41:54'),(12,'kdlx_types','快递类型',2,'寄件',NULL,'2021-03-15 11:41:54'),(13,'ddzt_types','订单状态',1,'正在路上',NULL,'2021-03-15 11:41:54'),(14,'ddzt_types','订单状态',2,'已完成',NULL,'2021-03-15 11:41:54');
/*Table structure for table `jiedan` */
DROP TABLE IF EXISTS `jiedan`;
CREATE TABLE `jiedan` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`odd` varchar(200) DEFAULT NULL COMMENT '单号',
`daiqukuaidimc` varchar(200) DEFAULT NULL COMMENT '快递名称',
`jdyonghu_id` tinyint(4) DEFAULT NULL COMMENT '发布人',
`initiate_time` timestamp NULL DEFAULT NULL COMMENT '发布时间 Search111',
`addresseename` varchar(200) DEFAULT NULL COMMENT '收件人名称',
`jdphone` varchar(200) DEFAULT NULL COMMENT '电话',
`jdaddressee` varchar(200) DEFAULT NULL COMMENT '地址',
`jdtakecode` varchar(200) DEFAULT NULL COMMENT '(取/寄)件码',
`jdzt_types` tinyint(4) DEFAULT NULL COMMENT '快递状态 Search111',
`kdlx_types` tinyint(4) DEFAULT NULL COMMENT '快递类型 Search111',
`dx` tinyint(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='快递接单表';
/*Data for the table `jiedan` */
insert into `jiedan`(`id`,`odd`,`daiqukuaidimc`,`jdyonghu_id`,`initiate_time`,`addresseename`,`jdphone`,`jdaddressee`,`jdtakecode`,`jdzt_types`,`kdlx_types`,`dx`) values (10,'1615536950464','快递2',3,'2021-03-12 16:15:50','小王','17787788787','住宿楼栋603 寝室号603','6e185e',2,1,NULL),(11,'1615537130423','快递3',3,'2021-03-12 16:18:50','小站','222222222','住宿楼栋321 寝室号321','d070ea',2,2,1);
/*Table structure for table `token` */
DROP TABLE IF EXISTS `token`;
CREATE TABLE `token` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`userid` int(20) NOT NULL COMMENT '用户id',
`username` varchar(100) NOT NULL COMMENT '用户名',
`tablename` varchar(100) DEFAULT NULL COMMENT '表名',
`role` varchar(100) DEFAULT NULL COMMENT '角色',
`token` varchar(200) NOT NULL COMMENT '密码',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
`expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='token表';
/*Data for the table `token` */
insert into `token`(`id`,`userid`,`username`,`tablename`,`role`,`token`,`addtime`,`expiratedtime`) values (5,1,'admin','users','管理员','jdbgo9w6arggzqdo3nrrcljj6q08joaq','2021-03-04 11:02:31','2021-03-12 18:07:43'),(6,100,'111','yonghu','代取人','1jdqizh1vsl6kemi3u19w37m284xgens','2021-03-12 11:03:12','2021-03-12 17:13:26'),(7,1,'111','yonghu','用户','l5eqdbtjj882smoz7d82w7d7g76cu4jc','2021-03-12 11:44:02','2021-03-12 18:09:21'),(8,2,'222','yonghu','用户','1kovxdqfjxyg9ebqf8393mq3dotv5kcd','2021-03-12 14:55:11','2021-03-12 18:09:31'),(9,101,'222','yonghu','代取人','7kslcc46et47qrge50u7oo1ev6brmaic','2021-03-12 15:59:47','2021-03-12 17:13:32'),(10,3,'333','yonghu','用户','j3ggt0jgqd8h8bdohporm11dv37ta5n0','2021-03-12 16:13:53','2021-03-12 17:14:26');
/*Table structure for table `users` */
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`username` varchar(100) NOT NULL COMMENT '用户名',
`password` varchar(100) NOT NULL COMMENT '密码',
`role` varchar(100) NOT NULL DEFAULT '管理员' COMMENT '角色',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户表';
/*Data for the table `users` */
insert into `users`(`id`,`username`,`password`,`role`,`addtime`) values (1,'admin','admin','管理员','2021-03-01 00:00:00');
/*Table structure for table `yijiedan` */
DROP TABLE IF EXISTS `yijiedan`;
CREATE TABLE `yijiedan` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`odd` varchar(200) DEFAULT NULL COMMENT '单号',
`yonghu_id` tinyint(4) DEFAULT NULL COMMENT '发布人',
`fbphone` varchar(200) DEFAULT NULL COMMENT '手机号',
`daiquren_id` tinyint(4) DEFAULT NULL COMMENT '接单人',
`jdphone` varchar(200) DEFAULT NULL COMMENT '手机号',
`initiate_time` timestamp NULL DEFAULT NULL COMMENT '接单时间 Search111',
`ddzt_types` tinyint(4) DEFAULT NULL COMMENT '订单状态 Search111',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='已接单表';
/*Data for the table `yijiedan` */
insert into `yijiedan`(`id`,`odd`,`yonghu_id`,`fbphone`,`daiquren_id`,`jdphone`,`initiate_time`,`ddzt_types`) values (7,'1615536950464',3,'17787788787',100,'11111','2021-03-12 16:16:41',2),(8,'1615537130423',3,'222222222',100,'11111','2021-03-12 16:19:00',2);
/*Table structure for table `yonghu` */
DROP TABLE IF EXISTS `yonghu`;
CREATE TABLE `yonghu` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`studentnumber` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '学号',
`name` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '用户名称 Search111',
`username` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '账号',
`password` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '密码',
`sex_types` tinyint(4) DEFAULT NULL COMMENT '性别 Search111',
`img_photo` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '头像',
`phone` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '联系电话',
`zhuSuLou` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '住宿楼栋',
`dormitory` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '寝室号',
`role` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '身份',
`yanzheng` int(255) DEFAULT '0' COMMENT '验证',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
/*Data for the table `yonghu` */
insert into `yonghu`(`id`,`studentnumber`,`name`,`username`,`password`,`sex_types`,`img_photo`,`phone`,`zhuSuLou`,`dormitory`,`role`,`yanzheng`) values (1,'学号1','小札','111','111',1,'http://localhost:8080/kuaidizhan/file/download?fileName=1615469084435.jpg','111111111','123','321','用户',1),(2,'学号2','小站','222','222',2,'http://localhost:8080/kuaidizhan/file/download?fileName=1615469074773.jpg','222222222','123','321','用户',1),(3,'学号3','小王','333','333',2,'http://localhost:8080/kuaidizhan/file/download?fileName=1615536666445.jpg','17787788787','1栋6楼','603','用户',1),(5,'123','123','123','123',NULL,NULL,NULL,NULL,NULL,'用户',0),(6,'123','123','123','123',NULL,NULL,NULL,NULL,NULL,'用户',0);
/*Table structure for table `zhandian` */
DROP TABLE IF EXISTS `zhandian`;
CREATE TABLE `zhandian` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`zdname` varchar(200) DEFAULT NULL COMMENT '站点名称 Search111',
`address` varchar(200) DEFAULT NULL COMMENT '站点地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='快递站点';
/*Data for the table `zhandian` */
insert into `zhandian`(`id`,`zdname`,`address`) values (1,'站点3','站点地址3'),(2,'站点2','站点地址2'),(3,'站点1','站点地址1'),(4,'站点4','站点地址4');
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

@ -0,0 +1,15 @@
package com.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
*/
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface APPLoginUser {
}

@ -1,4 +1,4 @@
package com.controller;
package com.annotation;
import java.lang.annotation.*;

@ -0,0 +1,15 @@
package com.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
*/
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginUser {
}

@ -0,0 +1,28 @@
package com.config;
import java.util.Date;
import org.apache.ibatis.reflection.MetaObject;
import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
/**
*
*/
public class MyMetaObjectHandler extends MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("ctime", new Date(), metaObject);
}
@Override
public boolean openUpdateFill() {
return false;
}
@Override
public void updateFill(MetaObject metaObject) {
// 关闭更新填充、这里不执行
}
}

@ -0,0 +1,55 @@
package com.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
/**
* @author yangliyuan
* @version 202027 8:36:05
* :
*/
@TableName("config")
public class ConfigEntity implements Serializable{
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Long id;
/**
* key
*/
private String name;
/**
* value
*/
private String value;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}

@ -0,0 +1,274 @@
package com.entity;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("daiqu")
public class DaiquEntity<T> implements Serializable {
private static final long serialVersionUID = 1L;
public DaiquEntity() {
}
public DaiquEntity(T t) {
try {
BeanUtils.copyProperties(this, t);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
*/
@TableId(type = IdType.AUTO)
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "dqname")
private String dqname;
/**
*
*/
@TableField(value = "zhandian_id")
private Integer zhandianId;
/**
*
*/
@TableField(value = "yonghu_id")
private Integer yonghuId;
/**
*
*/
@TableField(value = "kddx_types")
private Integer kddxTypes;
/**
*
*/
@TableField(value = "dqphone")
private String dqphone;
/**
*
*/
@TableField(value = "takecode")
private String takecode;
/**
*
*/
@TableField(value = "kdzt_types")
private Integer kdztTypes;
/**
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy年MM月dd日 HH时mm分")
@DateTimeFormat
@TableField(value = "pickup_time",fill = FieldFill.UPDATE)
private Date pickupTime;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getDqname() {
return dqname;
}
/**
*
*/
public void setDqname(String dqname) {
this.dqname = dqname;
}
/**
*
*/
public Integer getZhandianId() {
return zhandianId;
}
/**
*
*/
public void setZhandianId(Integer zhandianId) {
this.zhandianId = zhandianId;
}
/**
*
*/
public Integer getYonghuId() {
return yonghuId;
}
/**
*
*/
public void setYonghuId(Integer yonghuId) {
this.yonghuId = yonghuId;
}
/**
*
*/
public Integer getKddxTypes() {
return kddxTypes;
}
/**
*
*/
public void setKddxTypes(Integer kddxTypes) {
this.kddxTypes = kddxTypes;
}
/**
*
*/
public String getDqphone() {
return dqphone;
}
/**
*
*/
public void setDqphone(String dqphone) {
this.dqphone = dqphone;
}
/**
*
*/
public String getTakecode() {
return takecode;
}
/**
*
*/
public void setTakecode(String takecode) {
this.takecode = takecode;
}
/**
*
*/
public Integer getKdztTypes() {
return kdztTypes;
}
/**
*
*/
public void setKdztTypes(Integer kdztTypes) {
this.kdztTypes = kdztTypes;
}
/**
*
*/
public Date getPickupTime() {
return pickupTime;
}
/**
*
*/
public void setPickupTime(Date pickupTime) {
this.pickupTime = pickupTime;
}
@Override
public String toString() {
return "Daiqu{" +
"id=" + id +
", dqname=" + dqname +
", zhandianId=" + zhandianId +
", yonghuId=" + yonghuId +
", kddxTypes=" + kddxTypes +
", dqphone=" + dqphone +
", takecode=" + takecode +
", kdztTypes=" + kdztTypes +
", pickupTime=" + pickupTime +
"}";
}
}

@ -0,0 +1,248 @@
package com.entity;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("daiquren")
public class DaiqurenEntity<T> implements Serializable {
private static final long serialVersionUID = 1L;
public DaiqurenEntity() {
}
public DaiqurenEntity(T t) {
try {
BeanUtils.copyProperties(this, t);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* id
*/
@TableId(type = IdType.AUTO)
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "name")
private String name;
/**
*
*/
@TableField(value = "username")
private String username;
/**
*
*/
@TableField(value = "password")
private String password;
/**
*
*/
@TableField(value = "sex_types")
private Integer sexTypes;
/**
*
*/
@TableField(value = "img_photo")
private String imgPhoto;
/**
*
*/
@TableField(value = "phone")
private String phone;
/**
*
*/
@TableField(value = "role")
private String role;
/**
* id
*/
public Integer getId() {
return id;
}
/**
* id
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getName() {
return name;
}
/**
*
*/
public void setName(String name) {
this.name = name;
}
/**
*
*/
public String getUsername() {
return username;
}
/**
*
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
*/
public String getPassword() {
return password;
}
/**
*
*/
public void setPassword(String password) {
this.password = password;
}
/**
*
*/
public Integer getSexTypes() {
return sexTypes;
}
/**
*
*/
public void setSexTypes(Integer sexTypes) {
this.sexTypes = sexTypes;
}
/**
*
*/
public String getImgPhoto() {
return imgPhoto;
}
/**
*
*/
public void setImgPhoto(String imgPhoto) {
this.imgPhoto = imgPhoto;
}
/**
*
*/
public String getPhone() {
return phone;
}
/**
*
*/
public void setPhone(String phone) {
this.phone = phone;
}
/**
*
*/
public String getRole() {
return role;
}
/**
*
*/
public void setRole(String role) {
this.role = role;
}
@Override
public String toString() {
return "Daiquren{" +
"id=" + id +
", name=" + name +
", username=" + username +
", password=" + password +
", sexTypes=" + sexTypes +
", imgPhoto=" + imgPhoto +
", phone=" + phone +
", role=" + role +
"}";
}
}

@ -0,0 +1,226 @@
package com.entity;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("dictionary")
public class DictionaryEntity<T> implements Serializable {
private static final long serialVersionUID = 1L;
public DictionaryEntity() {
}
public DictionaryEntity(T t) {
try {
BeanUtils.copyProperties(this, t);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
*/
@TableId(type = IdType.AUTO)
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "dic_code")
private String dicCode;
/**
*
*/
@TableField(value = "dic_name")
private String dicName;
/**
*
*/
@TableField(value = "code_index")
private Integer codeIndex;
/**
*
*/
@TableField(value = "index_name")
private String indexName;
/**
* id
*/
@TableField(value = "super_id")
private Integer superId;
/**
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
@TableField(value = "create_time",fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getDicCode() {
return dicCode;
}
/**
*
*/
public void setDicCode(String dicCode) {
this.dicCode = dicCode;
}
/**
*
*/
public String getDicName() {
return dicName;
}
/**
*
*/
public void setDicName(String dicName) {
this.dicName = dicName;
}
/**
*
*/
public Integer getCodeIndex() {
return codeIndex;
}
/**
*
*/
public void setCodeIndex(Integer codeIndex) {
this.codeIndex = codeIndex;
}
/**
*
*/
public String getIndexName() {
return indexName;
}
/**
*
*/
public void setIndexName(String indexName) {
this.indexName = indexName;
}
/**
* id
*/
public Integer getSuperId() {
return superId;
}
/**
* id
*/
public void setSuperId(Integer superId) {
this.superId = superId;
}
/**
*
*/
public Date getCreateTime() {
return createTime;
}
/**
*
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Override
public String toString() {
return "Dictionary{" +
"id=" + id +
", dicCode=" + dicCode +
", dicName=" + dicName +
", codeIndex=" + codeIndex +
", indexName=" + indexName +
", superId=" + superId +
", createTime=" + createTime +
"}";
}
}

@ -0,0 +1,52 @@
package com.entity;
/**
*
*/
public class EIException extends RuntimeException {
private static final long serialVersionUID = 1L;
private String msg;
private int code = 500;
public EIException(String msg) {
super(msg);
this.msg = msg;
}
public EIException(String msg, Throwable e) {
super(msg, e);
this.msg = msg;
}
public EIException(String msg, int code) {
super(msg);
this.msg = msg;
this.code = code;
}
public EIException(String msg, int code, Throwable e) {
super(msg, e);
this.msg = msg;
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}

@ -0,0 +1,328 @@
package com.entity;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("jiedan")
public class JiedanEntity<T> implements Serializable {
private static final long serialVersionUID = 1L;
public JiedanEntity() {
}
public JiedanEntity(T t) {
try {
BeanUtils.copyProperties(this, t);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
*/
@TableId(type = IdType.AUTO)
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "odd")
private String odd;
/**
*
*/
@TableField(value = "dx")
private Integer dx;
/**
*
*/
@TableField(value = "daiqukuaidimc")
private String daiqukuaidimc;
public String getDaiqukuaidimc() {
return daiqukuaidimc;
}
public void setDaiqukuaidimc(String daiqukuaidimc) {
this.daiqukuaidimc = daiqukuaidimc;
}
/**
*
*/
@TableField(value = "jdyonghu_id")
private Integer jdyonghuId;
/**
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
@TableField(value = "initiate_time",fill = FieldFill.UPDATE)
private Date initiateTime;
/**
*
*/
@TableField(value = "addresseename")
private String addresseename;
/**
*
*/
@TableField(value = "jdphone")
private String jdphone;
/**
*
*/
@TableField(value = "jdaddressee")
private String jdaddressee;
/**
* (/)
*/
@TableField(value = "jdtakecode")
private String jdtakecode;
/**
*
*/
@TableField(value = "jdzt_types")
private Integer jdztTypes;
/**
*
*/
@TableField(value = "kdlx_types")
private Integer kdlxTypes;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getOdd() {
return odd;
}
/**
*
*/
public void setOdd(String odd) {
this.odd = odd;
}
/**
*
*/
public Integer getJdyonghuId() {
return jdyonghuId;
}
/**
*
*/
public void setJdyonghuId(Integer jdyonghuId) {
this.jdyonghuId = jdyonghuId;
}
/**
*
*/
public Date getInitiateTime() {
return initiateTime;
}
/**
*
*/
public void setInitiateTime(Date initiateTime) {
this.initiateTime = initiateTime;
}
/**
*
*/
public String getAddresseename() {
return addresseename;
}
/**
*
*/
public void setAddresseename(String addresseename) {
this.addresseename = addresseename;
}
/**
*
*/
public String getJdphone() {
return jdphone;
}
/**
*
*/
public void setJdphone(String jdphone) {
this.jdphone = jdphone;
}
/**
*
*/
public String getJdaddressee() {
return jdaddressee;
}
/**
*
*/
public void setJdaddressee(String jdaddressee) {
this.jdaddressee = jdaddressee;
}
/**
* (/)
*/
public String getJdtakecode() {
return jdtakecode;
}
public Integer getDx() {
return dx;
}
public void setDx(Integer dx) {
this.dx = dx;
}
/**
* (/)
*/
public void setJdtakecode(String jdtakecode) {
this.jdtakecode = jdtakecode;
}
/**
*
*/
public Integer getJdztTypes() {
return jdztTypes;
}
/**
*
*/
public void setJdztTypes(Integer jdztTypes) {
this.jdztTypes = jdztTypes;
}
/**
*
*/
public Integer getKdlxTypes() {
return kdlxTypes;
}
/**
*
*/
public void setKdlxTypes(Integer kdlxTypes) {
this.kdlxTypes = kdlxTypes;
}
@Override
public String toString() {
return "Jiedan{" +
"id=" + id +
", odd=" + odd +
", daiqukuaidimc=" + daiqukuaidimc +
", jdyonghuId=" + jdyonghuId +
", initiateTime=" + initiateTime +
", addresseename=" + addresseename +
", jdphone=" + jdphone +
", jdaddressee=" + jdaddressee +
", jdtakecode=" + jdtakecode +
", jdztTypes=" + jdztTypes +
", kdlxTypes=" + kdlxTypes +
"}";
}
}

@ -0,0 +1,132 @@
package com.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
/**
* token
*/
@TableName("token")
public class TokenEntity implements Serializable {
private static final Long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Integer id;
/**
* id
*/
private Integer userid;
/**
*
*/
private String username;
/**
*
*/
private String tablename;
/**
*
*/
private String role;
/**
* token
*/
private String token;
/**
*
*/
private Date expiratedtime;
/**
*
*/
private Date addtime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public String getToken() {
return token;
}
public String getTablename() {
return tablename;
}
public void setTablename(String tablename) {
this.tablename = tablename;
}
public void setToken(String token) {
this.token = token;
}
public Date getExpiratedtime() {
return expiratedtime;
}
public void setExpiratedtime(Date expiratedtime) {
this.expiratedtime = expiratedtime;
}
public Date getAddtime() {
return addtime;
}
public void setAddtime(Date addtime) {
this.addtime = addtime;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public TokenEntity(Integer userid, String username, String tablename,String role, String token, Date expiratedtime) {
super();
this.userid = userid;
this.username = username;
this.tablename = tablename;
this.role = role;
this.token = token;
this.expiratedtime = expiratedtime;
}
public TokenEntity() {
}
}

@ -0,0 +1,73 @@
package com.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
/**
*
*/
@TableName("users")
public class UserEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Integer id;
/**
*
*/
private String username;
/**
*
*/
private String password;
/**
*
*/
private String role;
private Date addtime;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public Date getAddtime() {
return addtime;
}
public void setAddtime(Date addtime) {
this.addtime = addtime;
}
public Integer getId() {
return id;
}
}

@ -0,0 +1,250 @@
package com.entity;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("yijiedan")
public class YijiedanEntity<T> implements Serializable {
private static final long serialVersionUID = 1L;
public YijiedanEntity() {
}
public YijiedanEntity(T t) {
try {
BeanUtils.copyProperties(this, t);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
*/
@TableId(type = IdType.AUTO)
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "odd")
private String odd;
/**
*
*/
@TableField(value = "yonghu_id")
private Integer yonghuId;
/**
*
*/
@TableField(value = "fbphone")
private String fbphone;
/**
*
*/
@TableField(value = "daiquren_id")
private Integer daiqurenId;
/**
*
*/
@TableField(value = "jdphone")
private String jdphone;
/**
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
@TableField(value = "initiate_time",fill = FieldFill.UPDATE)
private Date initiateTime;
/**
*
*/
@TableField(value = "ddzt_types")
private Integer ddztTypes;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getOdd() {
return odd;
}
/**
*
*/
public void setOdd(String odd) {
this.odd = odd;
}
/**
*
*/
public Integer getYonghuId() {
return yonghuId;
}
/**
*
*/
public void setYonghuId(Integer yonghuId) {
this.yonghuId = yonghuId;
}
/**
*
*/
public String getFbphone() {
return fbphone;
}
/**
*
*/
public void setFbphone(String fbphone) {
this.fbphone = fbphone;
}
/**
*
*/
public Integer getDaiqurenId() {
return daiqurenId;
}
/**
*
*/
public void setDaiqurenId(Integer daiqurenId) {
this.daiqurenId = daiqurenId;
}
/**
*
*/
public String getJdphone() {
return jdphone;
}
/**
*
*/
public void setJdphone(String jdphone) {
this.jdphone = jdphone;
}
/**
*
*/
public Date getInitiateTime() {
return initiateTime;
}
/**
*
*/
public void setInitiateTime(Date initiateTime) {
this.initiateTime = initiateTime;
}
/**
*
*/
public Integer getDdztTypes() {
return ddztTypes;
}
/**
*
*/
public void setDdztTypes(Integer ddztTypes) {
this.ddztTypes = ddztTypes;
}
@Override
public String toString() {
return "Yijiedan{" +
"id=" + id +
", odd=" + odd +
", yonghuId=" + yonghuId +
", fbphone=" + fbphone +
", daiqurenId=" + daiqurenId +
", jdphone=" + jdphone +
", initiateTime=" + initiateTime +
", ddztTypes=" + ddztTypes +
"}";
}
}

@ -0,0 +1,329 @@
package com.entity;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("yonghu")
public class YonghuEntity<T> implements Serializable {
private static final long serialVersionUID = 1L;
public YonghuEntity() {
}
public YonghuEntity(T t) {
try {
BeanUtils.copyProperties(this, t);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* id
*/
@TableId(type = IdType.AUTO)
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "studentnumber")
private String studentnumber;
/**
*
*/
@TableField(value = "name")
private String name;
/**
*
*/
@TableField(value = "username")
private String username;
/**
*
*/
@TableField(value = "password")
private String password;
/**
*
*/
@TableField(value = "sex_types")
private Integer sexTypes;
@TableField(value = "yanzheng")
private Integer yanzheng;
public Integer getYanzheng() {
return yanzheng;
}
public void setYanzheng(Integer yanzheng) {
this.yanzheng = yanzheng;
}
/**
*
*/
@TableField(value = "img_photo")
private String imgPhoto;
/**
*
*/
@TableField(value = "phone")
private String phone;
/**
* 宿
*/
@TableField(value = "zhuSuLou")
private String zhuSuLou;
/**
*
*/
@TableField(value = "dormitory")
private String dormitory;
/**
*
*/
@TableField(value = "role")
private String role;
/**
* id
*/
public Integer getId() {
return id;
}
/**
* id
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getStudentnumber() {
return studentnumber;
}
/**
*
*/
public void setStudentnumber(String studentnumber) {
this.studentnumber = studentnumber;
}
/**
*
*/
public String getName() {
return name;
}
/**
*
*/
public void setName(String name) {
this.name = name;
}
/**
*
*/
public String getUsername() {
return username;
}
/**
*
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
*/
public String getPassword() {
return password;
}
/**
*
*/
public void setPassword(String password) {
this.password = password;
}
/**
*
*/
public Integer getSexTypes() {
return sexTypes;
}
/**
*
*/
public void setSexTypes(Integer sexTypes) {
this.sexTypes = sexTypes;
}
/**
*
*/
public String getImgPhoto() {
return imgPhoto;
}
/**
*
*/
public void setImgPhoto(String imgPhoto) {
this.imgPhoto = imgPhoto;
}
/**
*
*/
public String getPhone() {
return phone;
}
/**
*
*/
public void setPhone(String phone) {
this.phone = phone;
}
/**
* 宿
*/
public String getZhuSuLou() {
return zhuSuLou;
}
/**
* 宿
*/
public void setZhuSuLou(String zhuSuLou) {
this.zhuSuLou = zhuSuLou;
}
/**
*
*/
public String getDormitory() {
return dormitory;
}
/**
*
*/
public void setDormitory(String dormitory) {
this.dormitory = dormitory;
}
/**
*
*/
public String getRole() {
return role;
}
/**
*
*/
public void setRole(String role) {
this.role = role;
}
@Override
public String toString() {
return "Yonghu{" +
"id=" + id +
", studentnumber=" + studentnumber +
", name=" + name +
", username=" + username +
", password=" + password +
", sexTypes=" + sexTypes +
", imgPhoto=" + imgPhoto +
", phone=" + phone +
", zhuSuLou=" + zhuSuLou +
", dormitory=" + dormitory +
", role=" + role +
"}";
}
}

@ -0,0 +1,128 @@
package com.entity;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("zhandian")
public class ZhandianEntity<T> implements Serializable {
private static final long serialVersionUID = 1L;
public ZhandianEntity() {
}
public ZhandianEntity(T t) {
try {
BeanUtils.copyProperties(this, t);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
*/
@TableId(type = IdType.AUTO)
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "zdname")
private String zdname;
/**
*
*/
@TableField(value = "address")
private String address;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getZdname() {
return zdname;
}
/**
*
*/
public void setZdname(String zdname) {
this.zdname = zdname;
}
/**
*
*/
public String getAddress() {
return address;
}
/**
*
*/
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Zhandian{" +
"id=" + id +
", zdname=" + zdname +
", address=" + address +
"}";
}
}

@ -0,0 +1,210 @@
package com.entity.model;
import com.entity.DaiquEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
* entity
* ModelAndView model
* @author
* @email
* @date 2021-03-11
*/
public class DaiquModel implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private Integer id;
/**
*
*/
private String dqname;
/**
*
*/
private Integer zhandianId;
/**
*
*/
private Integer yonghuId;
/**
*
*/
private Integer kddxTypes;
/**
*
*/
private Integer dqphone;
/**
*
*/
private String takecode;
/**
*
*/
private Integer kdztTypes;
/**
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
private Date pickupTime;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getDqname() {
return dqname;
}
/**
*
*/
public void setDqname(String dqname) {
this.dqname = dqname;
}
/**
*
*/
public Integer getZhandianId() {
return zhandianId;
}
/**
*
*/
public void setZhandianId(Integer zhandianId) {
this.zhandianId = zhandianId;
}
/**
*
*/
public Integer getYonghuId() {
return yonghuId;
}
/**
*
*/
public void setYonghuId(Integer yonghuId) {
this.yonghuId = yonghuId;
}
/**
*
*/
public Integer getKddxTypes() {
return kddxTypes;
}
/**
*
*/
public void setKddxTypes(Integer kddxTypes) {
this.kddxTypes = kddxTypes;
}
/**
*
*/
public Integer getDqphone() {
return dqphone;
}
/**
*
*/
public void setDqphone(Integer dqphone) {
this.dqphone = dqphone;
}
/**
*
*/
public String getTakecode() {
return takecode;
}
/**
*
*/
public void setTakecode(String takecode) {
this.takecode = takecode;
}
/**
*
*/
public Integer getKdztTypes() {
return kdztTypes;
}
/**
*
*/
public void setKdztTypes(Integer kdztTypes) {
this.kdztTypes = kdztTypes;
}
/**
*
*/
public Date getPickupTime() {
return pickupTime;
}
/**
*
*/
public void setPickupTime(Date pickupTime) {
this.pickupTime = pickupTime;
}
}

@ -0,0 +1,188 @@
package com.entity.model;
import com.entity.DaiqurenEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
* entity
* ModelAndView model
* @author
* @email
* @date 2021-03-11
*/
public class DaiqurenModel implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private Integer id;
/**
*
*/
private String name;
/**
*
*/
private String username;
/**
*
*/
private String password;
/**
*
*/
private Integer sexTypes;
/**
*
*/
private String imgPhoto;
/**
*
*/
private String phone;
/**
*
*/
private String role;
/**
* id
*/
public Integer getId() {
return id;
}
/**
* id
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getName() {
return name;
}
/**
*
*/
public void setName(String name) {
this.name = name;
}
/**
*
*/
public String getUsername() {
return username;
}
/**
*
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
*/
public String getPassword() {
return password;
}
/**
*
*/
public void setPassword(String password) {
this.password = password;
}
/**
*
*/
public Integer getSexTypes() {
return sexTypes;
}
/**
*
*/
public void setSexTypes(Integer sexTypes) {
this.sexTypes = sexTypes;
}
/**
*
*/
public String getImgPhoto() {
return imgPhoto;
}
/**
*
*/
public void setImgPhoto(String imgPhoto) {
this.imgPhoto = imgPhoto;
}
/**
*
*/
public String getPhone() {
return phone;
}
/**
*
*/
public void setPhone(String phone) {
this.phone = phone;
}
/**
*
*/
public String getRole() {
return role;
}
/**
*
*/
public void setRole(String role) {
this.role = role;
}
}

@ -0,0 +1,170 @@
package com.entity.model;
import com.entity.DictionaryEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
* entity
* ModelAndView model
* @author
* @email
* @date 2021-03-11
*/
public class DictionaryModel implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private Integer id;
/**
*
*/
private String dicCode;
/**
*
*/
private String dicName;
/**
*
*/
private Integer codeIndex;
/**
*
*/
private String indexName;
/**
* id
*/
private Integer superId;
/**
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
private Date createTime;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getDicCode() {
return dicCode;
}
/**
*
*/
public void setDicCode(String dicCode) {
this.dicCode = dicCode;
}
/**
*
*/
public String getDicName() {
return dicName;
}
/**
*
*/
public void setDicName(String dicName) {
this.dicName = dicName;
}
/**
*
*/
public Integer getCodeIndex() {
return codeIndex;
}
/**
*
*/
public void setCodeIndex(Integer codeIndex) {
this.codeIndex = codeIndex;
}
/**
*
*/
public String getIndexName() {
return indexName;
}
/**
*
*/
public void setIndexName(String indexName) {
this.indexName = indexName;
}
/**
* id
*/
public Integer getSuperId() {
return superId;
}
/**
* id
*/
public void setSuperId(Integer superId) {
this.superId = superId;
}
/**
*
*/
public Date getCreateTime() {
return createTime;
}
/**
*
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}

@ -0,0 +1,250 @@
package com.entity.model;
import com.entity.JiedanEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
* entity
* ModelAndView model
* @author
* @email
* @date 2021-03-11
*/
public class JiedanModel implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private Integer id;
/**
*
*/
private String odd;
/**
*
*/
private Integer daiqukuaidiId;
/**
*
*/
private Integer jdyonghuId;
/**
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
private Date initiateTime;
/**
*
*/
private String addresseename;
/**
*
*/
private String jdphone;
/**
*
*/
private String jdaddressee;
/**
* (/)
*/
private String jdtakecode;
/**
*
*/
private Integer jdztTypes;
/**
*
*/
private Integer kdlxTypes;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getOdd() {
return odd;
}
/**
*
*/
public void setOdd(String odd) {
this.odd = odd;
}
/**
*
*/
public Integer getDaiqukuaidiId() {
return daiqukuaidiId;
}
/**
*
*/
public void setDaiqukuaidiId(Integer daiqukuaidiId) {
this.daiqukuaidiId = daiqukuaidiId;
}
/**
*
*/
public Integer getJdyonghuId() {
return jdyonghuId;
}
/**
*
*/
public void setJdyonghuId(Integer jdyonghuId) {
this.jdyonghuId = jdyonghuId;
}
/**
*
*/
public Date getInitiateTime() {
return initiateTime;
}
/**
*
*/
public void setInitiateTime(Date initiateTime) {
this.initiateTime = initiateTime;
}
/**
*
*/
public String getAddresseename() {
return addresseename;
}
/**
*
*/
public void setAddresseename(String addresseename) {
this.addresseename = addresseename;
}
/**
*
*/
public String getJdphone() {
return jdphone;
}
/**
*
*/
public void setJdphone(String jdphone) {
this.jdphone = jdphone;
}
/**
*
*/
public String getJdaddressee() {
return jdaddressee;
}
/**
*
*/
public void setJdaddressee(String jdaddressee) {
this.jdaddressee = jdaddressee;
}
/**
* (/)
*/
public String getJdtakecode() {
return jdtakecode;
}
/**
* (/)
*/
public void setJdtakecode(String jdtakecode) {
this.jdtakecode = jdtakecode;
}
/**
*
*/
public Integer getJdztTypes() {
return jdztTypes;
}
/**
*
*/
public void setJdztTypes(Integer jdztTypes) {
this.jdztTypes = jdztTypes;
}
/**
*
*/
public Integer getKdlxTypes() {
return kdlxTypes;
}
/**
*
*/
public void setKdlxTypes(Integer kdlxTypes) {
this.kdlxTypes = kdlxTypes;
}
}

@ -0,0 +1,190 @@
package com.entity.model;
import com.entity.YijiedanEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
* entity
* ModelAndView model
* @author
* @email
* @date 2021-03-11
*/
public class YijiedanModel implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private Integer id;
/**
*
*/
private String odd;
/**
*
*/
private Integer yonghuId;
/**
*
*/
private String fbphone;
/**
*
*/
private Integer daiqurenId;
/**
*
*/
private String jdphone;
/**
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
private Date initiateTime;
/**
*
*/
private Integer ddztTypes;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getOdd() {
return odd;
}
/**
*
*/
public void setOdd(String odd) {
this.odd = odd;
}
/**
*
*/
public Integer getYonghuId() {
return yonghuId;
}
/**
*
*/
public void setYonghuId(Integer yonghuId) {
this.yonghuId = yonghuId;
}
/**
*
*/
public String getFbphone() {
return fbphone;
}
/**
*
*/
public void setFbphone(String fbphone) {
this.fbphone = fbphone;
}
/**
*
*/
public Integer getDaiqurenId() {
return daiqurenId;
}
/**
*
*/
public void setDaiqurenId(Integer daiqurenId) {
this.daiqurenId = daiqurenId;
}
/**
*
*/
public String getJdphone() {
return jdphone;
}
/**
*
*/
public void setJdphone(String jdphone) {
this.jdphone = jdphone;
}
/**
*
*/
public Date getInitiateTime() {
return initiateTime;
}
/**
*
*/
public void setInitiateTime(Date initiateTime) {
this.initiateTime = initiateTime;
}
/**
*
*/
public Integer getDdztTypes() {
return ddztTypes;
}
/**
*
*/
public void setDdztTypes(Integer ddztTypes) {
this.ddztTypes = ddztTypes;
}
}

@ -0,0 +1,248 @@
package com.entity.model;
import com.entity.YonghuEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
* entity
* ModelAndView model
* @author
* @email
* @date 2021-03-11
*/
public class YonghuModel implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private Integer id;
/**
*
*/
private String studentnumber;
/**
*
*/
private String name;
/**
*
*/
private String username;
/**
*
*/
private String password;
/**
*
*/
private Integer sexTypes;
/**
*
*/
private String imgPhoto;
/**
*
*/
private String phone;
/**
* 宿
*/
private String zhuSuLou;
/**
*
*/
private String dormitory;
/**
*
*/
private String role;
/**
* id
*/
public Integer getId() {
return id;
}
/**
* id
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getStudentnumber() {
return studentnumber;
}
/**
*
*/
public void setStudentnumber(String studentnumber) {
this.studentnumber = studentnumber;
}
/**
*
*/
public String getName() {
return name;
}
/**
*
*/
public void setName(String name) {
this.name = name;
}
/**
*
*/
public String getUsername() {
return username;
}
/**
*
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
*/
public String getPassword() {
return password;
}
/**
*
*/
public void setPassword(String password) {
this.password = password;
}
/**
*
*/
public Integer getSexTypes() {
return sexTypes;
}
/**
*
*/
public void setSexTypes(Integer sexTypes) {
this.sexTypes = sexTypes;
}
/**
*
*/
public String getImgPhoto() {
return imgPhoto;
}
/**
*
*/
public void setImgPhoto(String imgPhoto) {
this.imgPhoto = imgPhoto;
}
/**
*
*/
public String getPhone() {
return phone;
}
/**
*
*/
public void setPhone(String phone) {
this.phone = phone;
}
/**
* 宿
*/
public String getZhuSuLou() {
return zhuSuLou;
}
/**
* 宿
*/
public void setZhuSuLou(String zhuSuLou) {
this.zhuSuLou = zhuSuLou;
}
/**
*
*/
public String getDormitory() {
return dormitory;
}
/**
*
*/
public void setDormitory(String dormitory) {
this.dormitory = dormitory;
}
/**
*
*/
public String getRole() {
return role;
}
/**
*
*/
public void setRole(String role) {
this.role = role;
}
}

@ -0,0 +1,88 @@
package com.entity.model;
import com.entity.ZhandianEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
* entity
* ModelAndView model
* @author
* @email
* @date 2021-03-11
*/
public class ZhandianModel implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private Integer id;
/**
*
*/
private String zdname;
/**
*
*/
private String address;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getZdname() {
return zdname;
}
/**
*
*/
public void setZdname(String zdname) {
this.zdname = zdname;
}
/**
*
*/
public String getAddress() {
return address;
}
/**
*
*/
public void setAddress(String address) {
this.address = address;
}
}

@ -0,0 +1,315 @@
package com.entity.view;
import com.entity.DaiquEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* 使
* @author
* @email
* @date 2021-03-11
*/
@TableName("daiqu")
public class DaiquView extends DaiquEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String kddxValue;
/**
*
*/
private String kdztValue;
//级联表 yonghu
/**
*
*/
private String studentnumber;
/**
*
*/
private String name;
/**
*
*/
private String username;
/**
*
*/
private String password;
/**
*
*/
private Integer sexTypes;
/**
*
*/
private String sexValue;
/**
*
*/
private String imgPhoto;
/**
*
*/
private String phone;
/**
* 宿
*/
private String zhuSuLou;
/**
*
*/
private String dormitory;
/**
*
*/
private String role;
//级联表 zhandian
/**
*
*/
private String zdname;
/**
*
*/
private String address;
public DaiquView() {
}
public DaiquView(DaiquEntity daiquEntity) {
try {
BeanUtils.copyProperties(this, daiquEntity);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
*/
public String getKddxValue() {
return kddxValue;
}
/**
*
*/
public void setKddxValue(String kddxValue) {
this.kddxValue = kddxValue;
}
/**
*
*/
public String getKdztValue() {
return kdztValue;
}
/**
*
*/
public void setKdztValue(String kdztValue) {
this.kdztValue = kdztValue;
}
//级联表的get和set yonghu
/**
*
*/
public String getStudentnumber() {
return studentnumber;
}
/**
*
*/
public void setStudentnumber(String studentnumber) {
this.studentnumber = studentnumber;
}
/**
*
*/
public String getName() {
return name;
}
/**
*
*/
public void setName(String name) {
this.name = name;
}
/**
*
*/
public String getUsername() {
return username;
}
/**
*
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
*/
public String getPassword() {
return password;
}
/**
*
*/
public void setPassword(String password) {
this.password = password;
}
/**
*
*/
public Integer getSexTypes() {
return sexTypes;
}
/**
*
*/
public void setSexTypes(Integer sexTypes) {
this.sexTypes = sexTypes;
}
/**
*
*/
public String getSexValue() {
return sexValue;
}
/**
*
*/
public void setSexValue(String sexValue) {
this.sexValue = sexValue;
}
/**
*
*/
public String getImgPhoto() {
return imgPhoto;
}
/**
*
*/
public void setImgPhoto(String imgPhoto) {
this.imgPhoto = imgPhoto;
}
/**
*
*/
public String getPhone() {
return phone;
}
/**
*
*/
public void setPhone(String phone) {
this.phone = phone;
}
/**
* 宿
*/
public String getZhuSuLou() {
return zhuSuLou;
}
/**
* 宿
*/
public void setZhuSuLou(String zhuSuLou) {
this.zhuSuLou = zhuSuLou;
}
/**
*
*/
public String getDormitory() {
return dormitory;
}
/**
*
*/
public void setDormitory(String dormitory) {
this.dormitory = dormitory;
}
/**
*
*/
public String getRole() {
return role;
}
/**
*
*/
public void setRole(String role) {
this.role = role;
}
//级联表的get和set zhandian
/**
*
*/
public String getZdname() {
return zdname;
}
/**
*
*/
public void setZdname(String zdname) {
this.zdname = zdname;
}
/**
*
*/
public String getAddress() {
return address;
}
/**
*
*/
public void setAddress(String address) {
this.address = address;
}
}

@ -0,0 +1,67 @@
package com.entity.view;
import com.entity.DaiqurenEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* 使
* @author
* @email
* @date 2021-03-11
*/
@TableName("daiquren")
public class DaiqurenView extends DaiqurenEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String sexValue;
public DaiqurenView() {
}
public DaiqurenView(DaiqurenEntity daiqurenEntity) {
try {
BeanUtils.copyProperties(this, daiqurenEntity);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
*/
public String getSexValue() {
return sexValue;
}
/**
*
*/
public void setSexValue(String sexValue) {
this.sexValue = sexValue;
}
}

@ -0,0 +1,59 @@
package com.entity.view;
import com.entity.DictionaryEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* 使
* @author
* @email
* @date 2021-03-11
*/
@TableName("dictionary")
public class DictionaryView extends DictionaryEntity implements Serializable {
private static final long serialVersionUID = 1L;
public DictionaryView() {
}
public DictionaryView(DictionaryEntity dictionaryEntity) {
try {
BeanUtils.copyProperties(this, dictionaryEntity);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

@ -0,0 +1,107 @@
package com.entity.view;
import com.entity.JiedanEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* 使
* @author
* @email
* @date 2021-03-11
*/
@TableName("jiedan")
public class JiedanView extends JiedanEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String jdztValue;
/**
*
*/
private String kdlxValue;
private String fbrname;
public JiedanView() {
}
public JiedanView(JiedanEntity jiedanEntity) {
try {
BeanUtils.copyProperties(this, jiedanEntity);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getFbrname() {
return fbrname;
}
public void setFbrname(String fbrname) {
this.fbrname = fbrname;
}
/**
*
*/
public String getJdztValue() {
return jdztValue;
}
/**
*
*/
public void setJdztValue(String jdztValue) {
this.jdztValue = jdztValue;
}
/**
*
*/
public String getKdlxValue() {
return kdlxValue;
}
/**
*
*/
public void setKdlxValue(String kdlxValue) {
this.kdlxValue = kdlxValue;
}
}

@ -0,0 +1,269 @@
package com.entity.view;
import com.entity.YijiedanEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* 使
* @author
* @email
* @date 2021-03-11
*/
@TableName("yijiedan")
public class YijiedanView extends YijiedanEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String ddztValue;
//级联表 daiquren
/**
*
*/
private String yhname;
/**
*
*/
private String username;
/**
*
*/
private String password;
/**
*
*/
private Integer sexTypes;
/**
*
*/
private String sexValue;
/**
*
*/
private String imgPhoto;
/**
*
*/
private String phone;
/**
*
*/
private String role;
//级联表 yonghu
/**
*
*/
private String studentnumber;
private String name;
/**
* 宿
*/
private String zhuSuLou;
/**
*
*/
private String dormitory;
public YijiedanView() {
}
public YijiedanView(YijiedanEntity yijiedanEntity) {
try {
BeanUtils.copyProperties(this, yijiedanEntity);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
*/
public String getDdztValue() {
return ddztValue;
}
/**
*
*/
public void setDdztValue(String ddztValue) {
this.ddztValue = ddztValue;
}
//级联表的get和set yonghu
/**
*
*/
public String getStudentnumber() {
return studentnumber;
}
/**
*
*/
public void setStudentnumber(String studentnumber) {
this.studentnumber = studentnumber;
}
public String getYhname() {
return yhname;
}
public void setYhname(String yhname) {
this.yhname = yhname;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
*
*/
public String getUsername() {
return username;
}
/**
*
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
*/
public String getPassword() {
return password;
}
/**
*
*/
public void setPassword(String password) {
this.password = password;
}
/**
*
*/
public Integer getSexTypes() {
return sexTypes;
}
/**
*
*/
public void setSexTypes(Integer sexTypes) {
this.sexTypes = sexTypes;
}
/**
*
*/
public String getSexValue() {
return sexValue;
}
/**
*
*/
public void setSexValue(String sexValue) {
this.sexValue = sexValue;
}
/**
*
*/
public String getImgPhoto() {
return imgPhoto;
}
/**
*
*/
public void setImgPhoto(String imgPhoto) {
this.imgPhoto = imgPhoto;
}
/**
*
*/
public String getPhone() {
return phone;
}
/**
*
*/
public void setPhone(String phone) {
this.phone = phone;
}
/**
* 宿
*/
public String getZhuSuLou() {
return zhuSuLou;
}
/**
* 宿
*/
public void setZhuSuLou(String zhuSuLou) {
this.zhuSuLou = zhuSuLou;
}
/**
*
*/
public String getDormitory() {
return dormitory;
}
/**
*
*/
public void setDormitory(String dormitory) {
this.dormitory = dormitory;
}
/**
*
*/
public String getRole() {
return role;
}
/**
*
*/
public void setRole(String role) {
this.role = role;
}
}

@ -0,0 +1,67 @@
package com.entity.view;
import com.entity.YonghuEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* 使
* @author
* @email
* @date 2021-03-11
*/
@TableName("yonghu")
public class YonghuView extends YonghuEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String sexValue;
public YonghuView() {
}
public YonghuView(YonghuEntity yonghuEntity) {
try {
BeanUtils.copyProperties(this, yonghuEntity);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
*/
public String getSexValue() {
return sexValue;
}
/**
*
*/
public void setSexValue(String sexValue) {
this.sexValue = sexValue;
}
}

@ -0,0 +1,51 @@
package com.entity.view;
import com.entity.ZhandianEntity;
import com.baomidou.mybatisplus.annotations.TableName;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* 使
* @author
* @email
* @date 2021-03-11
*/
@TableName("zhandian")
public class ZhandianView extends ZhandianEntity implements Serializable {
private static final long serialVersionUID = 1L;
public ZhandianView() {
}
public ZhandianView(ZhandianEntity zhandianEntity) {
try {
BeanUtils.copyProperties(this, zhandianEntity);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

@ -0,0 +1,235 @@
package com.entity.vo;
import com.entity.DaiquEntity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("daiqu")
public class DaiquVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "dqname")
private String dqname;
/**
*
*/
@TableField(value = "zhandian_id")
private Integer zhandianId;
/**
*
*/
@TableField(value = "yonghu_id")
private Integer yonghuId;
/**
*
*/
@TableField(value = "kddx_types")
private Integer kddxTypes;
/**
*
*/
@TableField(value = "dqphone")
private Integer dqphone;
/**
*
*/
@TableField(value = "takecode")
private String takecode;
/**
*
*/
@TableField(value = "kdzt_types")
private Integer kdztTypes;
/**
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
@TableField(value = "pickup_time")
private Date pickupTime;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getDqname() {
return dqname;
}
/**
*
*/
public void setDqname(String dqname) {
this.dqname = dqname;
}
/**
*
*/
public Integer getZhandianId() {
return zhandianId;
}
/**
*
*/
public void setZhandianId(Integer zhandianId) {
this.zhandianId = zhandianId;
}
/**
*
*/
public Integer getYonghuId() {
return yonghuId;
}
/**
*
*/
public void setYonghuId(Integer yonghuId) {
this.yonghuId = yonghuId;
}
/**
*
*/
public Integer getKddxTypes() {
return kddxTypes;
}
/**
*
*/
public void setKddxTypes(Integer kddxTypes) {
this.kddxTypes = kddxTypes;
}
/**
*
*/
public Integer getDqphone() {
return dqphone;
}
/**
*
*/
public void setDqphone(Integer dqphone) {
this.dqphone = dqphone;
}
/**
*
*/
public String getTakecode() {
return takecode;
}
/**
*
*/
public void setTakecode(String takecode) {
this.takecode = takecode;
}
/**
*
*/
public Integer getKdztTypes() {
return kdztTypes;
}
/**
*
*/
public void setKdztTypes(Integer kdztTypes) {
this.kdztTypes = kdztTypes;
}
/**
*
*/
public Date getPickupTime() {
return pickupTime;
}
/**
*
*/
public void setPickupTime(Date pickupTime) {
this.pickupTime = pickupTime;
}
}

@ -0,0 +1,210 @@
package com.entity.vo;
import com.entity.DaiqurenEntity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("daiquren")
public class DaiqurenVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "name")
private String name;
/**
*
*/
@TableField(value = "username")
private String username;
/**
*
*/
@TableField(value = "password")
private String password;
/**
*
*/
@TableField(value = "sex_types")
private Integer sexTypes;
/**
*
*/
@TableField(value = "img_photo")
private String imgPhoto;
/**
*
*/
@TableField(value = "phone")
private String phone;
/**
*
*/
@TableField(value = "role")
private String role;
/**
* id
*/
public Integer getId() {
return id;
}
/**
* id
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getName() {
return name;
}
/**
*
*/
public void setName(String name) {
this.name = name;
}
/**
*
*/
public String getUsername() {
return username;
}
/**
*
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
*/
public String getPassword() {
return password;
}
/**
*
*/
public void setPassword(String password) {
this.password = password;
}
/**
*
*/
public Integer getSexTypes() {
return sexTypes;
}
/**
*
*/
public void setSexTypes(Integer sexTypes) {
this.sexTypes = sexTypes;
}
/**
*
*/
public String getImgPhoto() {
return imgPhoto;
}
/**
*
*/
public void setImgPhoto(String imgPhoto) {
this.imgPhoto = imgPhoto;
}
/**
*
*/
public String getPhone() {
return phone;
}
/**
*
*/
public void setPhone(String phone) {
this.phone = phone;
}
/**
*
*/
public String getRole() {
return role;
}
/**
*
*/
public void setRole(String role) {
this.role = role;
}
}

@ -0,0 +1,189 @@
package com.entity.vo;
import com.entity.DictionaryEntity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("dictionary")
public class DictionaryVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "dic_code")
private String dicCode;
/**
*
*/
@TableField(value = "dic_name")
private String dicName;
/**
*
*/
@TableField(value = "code_index")
private Integer codeIndex;
/**
*
*/
@TableField(value = "index_name")
private String indexName;
/**
* id
*/
@TableField(value = "super_id")
private Integer superId;
/**
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
@TableField(value = "create_time")
private Date createTime;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getDicCode() {
return dicCode;
}
/**
*
*/
public void setDicCode(String dicCode) {
this.dicCode = dicCode;
}
/**
*
*/
public String getDicName() {
return dicName;
}
/**
*
*/
public void setDicName(String dicName) {
this.dicName = dicName;
}
/**
*
*/
public Integer getCodeIndex() {
return codeIndex;
}
/**
*
*/
public void setCodeIndex(Integer codeIndex) {
this.codeIndex = codeIndex;
}
/**
*
*/
public String getIndexName() {
return indexName;
}
/**
*
*/
public void setIndexName(String indexName) {
this.indexName = indexName;
}
/**
* id
*/
public Integer getSuperId() {
return superId;
}
/**
* id
*/
public void setSuperId(Integer superId) {
this.superId = superId;
}
/**
*
*/
public Date getCreateTime() {
return createTime;
}
/**
*
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}

@ -0,0 +1,275 @@
package com.entity.vo;
import com.entity.JiedanEntity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("jiedan")
public class JiedanVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "odd")
private String odd;
/**
*
*/
@TableField(value = "daiqukuaidimc")
private Integer daiqukuaidimc;
/**
*
*/
@TableField(value = "jdyonghu_id")
private Integer jdyonghuId;
/**
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
@TableField(value = "initiate_time")
private Date initiateTime;
/**
*
*/
@TableField(value = "addresseename")
private String addresseename;
/**
*
*/
@TableField(value = "jdphone")
private String jdphone;
/**
*
*/
@TableField(value = "jdaddressee")
private String jdaddressee;
/**
* (/)
*/
@TableField(value = "jdtakecode")
private String jdtakecode;
/**
*
*/
@TableField(value = "jdzt_types")
private Integer jdztTypes;
/**
*
*/
@TableField(value = "kdlx_types")
private Integer kdlxTypes;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getOdd() {
return odd;
}
/**
*
*/
public void setOdd(String odd) {
this.odd = odd;
}
public Integer getDaiqukuaidimc() {
return daiqukuaidimc;
}
public void setDaiqukuaidimc(Integer daiqukuaidimc) {
this.daiqukuaidimc = daiqukuaidimc;
}
/**
*
*/
public Integer getJdyonghuId() {
return jdyonghuId;
}
/**
*
*/
public void setJdyonghuId(Integer jdyonghuId) {
this.jdyonghuId = jdyonghuId;
}
/**
*
*/
public Date getInitiateTime() {
return initiateTime;
}
/**
*
*/
public void setInitiateTime(Date initiateTime) {
this.initiateTime = initiateTime;
}
/**
*
*/
public String getAddresseename() {
return addresseename;
}
/**
*
*/
public void setAddresseename(String addresseename) {
this.addresseename = addresseename;
}
/**
*
*/
public String getJdphone() {
return jdphone;
}
/**
*
*/
public void setJdphone(String jdphone) {
this.jdphone = jdphone;
}
/**
*
*/
public String getJdaddressee() {
return jdaddressee;
}
/**
*
*/
public void setJdaddressee(String jdaddressee) {
this.jdaddressee = jdaddressee;
}
/**
* (/)
*/
public String getJdtakecode() {
return jdtakecode;
}
/**
* (/)
*/
public void setJdtakecode(String jdtakecode) {
this.jdtakecode = jdtakecode;
}
/**
*
*/
public Integer getJdztTypes() {
return jdztTypes;
}
/**
*
*/
public void setJdztTypes(Integer jdztTypes) {
this.jdztTypes = jdztTypes;
}
/**
*
*/
public Integer getKdlxTypes() {
return kdlxTypes;
}
/**
*
*/
public void setKdlxTypes(Integer kdlxTypes) {
this.kdlxTypes = kdlxTypes;
}
}

@ -0,0 +1,212 @@
package com.entity.vo;
import com.entity.YijiedanEntity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("yijiedan")
public class YijiedanVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "odd")
private String odd;
/**
*
*/
@TableField(value = "yonghu_id")
private Integer yonghuId;
/**
*
*/
@TableField(value = "fbphone")
private String fbphone;
/**
*
*/
@TableField(value = "daiquren_id")
private Integer daiqurenId;
/**
*
*/
@TableField(value = "jdphone")
private String jdphone;
/**
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
@TableField(value = "initiate_time")
private Date initiateTime;
/**
*
*/
@TableField(value = "ddzt_types")
private Integer ddztTypes;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getOdd() {
return odd;
}
/**
*
*/
public void setOdd(String odd) {
this.odd = odd;
}
/**
*
*/
public Integer getYonghuId() {
return yonghuId;
}
/**
*
*/
public void setYonghuId(Integer yonghuId) {
this.yonghuId = yonghuId;
}
/**
*
*/
public String getFbphone() {
return fbphone;
}
/**
*
*/
public void setFbphone(String fbphone) {
this.fbphone = fbphone;
}
/**
*
*/
public Integer getDaiqurenId() {
return daiqurenId;
}
/**
*
*/
public void setDaiqurenId(Integer daiqurenId) {
this.daiqurenId = daiqurenId;
}
/**
*
*/
public String getJdphone() {
return jdphone;
}
/**
*
*/
public void setJdphone(String jdphone) {
this.jdphone = jdphone;
}
/**
*
*/
public Date getInitiateTime() {
return initiateTime;
}
/**
*
*/
public void setInitiateTime(Date initiateTime) {
this.initiateTime = initiateTime;
}
/**
*
*/
public Integer getDdztTypes() {
return ddztTypes;
}
/**
*
*/
public void setDdztTypes(Integer ddztTypes) {
this.ddztTypes = ddztTypes;
}
}

@ -0,0 +1,279 @@
package com.entity.vo;
import com.entity.YonghuEntity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("yonghu")
public class YonghuVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "studentnumber")
private String studentnumber;
/**
*
*/
@TableField(value = "name")
private String name;
/**
*
*/
@TableField(value = "username")
private String username;
/**
*
*/
@TableField(value = "password")
private String password;
/**
*
*/
@TableField(value = "sex_types")
private Integer sexTypes;
/**
*
*/
@TableField(value = "img_photo")
private String imgPhoto;
/**
*
*/
@TableField(value = "phone")
private String phone;
/**
* 宿
*/
@TableField(value = "zhuSuLou")
private String zhuSuLou;
/**
*
*/
@TableField(value = "dormitory")
private String dormitory;
/**
*
*/
@TableField(value = "role")
private String role;
/**
* id
*/
public Integer getId() {
return id;
}
/**
* id
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getStudentnumber() {
return studentnumber;
}
/**
*
*/
public void setStudentnumber(String studentnumber) {
this.studentnumber = studentnumber;
}
/**
*
*/
public String getName() {
return name;
}
/**
*
*/
public void setName(String name) {
this.name = name;
}
/**
*
*/
public String getUsername() {
return username;
}
/**
*
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
*/
public String getPassword() {
return password;
}
/**
*
*/
public void setPassword(String password) {
this.password = password;
}
/**
*
*/
public Integer getSexTypes() {
return sexTypes;
}
/**
*
*/
public void setSexTypes(Integer sexTypes) {
this.sexTypes = sexTypes;
}
/**
*
*/
public String getImgPhoto() {
return imgPhoto;
}
/**
*
*/
public void setImgPhoto(String imgPhoto) {
this.imgPhoto = imgPhoto;
}
/**
*
*/
public String getPhone() {
return phone;
}
/**
*
*/
public void setPhone(String phone) {
this.phone = phone;
}
/**
* 宿
*/
public String getZhuSuLou() {
return zhuSuLou;
}
/**
* 宿
*/
public void setZhuSuLou(String zhuSuLou) {
this.zhuSuLou = zhuSuLou;
}
/**
*
*/
public String getDormitory() {
return dormitory;
}
/**
*
*/
public void setDormitory(String dormitory) {
this.dormitory = dormitory;
}
/**
*
*/
public String getRole() {
return role;
}
/**
*
*/
public void setRole(String role) {
this.role = role;
}
}

@ -0,0 +1,95 @@
package com.entity.vo;
import com.entity.ZhandianEntity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
*
*
*
* @author
* @email
* @date 2021-03-11
*/
@TableName("zhandian")
public class ZhandianVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@TableField(value = "id")
private Integer id;
/**
*
*/
@TableField(value = "zdname")
private String zdname;
/**
*
*/
@TableField(value = "address")
private String address;
/**
*
*/
public Integer getId() {
return id;
}
/**
*
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
public String getZdname() {
return zdname;
}
/**
*
*/
public void setZdname(String zdname) {
this.zdname = zdname;
}
/**
*
*/
public String getAddress() {
return address;
}
/**
*
*/
public void setAddress(String address) {
this.address = address;
}
}

@ -0,0 +1,88 @@
package com.interceptor;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import com.annotation.IgnoreAuth;
import com.entity.EIException;
import com.entity.TokenEntity;
import com.service.TokenService;
import com.utils.R;
/**
* (Token)
*/
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {
public static final String LOGIN_TOKEN_KEY = "Token";
@Autowired
private TokenService tokenService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//支持跨域请求
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization");
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
IgnoreAuth annotation;
if (handler instanceof HandlerMethod) {
annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
} else {
return true;
}
//从header中获取token
String token = request.getHeader(LOGIN_TOKEN_KEY);
/**
*
*/
if(annotation!=null) {
return true;
}
TokenEntity tokenEntity = null;
if(StringUtils.isNotBlank(token)) {
tokenEntity = tokenService.getTokenEntity(token);
}
if(tokenEntity != null) {
request.getSession().setAttribute("userId", tokenEntity.getUserid());
request.getSession().setAttribute("role", tokenEntity.getRole());
request.getSession().setAttribute("tableName", tokenEntity.getTablename());
request.getSession().setAttribute("username", tokenEntity.getUsername());
return true;
}
PrintWriter writer = null;
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
try {
writer = response.getWriter();
writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
} finally {
if(writer != null){
writer.close();
}
}
// throw new EIException("请先登录", 401);
return false;
}
}

@ -0,0 +1,125 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>入口页</title>
<link href="${pageContext.request.contextPath}/resources/xznstatic/css/jquery.dataTables.min.css" rel="stylesheet" type="text/css" />
<link href="${pageContext.request.contextPath}/resources/xznstatic/css/jquery.toast.min.css" rel="stylesheet" type="text/css">
<link href="${pageContext.request.contextPath}/resources/xznstatic/css/style.css" rel="stylesheet" type="text/css">
</head>
<style>
</style>
<body>
<div class="preloader-it">
<div class="la-anim-1"></div>
</div>
<div class="wrapper theme-1-active pimary-color-blue">
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="mobile-only-brand pull-left">
<div class="nav-header pull-left">
<div class="logo-wrap">
<a href="#"><span class="brand-text" id="pName"></span></a>
</div>
</div><a id="toggle_nav_btn" class="toggle-left-nav-btn inline-block ml-20 pull-left"
href="javascript:void(0);"><i class="zmdi zmdi-menu"></i></a><a id="toggle_mobile_search"
data-toggle="collapse" data-target="#search_form" class="mobile-only-view"
href="javascript:void(0);"><i class="zmdi zmdi-search"></i></a><a id="toggle_mobile_nav"
class="mobile-only-view" href="javascript:void(0);"><i class="zmdi zmdi-more"></i></a>
</div>
<div id="mobile_only_nav" class="mobile-only-nav pull-right">
<ul class="nav navbar-right top-nav pull-right">
<li class="dropdown auth-drp"><a href="#" class="dropdown-toggle pr-0" data-toggle="dropdown"><img
src="${pageContext.request.contextPath}/resources/xznstatic/img/user1.png" alt="user_auth" class="user-auth-img img-circle" /><span
class="user-online-status"></span></a>
<ul class="dropdown-menu user-auth-dropdown" data-dropdown-in="flipInX"
data-dropdown-out="flipOutX">
<li><a href="#" onclick="logout()"><i class="zmdi zmdi-power"></i><span>退出</span></a></li>
</ul>
</li>
</ul>
</div>
</nav>
<div class="fixed-sidebar-left">
<ul class="nav navbar-nav side-nav nicescroll-bar" id="side-menu">
<li>
<a href="${pageContext.request.contextPath}/jsp/modules/home/home.jsp" onclick="navClick(this);return false;">
<div class="pull-left">
<i class="zmdi zmdi-flag mr-20"></i>
<span class="right-nav-text">主页</span>
</div>
<div class="clearfix"></div>
</a>
</li>
</ul>
</div>
<div class="page-wrapper">
<div class="container-fluid pt-30">
<iframe id="mainIframe" src="${pageContext.request.contextPath}/jsp/modules/home/home.jsp" width="100%" frameborder="0" scrolling="auto" ></iframe>
</div>
<footer class="footer container-fluid pl-30 pr-30">
<div class="row">
<div class="col-sm-12">
<p id="copyright" style="text-align: center;"></p>
</div>
</div>
</footer>
</div>
</div>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/jquery.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/bootstrap.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/jquery.dataTables.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/jquery.slimscroll.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/jquery.waypoints.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/jquery.counterup.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/dropdown-bootstrap-extended.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/jquery.sparkline.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/owl.carousel.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/switchery.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/echarts-en.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/echarts-liquidfill.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/jquery.toast.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/init.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/dashboard-data.js"></script>
<script>
<%@ include file = "jsp/utils/menu.jsp" %>
<%@ include file = "jsp/static/setMenu.js" %>
<%@ include file = "jsp/utils/baseUrl.jsp" %>
// 用户登出
<%@ include file = "jsp/static/logout.jsp" %>
$(document).ready(function () {
//我的后台,session信息转移
if (window.localStorage.getItem("Token") != null && window.localStorage.getItem("Token") != 'null') {
if (window.sessionStorage.getItem("token") == null || window.sessionStorage.getItem("token") ==
'null') {
window.sessionStorage.setItem("token", window.localStorage.getItem("Token"));
window.sessionStorage.setItem("role", window.localStorage.getItem("role"));
window.sessionStorage.setItem("accountTableName", window.localStorage.getItem("sessionTable"));
window.sessionStorage.setItem("username", window.localStorage.getItem("adminName"));
}
}
$('.dropdown-toggle .hidden-xs').html(window.sessionStorage.getItem('username'));
$('#pName').text(projectName);
$('#copyright').text('欢迎使用' + projectName)
var token = window.sessionStorage.getItem("token");
if (token == "null" || token == null) {
alert("请登录后再操作");
window.location.href = ("jsp/login.jsp");
}
setMenu();
});
</script>
</body>
</html>

@ -0,0 +1,107 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>校园快递一站式服务系统</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/xznstatic/css/bootstrap4.2.1.min.css">
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/xznstatic/css/style.default.css" id="theme-stylesheet">
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/assets2/js/jquery.min.js"></script>
</head>
<body>
<div class="page login-page">
<div class="container d-flex align-items-center">
<div class="form-holder has-shadow">
<div class="row">
<div class="col-lg-6">
<div class="info d-flex align-items-center">
<div class="content">
<div class="logo">
<h1>欢迎登录</h1>
</div>
<p>校园快递一站式服务系统</p>
</div>
</div>
</div>
<div class="col-lg-6 bg-white">
<div class="form d-flex align-items-center">
<div class="content">
<form id="loginForm" action="" method="post" class="form-validate">
<input type="text" required placeholder="用户名" id="username" name="username" class="input-material">
<input type="password" name="password" required placeholder="密码" class="input-material">
<div style="margin: 10px 0;" id="submitBtn"></div>
<button type="submit" class="btn btn-primary" onclick="login()">登录</button>
</br>
<a href="modules/register/register.jsp">注册</a>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/bootstrap4.2.1.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/jquery.validate.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/xznstatic/js/front.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/jquery.form.js"></script>
<script type="text/javascript">
<%@ include file="utils/menu.jsp"%>
<%@ include file="utils/baseUrl.jsp"%>
var role = "";
var accountTableName = "";
//渲染角色选择
function setRoleOption() {
for (var i = 0; i < menus.length; i++) {
var divRoot = '<div class="custom-control custom-checkbox "><input type="radio" name="chk" class="custom-control-input" id="check' + i + '" value="' + menus[i].roleName + '" onclick="checkRole(\'' + menus[i].roleName + '\', \'' + menus[i].tableName + '\')"><label class="custom-control-label" for="check' + i + '">' + menus[i].roleName + '</label></div>';
$('#submitBtn').append(divRoot);
}
}
function checkRole(roleName, tableName) {
role = roleName;
$('#loginForm').attr('action', baseUrl + tableName + '/login?role='+role);
accountTableName = tableName;
}
function login() {
$("#loginForm").ajaxForm(function(res) {
if (role == "" || role == null) {
alert("请选择角色后再登录");
} else {
if (res.code == 0) {
alert("登录成功");
var username = $('#username').val();
window.sessionStorage.setItem('accountTableName',accountTableName)
window.sessionStorage.setItem('username',username);
window.sessionStorage.setItem('token', res.token);
window.sessionStorage.setItem('role', role);
window.location.href = "../index.jsp";
} else {
alert(res.msg);
}
}
});
}
function register(){
window.location.href = "modules/register/register.jsp"
}
function ready() {
setRoleOption();
}
document.addEventListener("DOMContentLoaded", ready);
</script>
</body>
</html>

@ -0,0 +1,257 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<%@ include file="../../static/head.jsp"%>
<link
href="http://www.bootcss.com/p/bootstrap-datetimepicker/bootstrap-datetimepicker/css/datetimepicker.css"
rel="stylesheet">
<script type="text/javascript" charset="utf-8">
window.UEDITOR_HOME_URL = "${pageContext.request.contextPath}/resources/ueditor/"; //UEDITOR_HOME_URL、config、all这三个顺序不能改变
</script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.all.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/lang/zh-cn/zh-cn.js"></script>
</head>
<style>
.error {
color: red;
}
</style>
<body>
<!-- Pre Loader -->
<div class="loading">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/Pre Loader -->
<div class="wrapper">
<!-- Page Content -->
<div id="content">
<!-- Top Navigation -->
<%@ include file="../../static/topNav.jsp"%>
<!-- Menu -->
<div class="container menu-nav">
<nav class="navbar navbar-expand-lg lochana-bg text-white">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="ti-menu text-white"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navUl" class="navbar-nav mr-auto">
</ul>
</div>
</nav>
</div>
<!-- /Menu -->
<!-- Breadcrumb -->
<!-- Page Title -->
<div class="container mt-0">
<div class="row breadcrumb-bar">
<div class="col-md-6">
<h3 class="block-title">编辑个人信息</h3>
</div>
<div class="col-md-6">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a
href="${pageContext.request.contextPath}/index.jsp"> <span
class="ti-home"></span>
</a></li>
<li class="breadcrumb-item">个人信息管理</li>
<li class="breadcrumb-item active">编辑个人信息</li>
</ol>
</div>
</div>
</div>
<!-- /Page Title -->
<!-- /Breadcrumb -->
<!-- Main Content -->
<div class="container">
<div class="row">
<!-- Widget Item -->
<div class="col-md-12">
<div class="widget-area-2 lochana-box-shadow">
<h3 class="widget-title">个人信息信息</h3>
<form id="addOrUpdateForm">
<div class="form-row">
<input id="updateId" name="id" type="hidden">
<div class="form-group col-md-6">
<label>用户名</label> <input id="username" name="username"
class="form-control" placeholder="用户名">
</div>
<div class="form-group col-md-6 mb-3">
<button id="submitBtn" type="button"
class="btn btn-primary btn-lg" style="margin-top: 30px;">提交</button>
</div>
</div>
</form>
</div>
</div>
<!-- /Widget Item -->
</div>
</div>
<!-- /Main Content -->
</div>
<!-- /Page Content -->
</div>
<!-- Back to Top -->
<a id="back-to-top" href="#" class="back-to-top"> <span
class="ti-angle-up"></span>
</a>
<!-- /Back to Top -->
<%@ include file="../../static/foot.jsp"%>
<script
src="${pageContext.request.contextPath}/resources/js/vue.min.js"></script>
<script
src="${pageContext.request.contextPath}/resources/js/jquery.ui.widget.js"></script>
<script
src="${pageContext.request.contextPath}/resources/js/jquery.fileupload.js"></script>
<script
src="${pageContext.request.contextPath}/resources/js/jquery.form.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/jquery.validate.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/messages_zh.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/card.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/datetimepicker/bootstrap-datetimepicker.min.js"></script>
<script>
<%@ include file="../../utils/menu.jsp"%>
<%@ include file="../../static/setMenu.js"%>
<%@ include file="../../utils/baseUrl.jsp"%>
var tableName = "";
var pageType = "add-or-update";
var updateId = "";
var accountTableName = ''
var ruleForm = {};
// 表单提交
function submit() {
if (validform() == true) {
$.ajax({
type : "POST",
url : baseUrl + accountTableName + "/update",
contentType : "application/json",
data : JSON.stringify({id: updateId,username: $('#username').val()}),
beforeSend : function(xhr) {
xhr.setRequestHeader("token", window.sessionStorage
.getItem('token'));
},
success : function(res) {
if (res.code == 0) {
alert("修改成功");
window.sessionStorage.setItem('username',$('#username').val())
window.location.reload();
} else if (res.code == 401) {
<%@ include file="../../static/toLogin.jsp"%>
} else {
alert(res.msg)
}
},
});
} else {
alert("表单未填完整或有错误");
}
}
// 表单校验
function validform() {
return $("#addOrUpdateForm").validate({
rules : {
username: {
required : true,
},
},
messages : {
username: {
required : "用户名不能为空",
},
}
}).form();
}
// 添加表单校验方法
function addValidation() {
jQuery.validator
.addMethod(
"isPhone",
function(value, element) {
var length = value.length;
var mobile = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/;
return this.optional(element)
|| (length == 11 && mobile.test(value));
}, "请填写正确的手机号码");
jQuery.validator.addMethod("isIdCardNo", function(value, element) {
return this.optional(element)
|| idCardNoUtil.checkIdCardNo(value);
}, "请正确输入您的身份证号码");
}
function getId() {
var userName = window.sessionStorage.getItem('username')
accountTableName = window.sessionStorage.getItem('accountTableName')
$.ajax({
type : "GET",
url : baseUrl + accountTableName + "/page",
data : {
username : userName
},
beforeSend : function(xhr) {
xhr.setRequestHeader("token", window.sessionStorage
.getItem('token'));
},
success : function(res) {
if (res.code == 0) {
updateId = res.data.list[0].id
$('#username').val(res.data.list[0].username)
} else if (res.code == 401) {
<%@ include file="../../static/toLogin.jsp"%>
} else {
alert(res.msg);
}
},
});
}
$(document).ready(function() {
//设置导航栏菜单
setMenu();
//添加表单校验信息文本
addValidation();
getId();
$('#submitBtn').on('click', function(e) {
e.preventDefault();
//console.log("点击了...提交按钮");
submit();
});
});
// 用户登出
<%@ include file="../../static/logout.jsp"%>
</script>
</body>
</html>

@ -0,0 +1,246 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<%@ include file="../../static/head.jsp"%>
<link
href="http://www.bootcss.com/p/bootstrap-datetimepicker/bootstrap-datetimepicker/css/datetimepicker.css"
rel="stylesheet">
<script type="text/javascript" charset="utf-8">
window.UEDITOR_HOME_URL = "${pageContext.request.contextPath}/resources/ueditor/"; //UEDITOR_HOME_URL、config、all这三个顺序不能改变
</script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.all.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/lang/zh-cn/zh-cn.js"></script>
</head>
<style>
.error {
color: red;
}
</style>
<body>
<!-- Pre Loader -->
<div class="loading">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/Pre Loader -->
<div class="wrapper">
<!-- Page Content -->
<div id="content">
<!-- Top Navigation -->
<%@ include file="../../static/topNav.jsp"%>
<!-- Menu -->
<div class="container menu-nav">
<nav class="navbar navbar-expand-lg lochana-bg text-white">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="ti-menu text-white"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navUl" class="navbar-nav mr-auto">
</ul>
</div>
</nav>
</div>
<!-- /Menu -->
<!-- Breadcrumb -->
<!-- Page Title -->
<div class="container mt-0">
<div class="row breadcrumb-bar">
<div class="col-md-6">
<h3 class="block-title">编辑修改密码</h3>
</div>
<div class="col-md-6">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a
href="${pageContext.request.contextPath}/index.jsp"> <span
class="ti-home"></span>
</a></li>
<li class="breadcrumb-item">修改密码管理</li>
<li class="breadcrumb-item active">编辑修改密码</li>
</ol>
</div>
</div>
</div>
<!-- /Page Title -->
<!-- /Breadcrumb -->
<!-- Main Content -->
<div class="container">
<div class="row">
<!-- Widget Item -->
<div class="col-md-12">
<div class="widget-area-2 lochana-box-shadow">
<h3 class="widget-title">修改密码信息</h3>
<form id="addOrUpdateForm">
<div class="form-row">
<input id="updateId" name="id" type="hidden">
<div class="form-group col-md-6">
<label>原密码</label> <input id="oldPassword" name="oldPassword"
class="form-control" placeholder="原密码">
</div>
<div class="form-group col-md-6">
<label>新密码</label> <input id="newPassword" name="newPassword"
class="form-control" placeholder="新密码">
</div>
<div class="form-group col-md-6">
<label>确认密码</label> <input id="confirmPassword"
name="confirmPassword" class="form-control"
placeholder="确认密码">
</div>
<div class="form-group col-md-6 mb-3">
<button id="submitBtn" type="button"
class="btn btn-primary btn-lg" style="margin-top: 30px;">提交</button>
</div>
</div>
</form>
</div>
</div>
<!-- /Widget Item -->
</div>
</div>
<!-- /Main Content -->
</div>
<!-- /Page Content -->
</div>
<!-- Back to Top -->
<a id="back-to-top" href="#" class="back-to-top"> <span
class="ti-angle-up"></span>
</a>
<!-- /Back to Top -->
<%@ include file="../../static/foot.jsp"%>
<script
src="${pageContext.request.contextPath}/resources/js/vue.min.js"></script>
<script
src="${pageContext.request.contextPath}/resources/js/jquery.ui.widget.js"></script>
<script
src="${pageContext.request.contextPath}/resources/js/jquery.fileupload.js"></script>
<script
src="${pageContext.request.contextPath}/resources/js/jquery.form.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/jquery.validate.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/messages_zh.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/card.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/datetimepicker/bootstrap-datetimepicker.min.js"></script>
<script>
<%@ include file="../../utils/menu.jsp"%>
<%@ include file="../../static/setMenu.js"%>
<%@ include file="../../utils/baseUrl.jsp"%>
var tableName = "xiugaimima";
var pageType = "add-or-update";
var updateId = "";
var password = '';
var accountTableName = ''
var ruleForm = {};
// 表单提交
function submit() {
if (validform() == true) {
if(password == $('#oldPassword').val()){
httpJson(accountTableName + "/update","POST",{
id:updateId,
mima: $('#newPassword').val(),
password: $('#newPassword').val()
},(res)=>{
if(res.code == 0){
window.location.href = '../../login.jsp';
alert('修改成功,请重新登陆');
}
});
}else{
alert('原密码输入错误')
}
} else {
alert("表单未填完整或有错误");
}
}
// 表单校验
function validform() {
return $("#addOrUpdateForm").validate({
rules : {
oldPassword : {
required : true,
},
newPassword : {
required : true,
},
confirmPassword : {
required : true,
equalTo: "#newPassword",
},
},
messages : {
oldPassword : {
required : "原密码不能为空",
},
newPassword : {
required : "新密码不能为空",
},
confirmPassword : {
required : "确认密码不能为空",
equalTo: "两次密码输入不一致",
},
}
}).form();
}
function getId() {
var userName = window.sessionStorage.getItem('username')
accountTableName = window.sessionStorage.getItem('accountTableName')
http(accountTableName+'/session','GET',{},(res)=>{
if(res.code == 0){
updateId = res.data.id;
if(res.data != null && res.data.mima != null && res.data.mima != ''){
password = res.data.mima;
} else if(res.data != null && res.data.password != null && res.data.password != ''){
password = res.data.password;
}
}
});
}
$(document).ready(function() {
//设置导航栏菜单
setMenu();
getId();
$('#submitBtn').on('click', function(e) {
e.preventDefault();
//console.log("点击了...提交按钮");
submit();
});
<%@ include file="../../static/myInfo.js"%>
});
// 用户登出
<%@ include file="../../static/logout.jsp"%>
</script>
</body>
</html>

@ -0,0 +1,683 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<%@ include file="../../static/head.jsp" %>
<link href="http://www.bootcss.com/p/bootstrap-datetimepicker/bootstrap-datetimepicker/css/datetimepicker.css"
rel="stylesheet">
<link href="${pageContext.request.contextPath}/resources/css/bootstrap-select.css" rel="stylesheet">
<link href="${pageContext.request.contextPath}/resources/css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" charset="utf-8">
window.UEDITOR_HOME_URL = "${pageContext.request.contextPath}/resources/ueditor/"; //UEDITOR_HOME_URL、config、all这三个顺序不能改变
</script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.all.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/lang/zh-cn/zh-cn.js"></script>
</head>
<style>
.error {
color: red;
}
</style>
<body>
<!-- Pre Loader -->
<div class="loading">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/Pre Loader -->
<div class="wrapper">
<!-- Page Content -->
<div id="content">
<!-- Top Navigation -->
<%@ include file="../../static/topNav.jsp" %>
<!-- Menu -->
<div class="container menu-nav">
<nav class="navbar navbar-expand-lg lochana-bg text-white">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="ti-menu text-white"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navUl" class="navbar-nav mr-auto">
</ul>
</div>
</nav>
</div>
<!-- /Menu -->
<!-- Breadcrumb -->
<!-- Page Title -->
<div class="container mt-0">
<div class="row breadcrumb-bar">
<div class="col-md-6">
<h3 class="block-title">编辑待取件表</h3>
</div>
<div class="col-md-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="${pageContext.request.contextPath}/index.jsp">
<span class="ti-home"></span>
</a>
</li>
<li class="breadcrumb-item">待取件表管理</li>
<li class="breadcrumb-item active">编辑待取件表</li>
</ol>
</div>
</div>
</div>
<!-- /Page Title -->
<!-- /Breadcrumb -->
<!-- Main Content -->
<div class="container">
<div class="row">
<!-- Widget Item -->
<div class="col-md-12">
<div class="widget-area-2 lochana-box-shadow">
<h3 class="widget-title">待取件表信息</h3>
<form id="addOrUpdateForm">
<div class="form-row">
<!-- 级联表的字段 -->
<div class="form-group col-md-6">
<label></label>
<div>
<select id="yonghuSelect" name="yonghuSelect"
class="selectpicker form-control" data-live-search="true"
title="请选择" data-header="请选择" data-size="5">
</select>
</div>
</div>
<div class="form-group col-md-6">
<label>学号</label>
<input id="studentnumber" name="studentnumber" class="form-control"
placeholder="学号" readonly>
</div>
<div class="form-group col-md-6">
<label>用户名称</label>
<input id="name" name="name" class="form-control"
placeholder="用户名称" readonly>
</div>
<div class="form-group col-md-6">
<label>性别</label>
<input id="sexValue" name="sexValue" class="form-control"
placeholder="性别" readonly>
</div>
<div class="form-group col-md-6">
<label>头像</label>
<img id="imgPhotoImg" src="" width="100" height="100">
</div>
<div class="form-group col-md-6">
<label>快递站点</label>
<div>
<select id="zhandianSelect" name="zhandianSelect"
class="selectpicker form-control" data-live-search="true"
title="请选择" data-header="请选择" data-size="5">
</select>
</div>
</div>
<div class="form-group col-md-6">
<label>站点地址</label>
<input id="address" name="address" class="form-control"
placeholder="站点地址" readonly>
</div>
<!-- 当前表的字段 -->
<input id="updateId" name="id" type="hidden">
<div class="form-group col-md-6">
<label>快递名称</label>
<input id="dqname" name="dqname" class="form-control"
placeholder="快递名称">
</div>
<input id="zhandianId" name="zhandianId" type="hidden">
<input id="yonghuId" name="yonghuId" type="hidden">
<div class="form-group col-md-6">
<label>快递大小</label>
<select id="kddxTypesSelect" name="kddxTypes" class="form-control">
</select>
</div>
<div class="form-group col-md-6">
<label>手机号</label>
<input id="dqphone" name="dqphone" class="form-control"
onchange="dqphoneChickValue(this)" placeholder="手机号">
</div>
<div class="form-group col-md-12 mb-3">
<button id="submitBtn" type="button" class="btn btn-primary btn-lg">提交</button>
<button id="exitBtn" type="button" class="btn btn-primary btn-lg">返回</button>
</div>
</div>
</form>
</div>
</div>
<!-- /Widget Item -->
</div>
</div>
<!-- /Main Content -->
</div>
<!-- /Page Content -->
</div>
<!-- Back to Top -->
<a id="back-to-top" href="#" class="back-to-top">
<span class="ti-angle-up"></span>
</a>
<!-- /Back to Top -->
<%@ include file="../../static/foot.jsp" %>
<script src="${pageContext.request.contextPath}/resources/js/vue.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.ui.widget.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.fileupload.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.form.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/jquery.validate.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/messages_zh.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/card.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/datetimepicker/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/bootstrap.min.js">
</script><script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/bootstrap-select.js"></script>
<script>
<%@ include file="../../utils/menu.jsp"%>
<%@ include file="../../static/setMenu.js"%>
<%@ include file="../../utils/baseUrl.jsp"%>
var tableName = "daiqu";
var pageType = "add-or-update";
var updateId = "";
var crossTableId = -1;
var crossTableName = '';
var ruleForm = {};
var crossRuleForm = {};
// 下拉框数组
<!-- 当前表的下拉框数组 -->
var kddxTypesOptions = [];
var kdztTypesOptions = [];
<!-- 级联表的下拉框数组 -->
var yonghuOptions = [];
var zhandianOptions = [];
var ruleForm = {};
// 文件上传
function upload() {
<!-- 当前表的文件上传 -->
}
// 表单提交
function submit() {
if (validform() == true && compare() == true) {
let data = {};
getContent();
if($("#zhandianId") !=null){
var zhandianId = $("#zhandianId").val();
if(zhandianId == null || zhandianId =='' || zhandianId == 'null'){
alert("站点不能为空");
return;
}
}
if($("#yonghuId") !=null){
var yonghuId = $("#yonghuId").val();
if(yonghuId == null || yonghuId =='' || yonghuId == 'null'){
alert("用户不能为空");
return;
}
}
let value = $('#addOrUpdateForm').serializeArray();
$.each(value, function (index, item) {
data[item.name] = item.value;
});
let json = JSON.stringify(data);
var urlParam;
var successMes = '';
if (updateId != null && updateId != "null" && updateId != '') {
urlParam = 'update';
successMes = '修改成功';
} else {
urlParam = 'save';
successMes = '添加成功';
}
httpJson("daiqu/" + urlParam, "POST", data, (res) => {
if(res.code == 0)
{
window.sessionStorage.removeItem('adddaiqu');
window.sessionStorage.removeItem('updateId');
let flag = true;
if (flag) {
alert(successMes);
}
if (window.sessionStorage.getItem('onlyme') != null && window.sessionStorage.getItem('onlyme') == "true") {
window.sessionStorage.removeItem('onlyme');
window.sessionStorage.setItem("reload","reload");
window.parent.location.href = "${pageContext.request.contextPath}/index.jsp";
} else {
window.location.href = "list.jsp";
}
}
});
} else {
alert("表单未填完整或有错误");
}
}
// 查询列表
<!-- 查询当前表的所有列表 -->
function kddxTypesSelect() {
//填充下拉框选项
http("dictionary/page?page=1&limit=100&sort=&order=&dicCode=kddx_types", "GET", {}, (res) => {
if(res.code == 0){
kddxTypesOptions = res.data.list;
}
});
}
function kdztTypesSelect() {
//填充下拉框选项
http("dictionary/page?page=1&limit=100&sort=&order=&dicCode=kdzt_types", "GET", {}, (res) => {
if(res.code == 0){
kdztTypesOptions = res.data.list;
}
});
}
<!-- 查询级联表的所有列表 -->
function yonghuSelect() {
//填充下拉框选项
http("yonghu/page?page=1&limit=100&sort=&order=", "GET", {}, (res) => {
if(res.code == 0){
yonghuOptions = res.data.list;
}
});
}
function yonghuSelectOne(id) {
http("yonghu/info/"+id, "GET", {}, (res) => {
if(res.code == 0){
ruleForm = res.data;
yonghuShowImg();
yonghuDataBind();
}
});
}
function zhandianSelect() {
//填充下拉框选项
http("zhandian/page?page=1&limit=100&sort=&order=", "GET", {}, (res) => {
if(res.code == 0){
zhandianOptions = res.data.list;
}
});
}
function zhandianSelectOne(id) {
http("zhandian/info/"+id, "GET", {}, (res) => {
if(res.code == 0){
ruleForm = res.data;
zhandianShowImg();
zhandianDataBind();
}
});
}
// 初始化下拉框
<!-- 初始化当前表的下拉框 -->
function initializationKddxtypesSelect(){
var kddxTypesSelect = document.getElementById('kddxTypesSelect');
if(kddxTypesSelect != null && kddxTypesOptions != null && kddxTypesOptions.length > 0 ){
for (var i = 0; i < kddxTypesOptions.length; i++) {
kddxTypesSelect.add(new Option(kddxTypesOptions[i].indexName,kddxTypesOptions[i].codeIndex));
}
}
}
function initializationKdzttypesSelect(){
var kdztTypesSelect = document.getElementById('kdztTypesSelect');
if(kdztTypesSelect != null && kdztTypesOptions != null && kdztTypesOptions.length > 0 ){
for (var i = 0; i < kdztTypesOptions.length; i++) {
kdztTypesSelect.add(new Option(kdztTypesOptions[i].indexName,kdztTypesOptions[i].codeIndex));
}
}
}
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
function initializationyonghuSelect() {
var yonghuSelect = document.getElementById('yonghuSelect');
if(yonghuSelect != null && yonghuOptions != null && yonghuOptions.length > 0 ) {
for (var i = 0; i < yonghuOptions.length; i++) {
yonghuSelect.add(new Option(yonghuOptions[i].name, yonghuOptions[i].id));
}
$("#yonghuSelect").change(function(e) {
yonghuSelectOne(e.target.value);
});
}
}
function initializationzhandianSelect() {
var zhandianSelect = document.getElementById('zhandianSelect');
if(zhandianSelect != null && zhandianOptions != null && zhandianOptions.length > 0 ) {
for (var i = 0; i < zhandianOptions.length; i++) {
zhandianSelect.add(new Option(zhandianOptions[i].zdname, zhandianOptions[i].id));
}
$("#zhandianSelect").change(function(e) {
zhandianSelectOne(e.target.value);
});
}
}
// 下拉框选项回显
function setSelectOption() {
<!-- 当前表的下拉框回显 -->
var kddxTypesSelect = document.getElementById("kddxTypesSelect");
if(kddxTypesSelect != null && kddxTypesOptions != null && kddxTypesOptions.length > 0 ) {
for (var i = 0; i < kddxTypesOptions.length; i++) {
if (kddxTypesOptions[i].codeIndex == ruleForm.kddxTypes) {//下拉框value对比,如果一致就赋值汉字
kddxTypesSelect.options[i].selected = true;
}
}
}
var kdztTypesSelect = document.getElementById("kdztTypesSelect");
if(kdztTypesSelect != null && kdztTypesOptions != null && kdztTypesOptions.length > 0 ) {
for (var i = 0; i < kdztTypesOptions.length; i++) {
if (kdztTypesOptions[i].codeIndex == ruleForm.kdztTypes) {//下拉框value对比,如果一致就赋值汉字
kdztTypesSelect.options[i].selected = true;
}
}
}
<!-- 级联表的下拉框回显 -->
var yonghuSelect = document.getElementById("yonghuSelect");
if(yonghuSelect != null && yonghuOptions != null && yonghuOptions.length > 0 ) {
for (var i = 0; i < yonghuOptions.length; i++) {
if (yonghuOptions[i].id == ruleForm.yonghuId) {//下拉框value对比,如果一致就赋值汉字
yonghuSelect.options[i+1].selected = true;
$("#yonghuSelect" ).selectpicker('refresh');
}
}
}
var zhandianSelect = document.getElementById("zhandianSelect");
if(zhandianSelect != null && zhandianOptions != null && zhandianOptions.length > 0 ) {
for (var i = 0; i < zhandianOptions.length; i++) {
if (zhandianOptions[i].id == ruleForm.zhandianId) {//下拉框value对比,如果一致就赋值汉字
zhandianSelect.options[i+1].selected = true;
$("#zhandianSelect" ).selectpicker('refresh');
}
}
}
}
// 填充富文本框
function setContent() {
<!-- 当前表的填充富文本框 -->
}
// 获取富文本框内容
function getContent() {
<!-- 获取当前表的富文本框内容 -->
}
//数字检查
<!-- 当前表的数字检查 -->
function dqphoneChickValue(e){
var this_val = e.value || 0;
/*if(this_val == 0){
e.value = "";
alert("0不允许输入");
return false;
}*/
var reg=/^[0-9]*$/;
if(!reg.test(this_val)){
e.value = "";
alert("输入不合法");
return false;
}
}
function exit() {
window.sessionStorage.removeItem("updateId");
window.sessionStorage.removeItem('adddaiqu');
window.location.href = "list.jsp";
}
// 表单校验
function validform() {
return $("#addOrUpdateForm").validate({
rules: {
dqname: "required",
zhandianId: "required",
yonghuId: "required",
kddxTypes: "required",
dqphone: "required",
takecode: "required",
kdztTypes: "required",
pickupTime: "required",
},
messages: {
dqname: "快递名称不能为空",
zhandianId: "站点不能为空",
yonghuId: "用户不能为空",
kddxTypes: "快递大小不能为空",
dqphone: "手机号不能为空",
takecode: "取件码不能为空",
kdztTypes: "快递状态不能为空",
pickupTime: "取件时间不能为空",
}
}).form();
}
// 获取当前详情
function getDetails() {
var adddaiqu = window.sessionStorage.getItem("adddaiqu");
if (adddaiqu != null && adddaiqu != "" && adddaiqu != "null") {
window.sessionStorage.removeItem('adddaiqu');
//注册表单验证
$(validform());
$('#submitBtn').text('新增');
} else {
$('#submitBtn').text('修改');
var userId = window.sessionStorage.getItem('userId');
updateId = userId;//先赋值登录用户id
var uId = window.sessionStorage.getItem('updateId');//获取修改传过来的id
if (uId != null && uId != "" && uId != "null") {
//如果修改id不为空就赋值修改id
updateId = uId;
}
window.sessionStorage.removeItem('updateId');
http("daiqu/info/" + updateId, "GET", {}, (res) => {
if(res.code == 0)
{
ruleForm = res.data
// 是/否下拉框回显
setSelectOption();
// 设置图片src
showImg();
// 数据填充
dataBind();
// 富文本框回显
setContent();
//注册表单验证
$(validform());
}
});
}
}
// 清除可能会重复渲染的selection
function clear(className) {
var elements = document.getElementsByClassName(className);
for (var i = elements.length - 1; i >= 0; i--) {
elements[i].parentNode.removeChild(elements[i]);
}
}
function dateTimePick() {
}
function dataBind() {
<!-- 级联表的数据回显 -->
yonghuDataBind();
zhandianDataBind();
<!-- 当前表的数据回显 -->
$("#updateId").val(ruleForm.id);
$("#dqname").val(ruleForm.dqname);
$("#zhandianId").val(ruleForm.zhandianId);
$("#yonghuId").val(ruleForm.yonghuId);
$("#dqphone").val(ruleForm.dqphone);
$("#takecode").val(ruleForm.takecode);
$("#pickupTime-input").val(ruleForm.pickupTime);
}
<!-- 级联表的数据回显 -->
function yonghuDataBind(){
<!-- 把id赋值给当前表的id-->
$("#yonghuId").val(ruleForm.id);
$("#studentnumber").val(ruleForm.studentnumber);
$("#name").val(ruleForm.name);
$("#username").val(ruleForm.username);
$("#password").val(ruleForm.password);
$("#sexValue").val(ruleForm.sexValue);
$("#dqphone").val(ruleForm.phone);
$("#zhuSuLou").val(ruleForm.zhuSuLou);
$("#dormitory").val(ruleForm.dormitory);
$("#role").val(ruleForm.role);
}
function zhandianDataBind(){
<!-- 把id赋值给当前表的id-->
$("#zhandianId").val(ruleForm.id);
$("#zdname").val(ruleForm.zdname);
$("#address").val(ruleForm.address);
}
//图片显示
function showImg() {
<!-- 当前表的图片 -->
<!-- 级联表的图片 -->
yonghuShowImg();
zhandianShowImg();
}
<!-- 级联表的图片 -->
function yonghuShowImg() {
debugger
$("#imgPhotoImg").attr("src",ruleForm.imgPhoto);
}
function zhandianShowImg() {
}
$(document).ready(function () {
//设置右上角用户名
$('.dropdown-menu h5').html(window.sessionStorage.getItem('username'))
//设置项目名
$('.sidebar-header h3 a').html(projectName)
//设置导航栏菜单
setMenu();
$('#exitBtn').on('click', function (e) {
e.preventDefault();
exit();
});
//初始化时间插件
dateTimePick();
//查询所有下拉框
<!-- 当前表的下拉框 -->
kddxTypesSelect();
kdztTypesSelect();
<!-- 查询级联表的下拉框(用id做option,用名字及其他参数做名字级联修改) -->
yonghuSelect();
zhandianSelect();
// 初始化下拉框
<!-- 初始化当前表的下拉框 -->
initializationKddxtypesSelect();
initializationKdzttypesSelect();
<!-- 初始化级联表的下拉框 -->
initializationyonghuSelect();
initializationzhandianSelect();
$(".selectpicker" ).selectpicker('refresh');
getDetails();
//初始化上传按钮
upload();
<%@ include file="../../static/myInfo.js"%>
$('#submitBtn').on('click', function (e) {
e.preventDefault();
//console.log("点击了...提交按钮");
submit();
});
readonly();
});
function readonly() {
if (window.sessionStorage.getItem('role') != '管理员') {
$('#jifen').attr('readonly', 'readonly');
//$('#money').attr('readonly', 'readonly');
}
}
//比较大小
function compare() {
var largerVal = null;
var smallerVal = null;
if (largerVal != null && smallerVal != null) {
if (largerVal <= smallerVal) {
alert(smallerName + '不能大于等于' + largerName);
return false;
}
}
return true;
}
// 用户登出
<%@ include file="../../static/logout.jsp"%>
</script>
</body>
</html>

@ -0,0 +1,327 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<%@ include file="../../static/head.jsp" %>
<link href="http://www.bootcss.com/p/bootstrap-datetimepicker/bootstrap-datetimepicker/css/datetimepicker.css"
rel="stylesheet">
<script type="text/javascript" charset="utf-8">
window.UEDITOR_HOME_URL = "${pageContext.request.contextPath}/resources/ueditor/"; //UEDITOR_HOME_URL、config、all这三个顺序不能改变
</script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.all.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/lang/zh-cn/zh-cn.js"></script>
</head>
<style>
</style>
<body>
<!-- Pre Loader -->
<div class="loading">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/Pre Loader -->
<div class="wrapper">
<!-- Page Content -->
<div id="content">
<!-- Top Navigation -->
<%@ include file="../../static/topNav.jsp" %>
<!-- Menu -->
<div class="container menu-nav">
<nav class="navbar navbar-expand-lg lochana-bg text-white">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="ti-menu text-white"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto" id="navUl">
</ul>
</div>
</nav>
</div>
<!-- /Menu -->
<!-- Breadcrumb -->
<!-- Page Title -->
<div class="container mt-0">
<div class="row breadcrumb-bar">
<div class="col-md-6">
<h3 class="block-title">编辑待取件表</h3>
</div>
<div class="col-md-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="${pageContext.request.contextPath}/index.jsp">
<span class="ti-home"></span>
</a>
</li>
<li class="breadcrumb-item">待取件表管理</li>
<li class="breadcrumb-item active">待取件表登记</li>
</ol>
</div>
</div>
</div>
<!-- /Page Title -->
<!-- /Breadcrumb -->
<!-- Main Content -->
<div class="container">
<div class="row">
<!-- Widget Item -->
<div class="col-md-12">
<div class="widget-area-2 lochana-box-shadow">
<h3 class="widget-title">待取件表信息</h3>
<form id="addOrUpdateForm">
<div class="form-row">
<!-- 级联表所有字段 -->
<div class="form-group col-md-6">
<label>学号</label>
<input id="studentnumber" name="studentnumber" class="form-control"
v-model="ruleForm.studentnumber" readonly>
</div>
<div class="form-group col-md-6">
<label>用户名称</label>
<input id="name" name="name" class="form-control"
v-model="ruleForm.name" readonly>
</div>
<div class="form-group col-md-6">
<label>账号</label>
<input id="username" name="username" class="form-control"
v-model="ruleForm.username" readonly>
</div>
<div class="form-group col-md-6">
<label>性别</label>
<input id="sexValue" name="sexValue" class="form-control"
v-model="ruleForm.sexValue" readonly>
</div>
<div class="form-group col-md-6">
<label>头像</label>
<img id="imgPhotoImg" width="100" height="100">
</div>
<div class="form-group col-md-6">
<label>联系电话</label>
<input id="phone" name="phone" class="form-control"
v-model="ruleForm.phone" readonly>
</div>
<div class="form-group col-md-6">
<label>住宿楼栋</label>
<input id="zhuSuLou" name="zhuSuLou" class="form-control"
v-model="ruleForm.zhuSuLou" readonly>
</div>
<div class="form-group col-md-6">
<label>寝室号</label>
<input id="dormitory" name="dormitory" class="form-control"
v-model="ruleForm.dormitory" readonly>
</div>
<div class="form-group col-md-6">
<label>身份</label>
<input id="role" name="role" class="form-control"
v-model="ruleForm.role" readonly>
</div>
<div class="form-group col-md-6">
<label>站点名称</label>
<input id="zdname" name="zdname" class="form-control"
v-model="ruleForm.zdname" readonly>
</div>
<div class="form-group col-md-6">
<label>站点地址</label>
<input id="address" name="address" class="form-control"
v-model="ruleForm.address" readonly>
</div>
<!-- 本表所有字段 -->
<input id="updateId" name="id" type="hidden">
<div class="form-group col-md-6">
<label>快递名称</label>
<input id="dqname" name="dqname" class="form-control"
v-model="ruleForm.dqname" readonly>
</div>
<input id="zhandianId" name="zhandianId" v-model="ruleForm.zhandianId" readonly type="hidden">
<input id="yonghuId" name="yonghuId" v-model="ruleForm.yonghuId" readonly type="hidden">
<div class="form-group col-md-6">
<label>快递大小</label>
<input id="kddxValue" name="kddxValue" class="form-control"
v-model="ruleForm.kddxValue" readonly>
</div>
<div class="form-group col-md-6">
<label>手机号</label>
<input id="dqphone" name="dqphone" class="form-control"
v-model="ruleForm.dqphone" readonly>
</div>
<div class="form-group col-md-6">
<label>取件码</label>
<input id="takecode" name="takecode" class="form-control"
v-model="ruleForm.takecode" readonly>
</div>
<div class="form-group col-md-6">
<label>快递状态</label>
<input id="kdztValue" name="kdztValue" class="form-control"
v-model="ruleForm.kdztValue" readonly>
</div>
<div class="form-group col-md-6">
<label>取件时间</label>
<input id="pickupTime" name="pickupTime" class="form-control"
v-model="ruleForm.pickupTime" readonly>
</div>
<div class="form-group col-md-12 mb-3">
<button id="exitBtn" type="button" class="btn btn-primary btn-lg">返回</button>
</div>
</div>
</form>
</div>
</div>
<!-- /Widget Item -->
</div>
</div>
<!-- /Main Content -->
</div>
<!-- /Page Content -->
</div>
<!-- Back to Top -->
<a id="back-to-top" href="#" class="back-to-top">
<span class="ti-angle-up"></span>
</a>
<!-- /Back to Top -->
<%@ include file="../../static/foot.jsp" %>
<script src="${pageContext.request.contextPath}/resources/js/vue.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.ui.widget.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.form.js"></script>
<script>
<%@ include file="../../utils/menu.jsp"%>
<%@ include file="../../static/setMenu.js"%>
<%@ include file="../../utils/baseUrl.jsp"%>
var tableName = "daiqu";
var pageType = "add-or-update";
var updateId = "";
var kddxTypesOptions = [];
var kdztTypesOptions = [];
var ruleForm = {};
var vm = new Vue({
el: '#addOrUpdateForm',
data: {
ruleForm: {},
},
beforeCreate: function () {
var id = window.sessionStorage.getItem("updateId");
if (id != null && id != "" && id != "null") {
$.ajax({
type: "GET",
url: baseUrl + "daiqu/info/" + id,
beforeSend: function (xhr) {
xhr.setRequestHeader("token", window.sessionStorage.getItem('token'));
},
success: function (res) {
if (res.code == 0) {
vm.ruleForm = res.data;
ruleForm = res.data;
showImg();
setContent();
} else if (res.code == 401) {
<%@ include file="../../static/toLogin.jsp"%>
} else {
alert(res.msg)
}
},
});
}
},
methods: {}
});
// 填充富文本框
function setContent() {
}
//图片显示
function showImg() {
$("#imgPhotoImg").attr("src", ruleForm.imgPhoto);
}
function exit() {
window.sessionStorage.removeItem("updateId");
window.sessionStorage.removeItem('adddaiqu');
window.location.href = "list.jsp";
}
// 下载
function download(fileName) {
var url = baseUrl+'file/download?fileName='+fileName;
window.open(url);
}
//设置下载
function setDownloadBtn() {
}
$(document).ready(function () {
//设置右上角用户名
$('.dropdown-menu h5').html(window.sessionStorage.getItem('username'))
//设置项目名
$('.sidebar-header h3 a').html(projectName)
setMenu();
$('#exitBtn').on('click', function (e) {
e.preventDefault();
exit();
});
<%@ include file="../../static/myInfo.js"%>
});
// 用户登出
<%@ include file="../../static/logout.jsp"%>
</script>
</body>
</html>

@ -0,0 +1,757 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<%@ include file="../../static/head.jsp" %>
<!-- font-awesome -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/font-awesome.min.css">
</head>
<style>
</style>
<body>
<!-- Pre Loader -->
<div class="loading">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/Pre Loader -->
<div class="wrapper">
<!-- Page Content -->
<div id="content">
<!-- Top Navigation -->
<%@ include file="../../static/topNav.jsp" %>
<!-- Menu -->
<div class="container menu-nav">
<nav class="navbar navbar-expand-lg lochana-bg text-white">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="ti-menu text-white"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navUl" class="navbar-nav mr-auto">
</ul>
</div>
</nav>
</div>
<!-- /Menu -->
<!-- Breadcrumb -->
<!-- Page Title -->
<div class="container mt-0">
<div class="row breadcrumb-bar">
<div class="col-md-6">
<h3 class="block-title">待取件表管理</h3>
</div>
<div class="col-md-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="${pageContext.request.contextPath}/index.jsp">
<span class="ti-home"></span>
</a>
</li>
<li class="breadcrumb-item">待取件表管理</li>
<li class="breadcrumb-item active">待取件表列表</li>
</ol>
</div>
</div>
</div>
<!-- /Page Title -->
<!-- /Breadcrumb -->
<!-- Main Content -->
<div class="container">
<div class="row">
<!-- Widget Item -->
<div class="col-md-12">
<div class="widget-area-2 lochana-box-shadow">
<h3 class="widget-title">待取件表列表</h3>
<div class="table-responsive mb-3">
<div class="col-sm-12">
<label>
快递名称
<input type="text" id="dqnameSearch" style="width: 140px;" class="form-control form-control-sm"
placeholder="快递名称" aria-controls="tableId">
</label>
<label>
快递大小
<select name="kddxTypesSelectSearch" style="width: 100px;" id="kddxTypesSelectSearch" class="form-control form-control-sm"
aria-controls="tableId">
</select>
</label>
<label>
取件时间
<input type="datetime-local" id="pickupTimeStartSearch" style="width: 190px;" class="form-control " placeholder="开始" aria-controls="tableId">
</label>
-
<label>
<input type="datetime-local" id="pickupTimeEndSearch" style="width: 190px;" class="form-control" placeholder="结束" aria-controls="tableId">
</label>
<button onclick="search()" type="button" class="btn btn-primary">查询</button>
<br/>
<button onclick="add()" type="button" class="btn btn-success 新增">添加</button>
<button onclick="graph()" type="button" class="btn btn-success 报表">报表</button>
<button onclick="deleteMore()" type="button" class="btn btn-danger 删除">批量删除</button>
</div>
<table id="tableId" class="table table-bordered table-striped">
<thead>
<tr>
<th class="no-sort" style="min-width: 35px;">
<div class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" id="select-all"
onclick="chooseAll()">
<label class="custom-control-label" for="select-all"></label>
</div>
</th>
<th >快递名称</th>
<th >用户名称</th>
<th >站点名称</th>
<th >站点地址</th>
<th >快递大小</th>
<th >手机号</th>
<th >取件码</th>
<th >快递状态</th>
<th >取件时间</th>
<th>操作</th>
</tr>
</thead>
<tbody id="thisTbody">
</tbody>
</table>
<div class="col-md-6 col-sm-3">
<div class="dataTables_length" id="tableId_length">
<select name="tableId_length" aria-controls="tableId" id="selectPageSize"
onchange="changePageSize()">
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
条 每页
</div>
</div>
<nav aria-label="Page navigation example">
<ul class="pagination justify-content-end">
<li class="page-item" id="tableId_previous" onclick="pageNumChange('pre')">
<a class="page-link" href="#" tabindex="-1">上一页</a>
</li>
<li class="page-item" id="tableId_next" onclick="pageNumChange('next')">
<a class="page-link" href="#">下一页</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<!-- /Widget Item -->
</div>
</div>
<!-- /Main Content -->
</div>
<!-- /Page Content -->
</div>
<!-- Back to Top -->
<a id="back-to-top" href="#" class="back-to-top">
<span class="ti-angle-up"></span>
</a>
<!-- /Back to Top -->
<%@ include file="../../static/foot.jsp" %>
<script language="javascript" type="text/javascript"
src="${pageContext.request.contextPath}/resources/My97DatePicker/WdatePicker.js"></script>
<script>
<%@ include file="../../utils/menu.jsp"%>
<%@ include file="../../static/setMenu.js"%>
<%@ include file="../../utils/baseUrl.jsp"%>
<%@ include file="../../static/getRoleButtons.js"%>
<%@ include file="../../static/crossBtnControl.js"%>
var tableName = "daiqu";
var pageType = "list";
var searchForm = {key: ""};
var pageIndex = 1;
var pageSize = 10;
var totalPage = 0;
var dataList = [];
var sortColumn = '';
var sortOrder = '';
var ids = [];
var checkAll = false;
var sexTypesOptions = [];
var kddxTypesOptions = [];
function init() {
// 满足条件渲染提醒接口
}
// 改变每页记录条数
function changePageSize() {
var selection = document.getElementById('selectPageSize');
var index = selection.selectedIndex;
pageSize = selection.options[index].value;
getDataList();
}
// 查询
function search() {
searchForm = {key: ""};
<!-- 级联表的级联字典表 -->
//用户名称
var nameSearchInput = $('#nameSearch');
if( nameSearchInput != null){
if (nameSearchInput.val() != null && nameSearchInput.val() != '') {
searchForm.name = $('#nameSearch').val();
}
}
var sexTypesSelectSearchInput = document.getElementById("sexTypesSelectSearch");
if(sexTypesSelectSearchInput != null){
var sexTypesIndex = sexTypesSelectSearchInput.selectedIndex;
if( sexTypesIndex != 0){
searchForm.sexTypes = document.getElementById("sexTypesSelectSearch").options[sexTypesIndex].value;
}
}
//站点名称
var zdnameSearchInput = $('#zdnameSearch');
if( zdnameSearchInput != null){
if (zdnameSearchInput.val() != null && zdnameSearchInput.val() != '') {
searchForm.zdname = $('#zdnameSearch').val();
}
}
<!-- 本表的查询条件 -->
//快递名称
var dqnameSearchInput = $('#dqnameSearch');
if( dqnameSearchInput != null){
if (dqnameSearchInput.val() != null && dqnameSearchInput.val() != '') {
searchForm.dqname = $('#dqnameSearch').val();
}
}
//快递大小
var kddxTypesSelectSearchInput = document.getElementById("kddxTypesSelectSearch");
if(kddxTypesSelectSearchInput != null){
var kddxTypesIndex = kddxTypesSelectSearchInput.selectedIndex;
if( kddxTypesIndex != 0){
searchForm.kddxTypes= document.getElementById("kddxTypesSelectSearch").options[kddxTypesIndex].value;
}
}
var pickupTimeStartSearch = $('#pickupTimeStartSearch');
if( pickupTimeStartSearch != null){
if (pickupTimeStartSearch.val() != null && pickupTimeStartSearch.val() != '') {
searchForm.pickupTimeStart = $('#pickupTimeStartSearch').val();
}
}
var pickupTimeEndSearch = $('#pickupTimeEndSearch');
if( pickupTimeEndSearch != null){
if (pickupTimeEndSearch.val() != null && pickupTimeEndSearch.val() != '') {
searchForm.pickupTimeEnd = $('#pickupTimeEndSearch').val();
}
}
getDataList();
}
// 获取数据列表
function getDataList() {
http("daiqu/page", "GET", {
page: pageIndex,
limit: pageSize,
sort: sortColumn,
order: sortOrder,
//本表的
dqname: searchForm.dqname,
kddxTypes: searchForm.kddxTypes,
pickupTimeStart: searchForm.pickupTimeStart,
pickupTimeEnd: searchForm.pickupTimeEnd,
//级联表的
name: searchForm.name,
sexTypes: searchForm.sexTypes,
zdname: searchForm.zdname,
}, (res) => {
if(res.code == 0)
{
clear();
$("#thisTbody").html("");
dataList = res.data.list;
totalPage = res.data.totalPage;
//var tbody = document.getElementById('tbMain');
for (var i = 0; i < dataList.length; i++) { //遍历一下表格数据  
var trow = setDataRow(dataList[i], i); //定义一个方法,返回tr数据 
$('#thisTbody').append(trow);
}
pagination(); //渲染翻页组件
getRoleButtons();// 权限按钮控制
}
})
;
}
// 渲染表格数据
function setDataRow(item, number) {
//创建行 
var row = document.createElement('tr');
row.setAttribute('class', 'useOnce');
//创建勾选框
var checkbox = document.createElement('td');
var checkboxDiv = document.createElement('div');
checkboxDiv.setAttribute("class", "custom-control custom-checkbox");
var checkboxInput = document.createElement('input');
checkboxInput.setAttribute("class", "custom-control-input");
checkboxInput.setAttribute("type", "checkbox");
checkboxInput.setAttribute('name', 'chk');
checkboxInput.setAttribute('value', item.id);
checkboxInput.setAttribute("id", number);
checkboxDiv.appendChild(checkboxInput);
var checkboxLabel = document.createElement('label');
checkboxLabel.setAttribute("class", "custom-control-label");
checkboxLabel.setAttribute("for", number);
checkboxDiv.appendChild(checkboxLabel);
checkbox.appendChild(checkboxDiv);
row.appendChild(checkbox)
//快递名称
var dqnameCell = document.createElement('td');
dqnameCell.innerHTML = item.dqname;
row.appendChild(dqnameCell);
//用户名称
var nameCell = document.createElement('td');
nameCell.innerHTML = item.name;
row.appendChild(nameCell);
//站点名称
var zdnameCell = document.createElement('td');
zdnameCell.innerHTML = item.zdname;
row.appendChild(zdnameCell);
//站点地址
var addressCell = document.createElement('td');
addressCell.innerHTML = item.address;
row.appendChild(addressCell);
//快递大小
var kddxTypesCell = document.createElement('td');
kddxTypesCell.innerHTML = item.kddxValue;
row.appendChild(kddxTypesCell);
//手机号
var dqphoneCell = document.createElement('td');
dqphoneCell.innerHTML = item.dqphone;
row.appendChild(dqphoneCell);
//取件码
var takecodeCell = document.createElement('td');
takecodeCell.innerHTML = item.takecode;
row.appendChild(takecodeCell);
//快递状态
var kdztTypesCell = document.createElement('td');
kdztTypesCell.innerHTML = item.kdztValue;
row.appendChild(kdztTypesCell);
//取件时间
var pickupTimeCell = document.createElement('td');
if(item.pickupTime != null){
pickupTimeCell.innerHTML = item.pickupTime;
}else{
pickupTimeCell.innerHTML = "暂无被取时间";
}
row.appendChild(pickupTimeCell);
//每行按钮
var btnGroup = document.createElement('td');
//修改按钮
var editBtn = document.createElement('button');
var editAttr = 'edit(' + item.id + ')';
editBtn.setAttribute("type", "button");
editBtn.setAttribute("class", "btn btn-warning btn-sm 修改");
editBtn.setAttribute("onclick", editAttr);
editBtn.innerHTML = "修改"
btnGroup.appendChild(editBtn)
//删除按钮
var deleteBtn = document.createElement('button');
var deleteAttr = 'remove(' + item.id + ')';
deleteBtn.setAttribute("type", "button");
deleteBtn.setAttribute("class", "btn btn-danger btn-sm 删除");
deleteBtn.setAttribute("onclick", deleteAttr);
deleteBtn.innerHTML = "删除"
btnGroup.appendChild(deleteBtn)
if(item.kdztValue == "待取"){
//详情按钮
var detailBtn = document.createElement('button');
var detailAttr = "pickUp(" + item.id + ')';
detailBtn.setAttribute("type", "button");
detailBtn.setAttribute("class", "btn btn-info btn-sm 取件");
detailBtn.setAttribute("onclick", detailAttr);
detailBtn.innerHTML = "立即取件"
btnGroup.appendChild(detailBtn)
}
if(item.kdztValue == "待取"){
//详情按钮
var detailBtn = document.createElement('button');
var detailAttr = "replaceExpress(" + item.id + ')';
detailBtn.setAttribute("type", "button");
detailBtn.setAttribute("class", "btn btn-success btn-sm 发布订单");
detailBtn.setAttribute("onclick", detailAttr);
detailBtn.innerHTML = "发布代取订单"
btnGroup.appendChild(detailBtn)
}
row.appendChild(btnGroup)
return row;
}
// 翻页
function pageNumChange(val) {
if (val == 'pre') {
pageIndex--;
} else if (val == 'next') {
pageIndex++;
} else {
pageIndex = val;
}
getDataList();
}
// 下载
function download(url) {
window.open(url);
}
// 渲染翻页组件
function pagination() {
var beginIndex = pageIndex;
var endIndex = pageIndex;
var point = 4;
//计算页码
for (var i = 0; i < 3; i++) {
if (endIndex == totalPage) {
break;
}
endIndex++;
point--;
}
for (var i = 0; i < 3; i++) {
if (beginIndex == 1) {
break;
}
beginIndex--;
point--;
}
if (point > 0) {
while (point > 0) {
if (endIndex == totalPage) {
break;
}
endIndex++;
point--;
}
while (point > 0) {
if (beginIndex == 1) {
break;
}
beginIndex--;
point--
}
}
// 是否显示 前一页 按钮
if (pageIndex > 1) {
$('#tableId_previous').show();
} else {
$('#tableId_previous').hide();
}
// 渲染页码按钮
for (var i = beginIndex; i <= endIndex; i++) {
var pageNum = document.createElement('li');
pageNum.setAttribute('onclick', "pageNumChange(" + i + ")");
if (pageIndex == i) {
pageNum.setAttribute('class', 'paginate_button page-item active useOnce');
} else {
pageNum.setAttribute('class', 'paginate_button page-item useOnce');
}
var pageHref = document.createElement('a');
pageHref.setAttribute('class', 'page-link');
pageHref.setAttribute('href', '#');
pageHref.setAttribute('aria-controls', 'tableId');
pageHref.setAttribute('data-dt-idx', i);
pageHref.setAttribute('tabindex', 0);
pageHref.innerHTML = i;
pageNum.appendChild(pageHref);
$('#tableId_next').before(pageNum);
}
// 是否显示 下一页 按钮
if (pageIndex < totalPage) {
$('#tableId_next').show();
$('#tableId_next a').attr('data-dt-idx', endIndex + 1);
} else {
$('#tableId_next').hide();
}
var pageNumInfo = "当前第 " + pageIndex + " 页,共 " + totalPage + " 页";
$('#tableId_info').html(pageNumInfo);
}
// 跳转到指定页
function toThatPage() {
//var index = document.getElementById('pageIndexInput').value;
if (index < 0 || index > totalPage) {
alert('请输入正确的页码');
} else {
pageNumChange(index);
}
}
// 全选/全不选
function chooseAll() {
checkAll = !checkAll;
var boxs = document.getElementsByName("chk");
for (var i = 0; i < boxs.length; i++) {
boxs[i].checked = checkAll;
}
}
// 批量删除
function deleteMore() {
ids = []
var boxs = document.getElementsByName("chk");
for (var i = 0; i < boxs.length; i++) {
if (boxs[i].checked) {
ids.push(boxs[i].value)
}
}
if (ids.length == 0) {
alert('请勾选要删除的记录');
} else {
remove(ids);
}
}
// 删除
function remove(id) {
var mymessage = confirm("真的要删除吗?");
if (mymessage == true) {
var paramArray = [];
if (id == ids) {
paramArray = id;
} else {
paramArray.push(id);
}
httpJson("daiqu/delete", "POST", paramArray, (res) => {
if(res.code == 0
)
{
getDataList();
alert('删除成功');
}
})
;
}
else {
alert("已取消操作");
}
}
//取件
function pickUp(id) {
var mymessage = confirm("你确定要取这件快递吗?");
if (mymessage == true) {
paramArray = id;
httpJson("daiqu/pickUp", "POST", paramArray, (res) => {
if(res.code == 0
)
{
getDataList();
alert('取件成功');
}
})
;
}
else {
alert("已取消操作");
}
}
//发布代取订单
function replaceExpress(id) {
var mymessage = confirm("你确定要对这件快递发起代取订单吗?");
if (mymessage == true) {
paramArray = id;
httpJson("daiqu/replaceExpress", "POST", paramArray, (res) => {
if(res.code == 0
)
{
getDataList();
alert('请求发布成功');
}
})
;
}
else {
alert("已取消操作");
}
}
// 用户登出
<%@ include file="../../static/logout.jsp"%>
//修改
function edit(id) {
window.sessionStorage.setItem('updateId', id)
window.location.href = "add-or-update.jsp"
}
//清除会重复渲染的节点
function clear() {
var elements = document.getElementsByClassName('useOnce');
for (var i = elements.length - 1; i >= 0; i--) {
elements[i].parentNode.removeChild(elements[i]);
}
}
//添加
function add() {
window.sessionStorage.setItem("adddaiqu", "adddaiqu");
window.location.href = "add-or-update.jsp"
}
//报表
function graph() {
window.location.href = "graph.jsp"
}
// 查看详情
function detail(id) {
window.sessionStorage.setItem("updateId", id);
window.location.href = "info.jsp";
}
//填充级联表搜索下拉框
function sexTypesSelectSearch() {
var sexTypesSelectSearch = document.getElementById('sexTypesSelectSearch');
if(sexTypesSelectSearch != null) {
sexTypesSelectSearch.add(new Option('-请选择-',''));
if (sexTypesOptions != null && sexTypesOptions.length > 0){
for (var i = 0; i < sexTypesOptions.length; i++) {
sexTypesSelectSearch.add(new Option(sexTypesOptions[i].indexName, sexTypesOptions[i].codeIndex));
}
}
}
}
//填充本表搜索下拉框
function kddxTypesSelectSearch() {
var kddxTypesSelectSearch = document.getElementById('kddxTypesSelectSearch');
if(kddxTypesSelectSearch != null) {
kddxTypesSelectSearch.add(new Option('-请选择-',''));
if (kddxTypesOptions != null && kddxTypesOptions.length > 0){
for (var i = 0; i < kddxTypesOptions.length; i++) {
kddxTypesSelectSearch.add(new Option(kddxTypesOptions[i].indexName,kddxTypesOptions[i].codeIndex));
}
}
}
}
//查询级联表搜索条件所有列表
function sexTypesSelect() {
//填充下拉框选项
http("dictionary/page?page=1&limit=100&sort=&order=&dicCode=sex_types", "GET", {}, (res) => {
if(res.code == 0){
sexTypesOptions = res.data.list;
}
});
}
//查询当前表搜索条件所有列表
function kddxTypesSelect() {
//填充下拉框选项
http("dictionary/page?page=1&limit=100&sort=&order=&dicCode=kddx_types", "GET", {}, (res) => {
if(res.code == 0){
kddxTypesOptions = res.data.list;
}
});
}
$(document).ready(function () {
//激活翻页按钮
$('#tableId_previous').attr('class', 'paginate_button page-item previous')
$('#tableId_next').attr('class', 'paginate_button page-item next')
//隐藏原生搜索框
$('#tableId_filter').hide()
//设置右上角用户名
$('.dropdown-menu h5').html(window.sessionStorage.getItem('username'))
//设置项目名
$('.sidebar-header h3 a').html(projectName)
setMenu();
init();
//查询级联表的搜索下拉框
sexTypesSelect();
//查询当前表的搜索下拉框
kddxTypesSelect();
getDataList();
//级联表的下拉框赋值
sexTypesSelectSearch();
//当前表的下拉框赋值
kddxTypesSelectSearch();
<%@ include file="../../static/myInfo.js"%>
});
</script>
</body>
</html>

@ -0,0 +1,487 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<%@ include file="../../static/head.jsp" %>
<link href="http://www.bootcss.com/p/bootstrap-datetimepicker/bootstrap-datetimepicker/css/datetimepicker.css"
rel="stylesheet">
<link href="${pageContext.request.contextPath}/resources/css/bootstrap-select.css" rel="stylesheet">
<link href="${pageContext.request.contextPath}/resources/css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" charset="utf-8">
window.UEDITOR_HOME_URL = "${pageContext.request.contextPath}/resources/ueditor/"; //UEDITOR_HOME_URL、config、all这三个顺序不能改变
</script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.all.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/lang/zh-cn/zh-cn.js"></script>
</head>
<style>
.error {
color: red;
}
</style>
<body>
<!-- Pre Loader -->
<div class="loading">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/Pre Loader -->
<div class="wrapper">
<!-- Page Content -->
<div id="content">
<!-- Top Navigation -->
<%@ include file="../../static/topNav.jsp" %>
<!-- Menu -->
<div class="container menu-nav">
<nav class="navbar navbar-expand-lg lochana-bg text-white">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="ti-menu text-white"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navUl" class="navbar-nav mr-auto">
</ul>
</div>
</nav>
</div>
<!-- /Menu -->
<!-- Breadcrumb -->
<!-- Page Title -->
<div class="container mt-0">
<div class="row breadcrumb-bar">
<div class="col-md-6">
<h3 class="block-title">编辑</h3>
</div>
<div class="col-md-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="${pageContext.request.contextPath}/index.jsp">
<span class="ti-home"></span>
</a>
</li>
<li class="breadcrumb-item">管理</li>
<li class="breadcrumb-item active">编辑</li>
</ol>
</div>
</div>
</div>
<!-- /Page Title -->
<!-- /Breadcrumb -->
<!-- Main Content -->
<div class="container">
<div class="row">
<!-- Widget Item -->
<div class="col-md-12">
<div class="widget-area-2 lochana-box-shadow">
<h3 class="widget-title">信息</h3>
<form id="addOrUpdateForm">
<div class="form-row">
<!-- 级联表的字段 -->
<!-- 当前表的字段 -->
<input id="updateId" name="id" type="hidden">
<div class="form-group col-md-6">
<label>用户名称</label>
<input id="name" name="name" class="form-control"
placeholder="用户名称">
</div>
<div class="form-group col-md-6">
<label>账号</label>
<input id="username" name="username" class="form-control"
placeholder="账号">
</div>
<div class="form-group col-md-6">
<label>性别</label>
<select id="sexTypesSelect" name="sexTypes" class="form-control">
</select>
</div>
<div class="form-group col-md-6">
<label>头像</label>
<img id="imgPhotoImg" src="" width="100" height="100">
<input name="file" type="file" id="imgPhotoupload"
class="form-control-file">
<input name="imgPhoto" id="imgPhoto-input" type="hidden">
</div>
<div class="form-group col-md-6">
<label>联系电话</label>
<input id="phone" name="phone" class="form-control"
onchange="phoneChickValue(this)" placeholder="联系电话">
</div>
<div class="form-group col-md-12 mb-3">
<button id="submitBtn" type="button" class="btn btn-primary btn-lg">提交</button>
<button id="exitBtn" type="button" class="btn btn-primary btn-lg">返回</button>
</div>
</div>
</form>
</div>
</div>
<!-- /Widget Item -->
</div>
</div>
<!-- /Main Content -->
</div>
<!-- /Page Content -->
</div>
<!-- Back to Top -->
<a id="back-to-top" href="#" class="back-to-top">
<span class="ti-angle-up"></span>
</a>
<!-- /Back to Top -->
<%@ include file="../../static/foot.jsp" %>
<script src="${pageContext.request.contextPath}/resources/js/vue.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.ui.widget.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.fileupload.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.form.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/jquery.validate.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/messages_zh.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/card.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/datetimepicker/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/bootstrap.min.js">
</script><script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/bootstrap-select.js"></script>
<script>
<%@ include file="../../utils/menu.jsp"%>
<%@ include file="../../static/setMenu.js"%>
<%@ include file="../../utils/baseUrl.jsp"%>
var tableName = "daiquren";
var pageType = "add-or-update";
var updateId = "";
var crossTableId = -1;
var crossTableName = '';
var ruleForm = {};
var crossRuleForm = {};
// 下拉框数组
<!-- 当前表的下拉框数组 -->
var sexTypesOptions = [];
<!-- 级联表的下拉框数组 -->
var ruleForm = {};
// 文件上传
function upload() {
<!-- 当前表的文件上传 -->
$('#imgPhotoupload').fileupload({
url: baseUrl + 'file/upload',
headers: {token: window.sessionStorage.getItem("token")},
dataType: 'json',
done: function (e, data) {
var photoUrl= baseUrl + 'file/download?fileName=' + data.result.file;
document.getElementById('imgPhotoImg').setAttribute('src',photoUrl);
document.getElementById('imgPhoto-input').setAttribute('value',photoUrl);
}
});
}
// 表单提交
function submit() {
if (validform() == true && compare() == true) {
let data = {};
getContent();
let value = $('#addOrUpdateForm').serializeArray();
$.each(value, function (index, item) {
data[item.name] = item.value;
});
let json = JSON.stringify(data);
var urlParam;
var successMes = '';
if (updateId != null && updateId != "null" && updateId != '') {
urlParam = 'update';
successMes = '修改成功';
} else {
urlParam = 'save';
successMes = '添加成功';
}
httpJson("daiquren/" + urlParam, "POST", data, (res) => {
if(res.code == 0)
{
window.sessionStorage.removeItem('adddaiquren');
window.sessionStorage.removeItem('updateId');
let flag = true;
if (flag) {
alert(successMes);
}
if (window.sessionStorage.getItem('onlyme') != null && window.sessionStorage.getItem('onlyme') == "true") {
window.sessionStorage.removeItem('onlyme');
window.sessionStorage.setItem("reload","reload");
window.parent.location.href = "${pageContext.request.contextPath}/index.jsp";
} else {
window.location.href = "list.jsp";
}
}
});
} else {
alert("表单未填完整或有错误");
}
}
// 查询列表
<!-- 查询当前表的所有列表 -->
function sexTypesSelect() {
//填充下拉框选项
http("dictionary/page?page=1&limit=100&sort=&order=&dicCode=sex_types", "GET", {}, (res) => {
if(res.code == 0){
sexTypesOptions = res.data.list;
}
});
}
<!-- 查询级联表的所有列表 -->
// 初始化下拉框
<!-- 初始化当前表的下拉框 -->
function initializationSextypesSelect(){
var sexTypesSelect = document.getElementById('sexTypesSelect');
if(sexTypesSelect != null && sexTypesOptions != null && sexTypesOptions.length > 0 ){
for (var i = 0; i < sexTypesOptions.length; i++) {
sexTypesSelect.add(new Option(sexTypesOptions[i].indexName,sexTypesOptions[i].codeIndex));
}
}
}
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
// 下拉框选项回显
function setSelectOption() {
<!-- 当前表的下拉框回显 -->
var sexTypesSelect = document.getElementById("sexTypesSelect");
if(sexTypesSelect != null && sexTypesOptions != null && sexTypesOptions.length > 0 ) {
for (var i = 0; i < sexTypesOptions.length; i++) {
if (sexTypesOptions[i].codeIndex == ruleForm.sexTypes) {//下拉框value对比,如果一致就赋值汉字
sexTypesSelect.options[i].selected = true;
}
}
}
<!-- 级联表的下拉框回显 -->
}
// 填充富文本框
function setContent() {
<!-- 当前表的填充富文本框 -->
}
// 获取富文本框内容
function getContent() {
<!-- 获取当前表的富文本框内容 -->
}
//数字检查
<!-- 当前表的数字检查 -->
function phoneChickValue(e){
var this_val = e.value || 0;
var reg=/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
if(!reg.test(this_val)){
e.value = "";
alert("手机号不正确");
return false;
}
}
function exit() {
window.sessionStorage.removeItem("updateId");
window.sessionStorage.removeItem('adddaiquren');
window.location.href = "list.jsp";
}
// 表单校验
function validform() {
return $("#addOrUpdateForm").validate({
rules: {
name: "required",
username: "required",
password: "required",
sexTypes: "required",
imgPhoto: "required",
phone: "required",
role: "required",
},
messages: {
name: "用户名称不能为空",
username: "账号不能为空",
password: "密码不能为空",
sexTypes: "性别不能为空",
imgPhoto: "头像不能为空",
phone: "联系电话不能为空",
role: "身份不能为空",
}
}).form();
}
// 获取当前详情
function getDetails() {
var adddaiquren = window.sessionStorage.getItem("adddaiquren");
if (adddaiquren != null && adddaiquren != "" && adddaiquren != "null") {
window.sessionStorage.removeItem('adddaiquren');
//注册表单验证
$(validform());
$('#submitBtn').text('新增');
} else {
$('#submitBtn').text('修改');
var userId = window.sessionStorage.getItem('userId');
updateId = userId;//先赋值登录用户id
var uId = window.sessionStorage.getItem('updateId');//获取修改传过来的id
if (uId != null && uId != "" && uId != "null") {
//如果修改id不为空就赋值修改id
updateId = uId;
}
window.sessionStorage.removeItem('updateId');
http("daiquren/info/" + updateId, "GET", {}, (res) => {
if(res.code == 0)
{
ruleForm = res.data
// 是/否下拉框回显
setSelectOption();
// 设置图片src
showImg();
// 数据填充
dataBind();
// 富文本框回显
setContent();
//注册表单验证
$(validform());
}
});
}
}
// 清除可能会重复渲染的selection
function clear(className) {
var elements = document.getElementsByClassName(className);
for (var i = elements.length - 1; i >= 0; i--) {
elements[i].parentNode.removeChild(elements[i]);
}
}
function dateTimePick() {
}
function dataBind() {
<!-- 级联表的数据回显 -->
<!-- 当前表的数据回显 -->
$("#updateId").val(ruleForm.id);
$("#name").val(ruleForm.name);
$("#username").val(ruleForm.username);
$("#password").val(ruleForm.password);
$("#phone").val(ruleForm.phone);
$("#role").val(ruleForm.role);
}
<!-- 级联表的数据回显 -->
//图片显示
function showImg() {
<!-- 当前表的图片 -->
$("#imgPhotoImg").attr("src",ruleForm.imgPhoto);
<!-- 级联表的图片 -->
}
<!-- 级联表的图片 -->
$(document).ready(function () {
//设置右上角用户名
$('.dropdown-menu h5').html(window.sessionStorage.getItem('username'))
//设置项目名
$('.sidebar-header h3 a').html(projectName)
//设置导航栏菜单
setMenu();
$('#exitBtn').on('click', function (e) {
e.preventDefault();
exit();
});
//初始化时间插件
dateTimePick();
//查询所有下拉框
<!-- 当前表的下拉框 -->
sexTypesSelect();
<!-- 查询级联表的下拉框(用id做option,用名字及其他参数做名字级联修改) -->
// 初始化下拉框
<!-- 初始化当前表的下拉框 -->
initializationSextypesSelect();
<!-- 初始化级联表的下拉框 -->
$(".selectpicker" ).selectpicker('refresh');
getDetails();
//初始化上传按钮
upload();
<%@ include file="../../static/myInfo.js"%>
$('#submitBtn').on('click', function (e) {
e.preventDefault();
//console.log("点击了...提交按钮");
submit();
});
readonly();
});
function readonly() {
if (window.sessionStorage.getItem('role') != '管理员') {
$('#jifen').attr('readonly', 'readonly');
//$('#money').attr('readonly', 'readonly');
}
}
//比较大小
function compare() {
var largerVal = null;
var smallerVal = null;
if (largerVal != null && smallerVal != null) {
if (largerVal <= smallerVal) {
alert(smallerName + '不能大于等于' + largerName);
return false;
}
}
return true;
}
// 用户登出
<%@ include file="../../static/logout.jsp"%>
</script>
</body>
</html>

@ -0,0 +1,245 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<%@ include file="../../static/head.jsp" %>
<link href="http://www.bootcss.com/p/bootstrap-datetimepicker/bootstrap-datetimepicker/css/datetimepicker.css"
rel="stylesheet">
<script type="text/javascript" charset="utf-8">
window.UEDITOR_HOME_URL = "${pageContext.request.contextPath}/resources/ueditor/"; //UEDITOR_HOME_URL、config、all这三个顺序不能改变
</script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.all.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/lang/zh-cn/zh-cn.js"></script>
</head>
<style>
</style>
<body>
<!-- Pre Loader -->
<div class="loading">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/Pre Loader -->
<div class="wrapper">
<!-- Page Content -->
<div id="content">
<!-- Top Navigation -->
<%@ include file="../../static/topNav.jsp" %>
<!-- Menu -->
<div class="container menu-nav">
<nav class="navbar navbar-expand-lg lochana-bg text-white">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="ti-menu text-white"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto" id="navUl">
</ul>
</div>
</nav>
</div>
<!-- /Menu -->
<!-- Breadcrumb -->
<!-- Page Title -->
<div class="container mt-0">
<div class="row breadcrumb-bar">
<div class="col-md-6">
<h3 class="block-title">编辑</h3>
</div>
<div class="col-md-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="${pageContext.request.contextPath}/index.jsp">
<span class="ti-home"></span>
</a>
</li>
<li class="breadcrumb-item">管理</li>
<li class="breadcrumb-item active">登记</li>
</ol>
</div>
</div>
</div>
<!-- /Page Title -->
<!-- /Breadcrumb -->
<!-- Main Content -->
<div class="container">
<div class="row">
<!-- Widget Item -->
<div class="col-md-12">
<div class="widget-area-2 lochana-box-shadow">
<h3 class="widget-title">信息</h3>
<form id="addOrUpdateForm">
<div class="form-row">
<!-- 级联表所有字段 -->
<!-- 本表所有字段 -->
<input id="updateId" name="id" type="hidden">
<div class="form-group col-md-6">
<label>用户名称</label>
<input id="name" name="name" class="form-control"
v-model="ruleForm.name" readonly>
</div>
<div class="form-group col-md-6">
<label>账号</label>
<input id="username" name="username" class="form-control"
v-model="ruleForm.username" readonly>
</div>
<div class="form-group col-md-6">
<label>性别</label>
<input id="sexValue" name="sexValue" class="form-control"
v-model="ruleForm.sexValue" readonly>
</div>
<div class="form-group col-md-6">
<label>头像</label>
<img id="imgPhotoImg" width="100" height="100">
</div>
<div class="form-group col-md-6">
<label>联系电话</label>
<input id="phone" name="phone" class="form-control"
v-model="ruleForm.phone" readonly>
</div>
<div class="form-group col-md-6">
<label>身份</label>
<input id="role" name="role" class="form-control"
v-model="ruleForm.role" readonly>
</div>
<div class="form-group col-md-12 mb-3">
<button id="exitBtn" type="button" class="btn btn-primary btn-lg">返回</button>
</div>
</div>
</form>
</div>
</div>
<!-- /Widget Item -->
</div>
</div>
<!-- /Main Content -->
</div>
<!-- /Page Content -->
</div>
<!-- Back to Top -->
<a id="back-to-top" href="#" class="back-to-top">
<span class="ti-angle-up"></span>
</a>
<!-- /Back to Top -->
<%@ include file="../../static/foot.jsp" %>
<script src="${pageContext.request.contextPath}/resources/js/vue.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.ui.widget.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.form.js"></script>
<script>
<%@ include file="../../utils/menu.jsp"%>
<%@ include file="../../static/setMenu.js"%>
<%@ include file="../../utils/baseUrl.jsp"%>
var tableName = "daiquren";
var pageType = "add-or-update";
var updateId = "";
var sexTypesOptions = [];
var ruleForm = {};
var vm = new Vue({
el: '#addOrUpdateForm',
data: {
ruleForm: {},
},
beforeCreate: function () {
var id = window.sessionStorage.getItem("updateId");
if (id != null && id != "" && id != "null") {
$.ajax({
type: "GET",
url: baseUrl + "daiquren/info/" + id,
beforeSend: function (xhr) {
xhr.setRequestHeader("token", window.sessionStorage.getItem('token'));
},
success: function (res) {
if (res.code == 0) {
vm.ruleForm = res.data;
ruleForm = res.data;
showImg();
setContent();
} else if (res.code == 401) {
<%@ include file="../../static/toLogin.jsp"%>
} else {
alert(res.msg)
}
},
});
}
},
methods: {}
});
// 填充富文本框
function setContent() {
}
//图片显示
function showImg() {
$("#imgPhotoImg").attr("src", ruleForm.imgPhoto);
}
function exit() {
window.sessionStorage.removeItem("updateId");
window.sessionStorage.removeItem('adddaiquren');
window.location.href = "list.jsp";
}
// 下载
function download(fileName) {
var url = baseUrl+'file/download?fileName='+fileName;
window.open(url);
}
//设置下载
function setDownloadBtn() {
}
$(document).ready(function () {
//设置右上角用户名
$('.dropdown-menu h5').html(window.sessionStorage.getItem('username'))
//设置项目名
$('.sidebar-header h3 a').html(projectName)
setMenu();
$('#exitBtn').on('click', function (e) {
e.preventDefault();
exit();
});
<%@ include file="../../static/myInfo.js"%>
});
// 用户登出
<%@ include file="../../static/logout.jsp"%>
</script>
</body>
</html>

@ -0,0 +1,607 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<%@ include file="../../static/head.jsp" %>
<!-- font-awesome -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/font-awesome.min.css">
</head>
<style>
</style>
<body>
<!-- Pre Loader -->
<div class="loading">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/Pre Loader -->
<div class="wrapper">
<!-- Page Content -->
<div id="content">
<!-- Top Navigation -->
<%@ include file="../../static/topNav.jsp" %>
<!-- Menu -->
<div class="container menu-nav">
<nav class="navbar navbar-expand-lg lochana-bg text-white">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="ti-menu text-white"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navUl" class="navbar-nav mr-auto">
</ul>
</div>
</nav>
</div>
<!-- /Menu -->
<!-- Breadcrumb -->
<!-- Page Title -->
<div class="container mt-0">
<div class="row breadcrumb-bar">
<div class="col-md-6">
<h3 class="block-title">管理</h3>
</div>
<div class="col-md-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="${pageContext.request.contextPath}/index.jsp">
<span class="ti-home"></span>
</a>
</li>
<li class="breadcrumb-item">管理</li>
<li class="breadcrumb-item active">列表</li>
</ol>
</div>
</div>
</div>
<!-- /Page Title -->
<!-- /Breadcrumb -->
<!-- Main Content -->
<div class="container">
<div class="row">
<!-- Widget Item -->
<div class="col-md-12">
<div class="widget-area-2 lochana-box-shadow">
<h3 class="widget-title">列表</h3>
<div class="table-responsive mb-3">
<div class="col-sm-12">
<label>
用户名称
<input type="text" id="nameSearch" style="width: 140px;" class="form-control form-control-sm"
placeholder="用户名称" aria-controls="tableId">
</label>
<label>
性别
<select name="sexTypesSelectSearch" style="width: 100px;" id="sexTypesSelectSearch" class="form-control form-control-sm"
aria-controls="tableId">
</select>
</label>
<button onclick="search()" type="button" class="btn btn-primary">查询</button>
<br/>
<button onclick="add()" type="button" class="btn btn-success 新增">添加</button>
<button onclick="graph()" type="button" class="btn btn-success 报表">报表</button>
<button onclick="deleteMore()" type="button" class="btn btn-danger 删除">批量删除</button>
</div>
<table id="tableId" class="table table-bordered table-striped">
<thead>
<tr>
<th class="no-sort" style="min-width: 35px;">
<div class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" id="select-all"
onclick="chooseAll()">
<label class="custom-control-label" for="select-all"></label>
</div>
</th>
<th >用户名称</th>
<th >账号</th>
<th >性别</th>
<th >头像</th>
<th >联系电话</th>
<th >身份</th>
<th>操作</th>
</tr>
</thead>
<tbody id="thisTbody">
</tbody>
</table>
<div class="col-md-6 col-sm-3">
<div class="dataTables_length" id="tableId_length">
<select name="tableId_length" aria-controls="tableId" id="selectPageSize"
onchange="changePageSize()">
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
条 每页
</div>
</div>
<nav aria-label="Page navigation example">
<ul class="pagination justify-content-end">
<li class="page-item" id="tableId_previous" onclick="pageNumChange('pre')">
<a class="page-link" href="#" tabindex="-1">上一页</a>
</li>
<li class="page-item" id="tableId_next" onclick="pageNumChange('next')">
<a class="page-link" href="#">下一页</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<!-- /Widget Item -->
</div>
</div>
<!-- /Main Content -->
</div>
<!-- /Page Content -->
</div>
<!-- Back to Top -->
<a id="back-to-top" href="#" class="back-to-top">
<span class="ti-angle-up"></span>
</a>
<!-- /Back to Top -->
<%@ include file="../../static/foot.jsp" %>
<script language="javascript" type="text/javascript"
src="${pageContext.request.contextPath}/resources/My97DatePicker/WdatePicker.js"></script>
<script>
<%@ include file="../../utils/menu.jsp"%>
<%@ include file="../../static/setMenu.js"%>
<%@ include file="../../utils/baseUrl.jsp"%>
<%@ include file="../../static/getRoleButtons.js"%>
<%@ include file="../../static/crossBtnControl.js"%>
var tableName = "daiquren";
var pageType = "list";
var searchForm = {key: ""};
var pageIndex = 1;
var pageSize = 10;
var totalPage = 0;
var dataList = [];
var sortColumn = '';
var sortOrder = '';
var ids = [];
var checkAll = false;
var sexTypesOptions = [];
function init() {
// 满足条件渲染提醒接口
}
// 改变每页记录条数
function changePageSize() {
var selection = document.getElementById('selectPageSize');
var index = selection.selectedIndex;
pageSize = selection.options[index].value;
getDataList();
}
// 查询
function search() {
searchForm = {key: ""};
<!-- 级联表的级联字典表 -->
<!-- 本表的查询条件 -->
//用户名称
var nameSearchInput = $('#nameSearch');
if( nameSearchInput != null){
if (nameSearchInput.val() != null && nameSearchInput.val() != '') {
searchForm.name = $('#nameSearch').val();
}
}
//性别
var sexTypesSelectSearchInput = document.getElementById("sexTypesSelectSearch");
if(sexTypesSelectSearchInput != null){
var sexTypesIndex = sexTypesSelectSearchInput.selectedIndex;
if( sexTypesIndex != 0){
searchForm.sexTypes= document.getElementById("sexTypesSelectSearch").options[sexTypesIndex].value;
}
}
getDataList();
}
// 获取数据列表
function getDataList() {
http("daiquren/page", "GET", {
page: pageIndex,
limit: pageSize,
sort: sortColumn,
order: sortOrder,
//本表的
name: searchForm.name,
sexTypes: searchForm.sexTypes,
//级联表的
}, (res) => {
if(res.code == 0)
{
clear();
$("#thisTbody").html("");
dataList = res.data.list;
totalPage = res.data.totalPage;
//var tbody = document.getElementById('tbMain');
for (var i = 0; i < dataList.length; i++) { //遍历一下表格数据  
var trow = setDataRow(dataList[i], i); //定义一个方法,返回tr数据 
$('#thisTbody').append(trow);
}
pagination(); //渲染翻页组件
getRoleButtons();// 权限按钮控制
}
})
;
}
// 渲染表格数据
function setDataRow(item, number) {
//创建行 
var row = document.createElement('tr');
row.setAttribute('class', 'useOnce');
//创建勾选框
var checkbox = document.createElement('td');
var checkboxDiv = document.createElement('div');
checkboxDiv.setAttribute("class", "custom-control custom-checkbox");
var checkboxInput = document.createElement('input');
checkboxInput.setAttribute("class", "custom-control-input");
checkboxInput.setAttribute("type", "checkbox");
checkboxInput.setAttribute('name', 'chk');
checkboxInput.setAttribute('value', item.id);
checkboxInput.setAttribute("id", number);
checkboxDiv.appendChild(checkboxInput);
var checkboxLabel = document.createElement('label');
checkboxLabel.setAttribute("class", "custom-control-label");
checkboxLabel.setAttribute("for", number);
checkboxDiv.appendChild(checkboxLabel);
checkbox.appendChild(checkboxDiv);
row.appendChild(checkbox)
//用户名称
var nameCell = document.createElement('td');
nameCell.innerHTML = item.name;
row.appendChild(nameCell);
//账号
var usernameCell = document.createElement('td');
usernameCell.innerHTML = item.username;
row.appendChild(usernameCell);
//性别
var sexTypesCell = document.createElement('td');
sexTypesCell.innerHTML = item.sexValue;
row.appendChild(sexTypesCell);
//头像
var imgPhotoCell = document.createElement('td');
var imgPhotoImg = document.createElement('img');
var imgPhotoImgValue = item.imgPhoto;
if(imgPhotoImgValue !=null && imgPhotoImgValue !='' && imgPhotoImgValue !='null'){
imgPhotoImg.setAttribute('src', imgPhotoImgValue);
imgPhotoImg.setAttribute('height', 100);
imgPhotoImg.setAttribute('width', 100);
imgPhotoCell.appendChild(imgPhotoImg);
}else{
imgPhotoCell.innerHTML = "暂无图片";
}
row.appendChild(imgPhotoCell);
//联系电话
var phoneCell = document.createElement('td');
phoneCell.innerHTML = item.phone;
row.appendChild(phoneCell);
//身份
var roleCell = document.createElement('td');
roleCell.innerHTML = item.role;
row.appendChild(roleCell);
//每行按钮
var btnGroup = document.createElement('td');
//详情按钮
var detailBtn = document.createElement('button');
var detailAttr = "detail(" + item.id + ')';
detailBtn.setAttribute("type", "button");
detailBtn.setAttribute("class", "btn btn-info btn-sm 查看");
detailBtn.setAttribute("onclick", detailAttr);
detailBtn.innerHTML = "查看"
btnGroup.appendChild(detailBtn)
//修改按钮
var editBtn = document.createElement('button');
var editAttr = 'edit(' + item.id + ')';
editBtn.setAttribute("type", "button");
editBtn.setAttribute("class", "btn btn-warning btn-sm 修改");
editBtn.setAttribute("onclick", editAttr);
editBtn.innerHTML = "修改"
btnGroup.appendChild(editBtn)
//删除按钮
var deleteBtn = document.createElement('button');
var deleteAttr = 'remove(' + item.id + ')';
deleteBtn.setAttribute("type", "button");
deleteBtn.setAttribute("class", "btn btn-danger btn-sm 删除");
deleteBtn.setAttribute("onclick", deleteAttr);
deleteBtn.innerHTML = "删除"
btnGroup.appendChild(deleteBtn)
row.appendChild(btnGroup)
return row;
}
// 翻页
function pageNumChange(val) {
if (val == 'pre') {
pageIndex--;
} else if (val == 'next') {
pageIndex++;
} else {
pageIndex = val;
}
getDataList();
}
// 下载
function download(url) {
window.open(url);
}
// 渲染翻页组件
function pagination() {
var beginIndex = pageIndex;
var endIndex = pageIndex;
var point = 4;
//计算页码
for (var i = 0; i < 3; i++) {
if (endIndex == totalPage) {
break;
}
endIndex++;
point--;
}
for (var i = 0; i < 3; i++) {
if (beginIndex == 1) {
break;
}
beginIndex--;
point--;
}
if (point > 0) {
while (point > 0) {
if (endIndex == totalPage) {
break;
}
endIndex++;
point--;
}
while (point > 0) {
if (beginIndex == 1) {
break;
}
beginIndex--;
point--
}
}
// 是否显示 前一页 按钮
if (pageIndex > 1) {
$('#tableId_previous').show();
} else {
$('#tableId_previous').hide();
}
// 渲染页码按钮
for (var i = beginIndex; i <= endIndex; i++) {
var pageNum = document.createElement('li');
pageNum.setAttribute('onclick', "pageNumChange(" + i + ")");
if (pageIndex == i) {
pageNum.setAttribute('class', 'paginate_button page-item active useOnce');
} else {
pageNum.setAttribute('class', 'paginate_button page-item useOnce');
}
var pageHref = document.createElement('a');
pageHref.setAttribute('class', 'page-link');
pageHref.setAttribute('href', '#');
pageHref.setAttribute('aria-controls', 'tableId');
pageHref.setAttribute('data-dt-idx', i);
pageHref.setAttribute('tabindex', 0);
pageHref.innerHTML = i;
pageNum.appendChild(pageHref);
$('#tableId_next').before(pageNum);
}
// 是否显示 下一页 按钮
if (pageIndex < totalPage) {
$('#tableId_next').show();
$('#tableId_next a').attr('data-dt-idx', endIndex + 1);
} else {
$('#tableId_next').hide();
}
var pageNumInfo = "当前第 " + pageIndex + " 页,共 " + totalPage + " 页";
$('#tableId_info').html(pageNumInfo);
}
// 跳转到指定页
function toThatPage() {
//var index = document.getElementById('pageIndexInput').value;
if (index < 0 || index > totalPage) {
alert('请输入正确的页码');
} else {
pageNumChange(index);
}
}
// 全选/全不选
function chooseAll() {
checkAll = !checkAll;
var boxs = document.getElementsByName("chk");
for (var i = 0; i < boxs.length; i++) {
boxs[i].checked = checkAll;
}
}
// 批量删除
function deleteMore() {
ids = []
var boxs = document.getElementsByName("chk");
for (var i = 0; i < boxs.length; i++) {
if (boxs[i].checked) {
ids.push(boxs[i].value)
}
}
if (ids.length == 0) {
alert('请勾选要删除的记录');
} else {
remove(ids);
}
}
// 删除
function remove(id) {
var mymessage = confirm("真的要删除吗?");
if (mymessage == true) {
var paramArray = [];
if (id == ids) {
paramArray = id;
} else {
paramArray.push(id);
}
httpJson("daiquren/delete", "POST", paramArray, (res) => {
if(res.code == 0
)
{
getDataList();
alert('删除成功');
}
})
;
}
else {
alert("已取消操作");
}
}
// 用户登出
<%@ include file="../../static/logout.jsp"%>
//修改
function edit(id) {
window.sessionStorage.setItem('updateId', id)
window.location.href = "add-or-update.jsp"
}
//清除会重复渲染的节点
function clear() {
var elements = document.getElementsByClassName('useOnce');
for (var i = elements.length - 1; i >= 0; i--) {
elements[i].parentNode.removeChild(elements[i]);
}
}
//添加
function add() {
window.sessionStorage.setItem("adddaiquren", "adddaiquren");
window.location.href = "add-or-update.jsp"
}
//报表
function graph() {
window.location.href = "graph.jsp"
}
// 查看详情
function detail(id) {
window.sessionStorage.setItem("updateId", id);
window.location.href = "info.jsp";
}
//填充级联表搜索下拉框
//填充本表搜索下拉框
function sexTypesSelectSearch() {
var sexTypesSelectSearch = document.getElementById('sexTypesSelectSearch');
if(sexTypesSelectSearch != null) {
sexTypesSelectSearch.add(new Option('-请选择-',''));
if (sexTypesOptions != null && sexTypesOptions.length > 0){
for (var i = 0; i < sexTypesOptions.length; i++) {
sexTypesSelectSearch.add(new Option(sexTypesOptions[i].indexName,sexTypesOptions[i].codeIndex));
}
}
}
}
//查询级联表搜索条件所有列表
//查询当前表搜索条件所有列表
function sexTypesSelect() {
//填充下拉框选项
http("dictionary/page?page=1&limit=100&sort=&order=&dicCode=sex_types", "GET", {}, (res) => {
if(res.code == 0){
sexTypesOptions = res.data.list;
}
});
}
$(document).ready(function () {
//激活翻页按钮
$('#tableId_previous').attr('class', 'paginate_button page-item previous')
$('#tableId_next').attr('class', 'paginate_button page-item next')
//隐藏原生搜索框
$('#tableId_filter').hide()
//设置右上角用户名
$('.dropdown-menu h5').html(window.sessionStorage.getItem('username'))
//设置项目名
$('.sidebar-header h3 a').html(projectName)
setMenu();
init();
//查询级联表的搜索下拉框
//查询当前表的搜索下拉框
sexTypesSelect();
getDataList();
//级联表的下拉框赋值
//当前表的下拉框赋值
sexTypesSelectSearch();
<%@ include file="../../static/myInfo.js"%>
});
</script>
</body>
</html>

@ -0,0 +1,449 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<%@ include file="../../static/head.jsp" %>
<link href="http://www.bootcss.com/p/bootstrap-datetimepicker/bootstrap-datetimepicker/css/datetimepicker.css"
rel="stylesheet">
<link href="${pageContext.request.contextPath}/resources/css/bootstrap-select.css" rel="stylesheet">
<link href="${pageContext.request.contextPath}/resources/css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" charset="utf-8">
window.UEDITOR_HOME_URL = "${pageContext.request.contextPath}/resources/ueditor/"; //UEDITOR_HOME_URL、config、all这三个顺序不能改变
</script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.all.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/lang/zh-cn/zh-cn.js"></script>
</head>
<style>
.error {
color: red;
}
</style>
<body>
<!-- Pre Loader -->
<div class="loading">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/Pre Loader -->
<div class="wrapper">
<!-- Page Content -->
<div id="content">
<!-- Top Navigation -->
<%@ include file="../../static/topNav.jsp" %>
<!-- Menu -->
<div class="container menu-nav">
<nav class="navbar navbar-expand-lg lochana-bg text-white">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="ti-menu text-white"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navUl" class="navbar-nav mr-auto">
</ul>
</div>
</nav>
</div>
<!-- /Menu -->
<!-- Breadcrumb -->
<!-- Page Title -->
<div class="container mt-0">
<div class="row breadcrumb-bar">
<div class="col-md-6">
<h3 class="block-title">编辑字典表</h3>
</div>
<div class="col-md-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="${pageContext.request.contextPath}/index.jsp">
<span class="ti-home"></span>
</a>
</li>
<li class="breadcrumb-item">字典表管理</li>
<li class="breadcrumb-item active">编辑字典表</li>
</ol>
</div>
</div>
</div>
<!-- /Page Title -->
<!-- /Breadcrumb -->
<!-- Main Content -->
<div class="container">
<div class="row">
<!-- Widget Item -->
<div class="col-md-12">
<div class="widget-area-2 lochana-box-shadow">
<h3 class="widget-title">字典表信息</h3>
<form id="addOrUpdateForm">
<div class="form-row">
<!-- 级联表的字段 -->
<!-- 当前表的字段 -->
<input id="updateId" name="id" type="hidden">
<div class="form-group col-md-6">
<label>字段</label>
<input id="dicCode" name="dicCode" class="form-control"
placeholder="字段">
</div>
<div class="form-group col-md-6">
<label>字段名</label>
<input id="dicName" name="dicName" class="form-control"
placeholder="字段名">
</div>
<div class="form-group col-md-6">
<label>编码</label>
<input id="codeIndex" name="codeIndex" class="form-control"
onchange="codeIndexChickValue(this)" placeholder="编码">
</div>
<div class="form-group col-md-6">
<label>编码名字</label>
<input id="indexName" name="indexName" class="form-control"
placeholder="编码名字">
</div>
<input id="superId" name="superId" type="hidden">
<div class="form-group col-md-12 mb-3">
<button id="submitBtn" type="button" class="btn btn-primary btn-lg">提交</button>
<button id="exitBtn" type="button" class="btn btn-primary btn-lg">返回</button>
</div>
</div>
</form>
</div>
</div>
<!-- /Widget Item -->
</div>
</div>
<!-- /Main Content -->
</div>
<!-- /Page Content -->
</div>
<!-- Back to Top -->
<a id="back-to-top" href="#" class="back-to-top">
<span class="ti-angle-up"></span>
</a>
<!-- /Back to Top -->
<%@ include file="../../static/foot.jsp" %>
<script src="${pageContext.request.contextPath}/resources/js/vue.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.ui.widget.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.fileupload.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.form.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/jquery.validate.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/messages_zh.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/card.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/datetimepicker/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/bootstrap.min.js">
</script><script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/bootstrap-select.js"></script>
<script>
<%@ include file="../../utils/menu.jsp"%>
<%@ include file="../../static/setMenu.js"%>
<%@ include file="../../utils/baseUrl.jsp"%>
var tableName = "dictionary";
var pageType = "add-or-update";
var updateId = "";
var crossTableId = -1;
var crossTableName = '';
var ruleForm = {};
var crossRuleForm = {};
// 下拉框数组
<!-- 当前表的下拉框数组 -->
<!-- 级联表的下拉框数组 -->
var ruleForm = {};
// 文件上传
function upload() {
<!-- 当前表的文件上传 -->
}
// 表单提交
function submit() {
if (validform() == true && compare() == true) {
let data = {};
getContent();
if($("#superId") !=null){
var superId = $("#superId").val();
if(superId == null || superId =='' || superId == 'null'){
alert("父字段id不能为空");
return;
}
}
let value = $('#addOrUpdateForm').serializeArray();
$.each(value, function (index, item) {
data[item.name] = item.value;
});
let json = JSON.stringify(data);
var urlParam;
var successMes = '';
if (updateId != null && updateId != "null" && updateId != '') {
urlParam = 'update';
successMes = '修改成功';
} else {
urlParam = 'save';
successMes = '添加成功';
}
httpJson("dictionary/" + urlParam, "POST", data, (res) => {
if(res.code == 0)
{
window.sessionStorage.removeItem('adddictionary');
window.sessionStorage.removeItem('updateId');
let flag = true;
if (flag) {
alert(successMes);
}
if (window.sessionStorage.getItem('onlyme') != null && window.sessionStorage.getItem('onlyme') == "true") {
window.sessionStorage.removeItem('onlyme');
window.sessionStorage.setItem("reload","reload");
window.parent.location.href = "${pageContext.request.contextPath}/index.jsp";
} else {
window.location.href = "list.jsp";
}
}
});
} else {
alert("表单未填完整或有错误");
}
}
// 查询列表
<!-- 查询当前表的所有列表 -->
<!-- 查询级联表的所有列表 -->
// 初始化下拉框
<!-- 初始化当前表的下拉框 -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
<!-- 初始化级联表的下拉框(要根据内容修改) -->
// 下拉框选项回显
function setSelectOption() {
<!-- 当前表的下拉框回显 -->
<!-- 级联表的下拉框回显 -->
}
// 填充富文本框
function setContent() {
<!-- 当前表的填充富文本框 -->
}
// 获取富文本框内容
function getContent() {
<!-- 获取当前表的富文本框内容 -->
}
//数字检查
<!-- 当前表的数字检查 -->
function codeIndexChickValue(e){
var this_val = e.value || 0;
/*if(this_val == 0){
e.value = "";
alert("0不允许输入");
return false;
}*/
var reg=/^[0-9]*$/;
if(!reg.test(this_val)){
e.value = "";
alert("输入不合法");
return false;
}
}
function exit() {
window.sessionStorage.removeItem("updateId");
window.sessionStorage.removeItem('adddictionary');
window.location.href = "list.jsp";
}
// 表单校验
function validform() {
return $("#addOrUpdateForm").validate({
rules: {
dicCode: "required",
dicName: "required",
codeIndex: "required",
indexName: "required",
superId: "required",
},
messages: {
dicCode: "字段不能为空",
dicName: "字段名不能为空",
codeIndex: "编码不能为空",
indexName: "编码名字不能为空",
superId: "父字段id不能为空",
}
}).form();
}
// 获取当前详情
function getDetails() {
var adddictionary = window.sessionStorage.getItem("adddictionary");
if (adddictionary != null && adddictionary != "" && adddictionary != "null") {
window.sessionStorage.removeItem('adddictionary');
//注册表单验证
$(validform());
$('#submitBtn').text('新增');
} else {
$('#submitBtn').text('修改');
var userId = window.sessionStorage.getItem('userId');
updateId = userId;//先赋值登录用户id
var uId = window.sessionStorage.getItem('updateId');//获取修改传过来的id
if (uId != null && uId != "" && uId != "null") {
//如果修改id不为空就赋值修改id
updateId = uId;
}
window.sessionStorage.removeItem('updateId');
http("dictionary/info/" + updateId, "GET", {}, (res) => {
if(res.code == 0)
{
ruleForm = res.data
// 是/否下拉框回显
setSelectOption();
// 设置图片src
showImg();
// 数据填充
dataBind();
// 富文本框回显
setContent();
//注册表单验证
$(validform());
}
});
}
}
// 清除可能会重复渲染的selection
function clear(className) {
var elements = document.getElementsByClassName(className);
for (var i = elements.length - 1; i >= 0; i--) {
elements[i].parentNode.removeChild(elements[i]);
}
}
function dateTimePick() {
}
function dataBind() {
<!-- 级联表的数据回显 -->
<!-- 当前表的数据回显 -->
$("#updateId").val(ruleForm.id);
$("#dicCode").val(ruleForm.dicCode);
$("#dicName").val(ruleForm.dicName);
$("#codeIndex").val(ruleForm.codeIndex);
$("#indexName").val(ruleForm.indexName);
$("#superId").val(ruleForm.superId);
}
<!-- 级联表的数据回显 -->
//图片显示
function showImg() {
<!-- 当前表的图片 -->
<!-- 级联表的图片 -->
}
<!-- 级联表的图片 -->
$(document).ready(function () {
//设置右上角用户名
$('.dropdown-menu h5').html(window.sessionStorage.getItem('username'))
//设置项目名
$('.sidebar-header h3 a').html(projectName)
//设置导航栏菜单
setMenu();
$('#exitBtn').on('click', function (e) {
e.preventDefault();
exit();
});
//初始化时间插件
dateTimePick();
//查询所有下拉框
<!-- 当前表的下拉框 -->
<!-- 查询级联表的下拉框(用id做option,用名字及其他参数做名字级联修改) -->
// 初始化下拉框
<!-- 初始化当前表的下拉框 -->
<!-- 初始化级联表的下拉框 -->
$(".selectpicker" ).selectpicker('refresh');
getDetails();
//初始化上传按钮
upload();
<%@ include file="../../static/myInfo.js"%>
$('#submitBtn').on('click', function (e) {
e.preventDefault();
//console.log("点击了...提交按钮");
submit();
});
readonly();
});
function readonly() {
if (window.sessionStorage.getItem('role') != '管理员') {
$('#jifen').attr('readonly', 'readonly');
//$('#money').attr('readonly', 'readonly');
}
}
//比较大小
function compare() {
var largerVal = null;
var smallerVal = null;
if (largerVal != null && smallerVal != null) {
if (largerVal <= smallerVal) {
alert(smallerName + '不能大于等于' + largerName);
return false;
}
}
return true;
}
// 用户登出
<%@ include file="../../static/logout.jsp"%>
</script>
</body>
</html>

@ -0,0 +1,233 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<%@ include file="../../static/head.jsp" %>
<link href="http://www.bootcss.com/p/bootstrap-datetimepicker/bootstrap-datetimepicker/css/datetimepicker.css"
rel="stylesheet">
<script type="text/javascript" charset="utf-8">
window.UEDITOR_HOME_URL = "${pageContext.request.contextPath}/resources/ueditor/"; //UEDITOR_HOME_URL、config、all这三个顺序不能改变
</script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.all.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/lang/zh-cn/zh-cn.js"></script>
</head>
<style>
</style>
<body>
<!-- Pre Loader -->
<div class="loading">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/Pre Loader -->
<div class="wrapper">
<!-- Page Content -->
<div id="content">
<!-- Top Navigation -->
<%@ include file="../../static/topNav.jsp" %>
<!-- Menu -->
<div class="container menu-nav">
<nav class="navbar navbar-expand-lg lochana-bg text-white">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="ti-menu text-white"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto" id="navUl">
</ul>
</div>
</nav>
</div>
<!-- /Menu -->
<!-- Breadcrumb -->
<!-- Page Title -->
<div class="container mt-0">
<div class="row breadcrumb-bar">
<div class="col-md-6">
<h3 class="block-title">编辑字典表</h3>
</div>
<div class="col-md-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="${pageContext.request.contextPath}/index.jsp">
<span class="ti-home"></span>
</a>
</li>
<li class="breadcrumb-item">字典表管理</li>
<li class="breadcrumb-item active">字典表登记</li>
</ol>
</div>
</div>
</div>
<!-- /Page Title -->
<!-- /Breadcrumb -->
<!-- Main Content -->
<div class="container">
<div class="row">
<!-- Widget Item -->
<div class="col-md-12">
<div class="widget-area-2 lochana-box-shadow">
<h3 class="widget-title">字典表信息</h3>
<form id="addOrUpdateForm">
<div class="form-row">
<!-- 级联表所有字段 -->
<!-- 本表所有字段 -->
<input id="updateId" name="id" type="hidden">
<div class="form-group col-md-6">
<label>字段</label>
<input id="dicCode" name="dicCode" class="form-control"
v-model="ruleForm.dicCode" readonly>
</div>
<div class="form-group col-md-6">
<label>字段名</label>
<input id="dicName" name="dicName" class="form-control"
v-model="ruleForm.dicName" readonly>
</div>
<div class="form-group col-md-6">
<label>编码</label>
<input id="codeIndex" name="codeIndex" class="form-control"
v-model="ruleForm.codeIndex" readonly>
</div>
<div class="form-group col-md-6">
<label>编码名字</label>
<input id="indexName" name="indexName" class="form-control"
v-model="ruleForm.indexName" readonly>
</div>
<input id="superId" name="superId" v-model="ruleForm.superId" readonly type="hidden">
<div class="form-group col-md-12 mb-3">
<button id="exitBtn" type="button" class="btn btn-primary btn-lg">返回</button>
</div>
</div>
</form>
</div>
</div>
<!-- /Widget Item -->
</div>
</div>
<!-- /Main Content -->
</div>
<!-- /Page Content -->
</div>
<!-- Back to Top -->
<a id="back-to-top" href="#" class="back-to-top">
<span class="ti-angle-up"></span>
</a>
<!-- /Back to Top -->
<%@ include file="../../static/foot.jsp" %>
<script src="${pageContext.request.contextPath}/resources/js/vue.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.ui.widget.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.form.js"></script>
<script>
<%@ include file="../../utils/menu.jsp"%>
<%@ include file="../../static/setMenu.js"%>
<%@ include file="../../utils/baseUrl.jsp"%>
var tableName = "dictionary";
var pageType = "add-or-update";
var updateId = "";
var ruleForm = {};
var vm = new Vue({
el: '#addOrUpdateForm',
data: {
ruleForm: {},
},
beforeCreate: function () {
var id = window.sessionStorage.getItem("updateId");
if (id != null && id != "" && id != "null") {
$.ajax({
type: "GET",
url: baseUrl + "dictionary/info/" + id,
beforeSend: function (xhr) {
xhr.setRequestHeader("token", window.sessionStorage.getItem('token'));
},
success: function (res) {
if (res.code == 0) {
vm.ruleForm = res.data;
ruleForm = res.data;
showImg();
setContent();
} else if (res.code == 401) {
<%@ include file="../../static/toLogin.jsp"%>
} else {
alert(res.msg)
}
},
});
}
},
methods: {}
});
// 填充富文本框
function setContent() {
}
//图片显示
function showImg() {
}
function exit() {
window.sessionStorage.removeItem("updateId");
window.sessionStorage.removeItem('adddictionary');
window.location.href = "list.jsp";
}
// 下载
function download(fileName) {
var url = baseUrl+'file/download?fileName='+fileName;
window.open(url);
}
//设置下载
function setDownloadBtn() {
}
$(document).ready(function () {
//设置右上角用户名
$('.dropdown-menu h5').html(window.sessionStorage.getItem('username'))
//设置项目名
$('.sidebar-header h3 a').html(projectName)
setMenu();
$('#exitBtn').on('click', function (e) {
e.preventDefault();
exit();
});
<%@ include file="../../static/myInfo.js"%>
});
// 用户登出
<%@ include file="../../static/logout.jsp"%>
</script>
</body>
</html>

@ -0,0 +1,527 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<%@ include file="../../static/head.jsp" %>
<!-- font-awesome -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/font-awesome.min.css">
</head>
<style>
</style>
<body>
<!-- Pre Loader -->
<div class="loading">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/Pre Loader -->
<div class="wrapper">
<!-- Page Content -->
<div id="content">
<!-- Top Navigation -->
<%@ include file="../../static/topNav.jsp" %>
<!-- Menu -->
<div class="container menu-nav">
<nav class="navbar navbar-expand-lg lochana-bg text-white">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="ti-menu text-white"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navUl" class="navbar-nav mr-auto">
</ul>
</div>
</nav>
</div>
<!-- /Menu -->
<!-- Breadcrumb -->
<!-- Page Title -->
<div class="container mt-0">
<div class="row breadcrumb-bar">
<div class="col-md-6">
<h3 class="block-title">字典表管理</h3>
</div>
<div class="col-md-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="${pageContext.request.contextPath}/index.jsp">
<span class="ti-home"></span>
</a>
</li>
<li class="breadcrumb-item">字典表管理</li>
<li class="breadcrumb-item active">字典表列表</li>
</ol>
</div>
</div>
</div>
<!-- /Page Title -->
<!-- /Breadcrumb -->
<!-- Main Content -->
<div class="container">
<div class="row">
<!-- Widget Item -->
<div class="col-md-12">
<div class="widget-area-2 lochana-box-shadow">
<h3 class="widget-title">字典表列表</h3>
<div class="table-responsive mb-3">
<div class="col-sm-12">
<button onclick="search()" type="button" class="btn btn-primary">查询</button>
<br/>
<button onclick="add()" type="button" class="btn btn-success 新增">添加</button>
<button onclick="graph()" type="button" class="btn btn-success 报表">报表</button>
<button onclick="deleteMore()" type="button" class="btn btn-danger 删除">批量删除</button>
</div>
<table id="tableId" class="table table-bordered table-striped">
<thead>
<tr>
<th class="no-sort" style="min-width: 35px;">
<div class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" id="select-all"
onclick="chooseAll()">
<label class="custom-control-label" for="select-all"></label>
</div>
</th>
<th >字段</th>
<th >字段名</th>
<th >编码</th>
<th >编码名字</th>
<th>操作</th>
</tr>
</thead>
<tbody id="thisTbody">
</tbody>
</table>
<div class="col-md-6 col-sm-3">
<div class="dataTables_length" id="tableId_length">
<select name="tableId_length" aria-controls="tableId" id="selectPageSize"
onchange="changePageSize()">
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
条 每页
</div>
</div>
<nav aria-label="Page navigation example">
<ul class="pagination justify-content-end">
<li class="page-item" id="tableId_previous" onclick="pageNumChange('pre')">
<a class="page-link" href="#" tabindex="-1">上一页</a>
</li>
<li class="page-item" id="tableId_next" onclick="pageNumChange('next')">
<a class="page-link" href="#">下一页</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<!-- /Widget Item -->
</div>
</div>
<!-- /Main Content -->
</div>
<!-- /Page Content -->
</div>
<!-- Back to Top -->
<a id="back-to-top" href="#" class="back-to-top">
<span class="ti-angle-up"></span>
</a>
<!-- /Back to Top -->
<%@ include file="../../static/foot.jsp" %>
<script language="javascript" type="text/javascript"
src="${pageContext.request.contextPath}/resources/My97DatePicker/WdatePicker.js"></script>
<script>
<%@ include file="../../utils/menu.jsp"%>
<%@ include file="../../static/setMenu.js"%>
<%@ include file="../../utils/baseUrl.jsp"%>
<%@ include file="../../static/getRoleButtons.js"%>
<%@ include file="../../static/crossBtnControl.js"%>
var tableName = "dictionary";
var pageType = "list";
var searchForm = {key: ""};
var pageIndex = 1;
var pageSize = 10;
var totalPage = 0;
var dataList = [];
var sortColumn = '';
var sortOrder = '';
var ids = [];
var checkAll = false;
function init() {
// 满足条件渲染提醒接口
}
// 改变每页记录条数
function changePageSize() {
var selection = document.getElementById('selectPageSize');
var index = selection.selectedIndex;
pageSize = selection.options[index].value;
getDataList();
}
// 查询
function search() {
searchForm = {key: ""};
<!-- 级联表的级联字典表 -->
<!-- 本表的查询条件 -->
getDataList();
}
// 获取数据列表
function getDataList() {
http("dictionary/page", "GET", {
page: pageIndex,
limit: pageSize,
sort: sortColumn,
order: sortOrder,
//本表的
//级联表的
}, (res) => {
if(res.code == 0)
{
clear();
$("#thisTbody").html("");
dataList = res.data.list;
totalPage = res.data.totalPage;
//var tbody = document.getElementById('tbMain');
for (var i = 0; i < dataList.length; i++) { //遍历一下表格数据  
var trow = setDataRow(dataList[i], i); //定义一个方法,返回tr数据 
$('#thisTbody').append(trow);
}
pagination(); //渲染翻页组件
getRoleButtons();// 权限按钮控制
}
})
;
}
// 渲染表格数据
function setDataRow(item, number) {
//创建行 
var row = document.createElement('tr');
row.setAttribute('class', 'useOnce');
//创建勾选框
var checkbox = document.createElement('td');
var checkboxDiv = document.createElement('div');
checkboxDiv.setAttribute("class", "custom-control custom-checkbox");
var checkboxInput = document.createElement('input');
checkboxInput.setAttribute("class", "custom-control-input");
checkboxInput.setAttribute("type", "checkbox");
checkboxInput.setAttribute('name', 'chk');
checkboxInput.setAttribute('value', item.id);
checkboxInput.setAttribute("id", number);
checkboxDiv.appendChild(checkboxInput);
var checkboxLabel = document.createElement('label');
checkboxLabel.setAttribute("class", "custom-control-label");
checkboxLabel.setAttribute("for", number);
checkboxDiv.appendChild(checkboxLabel);
checkbox.appendChild(checkboxDiv);
row.appendChild(checkbox)
//字段
var dicCodeCell = document.createElement('td');
dicCodeCell.innerHTML = item.dicCode;
row.appendChild(dicCodeCell);
//字段名
var dicNameCell = document.createElement('td');
dicNameCell.innerHTML = item.dicName;
row.appendChild(dicNameCell);
//编码
var codeIndexCell = document.createElement('td');
codeIndexCell.innerHTML = item.codeIndex;
row.appendChild(codeIndexCell);
//编码名字
var indexNameCell = document.createElement('td');
indexNameCell.innerHTML = item.indexName;
row.appendChild(indexNameCell);
//每行按钮
var btnGroup = document.createElement('td');
//详情按钮
var detailBtn = document.createElement('button');
var detailAttr = "detail(" + item.id + ')';
detailBtn.setAttribute("type", "button");
detailBtn.setAttribute("class", "btn btn-info btn-sm 查看");
detailBtn.setAttribute("onclick", detailAttr);
detailBtn.innerHTML = "查看"
btnGroup.appendChild(detailBtn)
//修改按钮
var editBtn = document.createElement('button');
var editAttr = 'edit(' + item.id + ')';
editBtn.setAttribute("type", "button");
editBtn.setAttribute("class", "btn btn-warning btn-sm 修改");
editBtn.setAttribute("onclick", editAttr);
editBtn.innerHTML = "修改"
btnGroup.appendChild(editBtn)
//删除按钮
var deleteBtn = document.createElement('button');
var deleteAttr = 'remove(' + item.id + ')';
deleteBtn.setAttribute("type", "button");
deleteBtn.setAttribute("class", "btn btn-danger btn-sm 删除");
deleteBtn.setAttribute("onclick", deleteAttr);
deleteBtn.innerHTML = "删除"
btnGroup.appendChild(deleteBtn)
row.appendChild(btnGroup)
return row;
}
// 翻页
function pageNumChange(val) {
if (val == 'pre') {
pageIndex--;
} else if (val == 'next') {
pageIndex++;
} else {
pageIndex = val;
}
getDataList();
}
// 下载
function download(url) {
window.open(url);
}
// 渲染翻页组件
function pagination() {
var beginIndex = pageIndex;
var endIndex = pageIndex;
var point = 4;
//计算页码
for (var i = 0; i < 3; i++) {
if (endIndex == totalPage) {
break;
}
endIndex++;
point--;
}
for (var i = 0; i < 3; i++) {
if (beginIndex == 1) {
break;
}
beginIndex--;
point--;
}
if (point > 0) {
while (point > 0) {
if (endIndex == totalPage) {
break;
}
endIndex++;
point--;
}
while (point > 0) {
if (beginIndex == 1) {
break;
}
beginIndex--;
point--
}
}
// 是否显示 前一页 按钮
if (pageIndex > 1) {
$('#tableId_previous').show();
} else {
$('#tableId_previous').hide();
}
// 渲染页码按钮
for (var i = beginIndex; i <= endIndex; i++) {
var pageNum = document.createElement('li');
pageNum.setAttribute('onclick', "pageNumChange(" + i + ")");
if (pageIndex == i) {
pageNum.setAttribute('class', 'paginate_button page-item active useOnce');
} else {
pageNum.setAttribute('class', 'paginate_button page-item useOnce');
}
var pageHref = document.createElement('a');
pageHref.setAttribute('class', 'page-link');
pageHref.setAttribute('href', '#');
pageHref.setAttribute('aria-controls', 'tableId');
pageHref.setAttribute('data-dt-idx', i);
pageHref.setAttribute('tabindex', 0);
pageHref.innerHTML = i;
pageNum.appendChild(pageHref);
$('#tableId_next').before(pageNum);
}
// 是否显示 下一页 按钮
if (pageIndex < totalPage) {
$('#tableId_next').show();
$('#tableId_next a').attr('data-dt-idx', endIndex + 1);
} else {
$('#tableId_next').hide();
}
var pageNumInfo = "当前第 " + pageIndex + " 页,共 " + totalPage + " 页";
$('#tableId_info').html(pageNumInfo);
}
// 跳转到指定页
function toThatPage() {
//var index = document.getElementById('pageIndexInput').value;
if (index < 0 || index > totalPage) {
alert('请输入正确的页码');
} else {
pageNumChange(index);
}
}
// 全选/全不选
function chooseAll() {
checkAll = !checkAll;
var boxs = document.getElementsByName("chk");
for (var i = 0; i < boxs.length; i++) {
boxs[i].checked = checkAll;
}
}
// 批量删除
function deleteMore() {
ids = []
var boxs = document.getElementsByName("chk");
for (var i = 0; i < boxs.length; i++) {
if (boxs[i].checked) {
ids.push(boxs[i].value)
}
}
if (ids.length == 0) {
alert('请勾选要删除的记录');
} else {
remove(ids);
}
}
// 删除
function remove(id) {
var mymessage = confirm("真的要删除吗?");
if (mymessage == true) {
var paramArray = [];
if (id == ids) {
paramArray = id;
} else {
paramArray.push(id);
}
httpJson("dictionary/delete", "POST", paramArray, (res) => {
if(res.code == 0
)
{
getDataList();
alert('删除成功');
}
})
;
}
else {
alert("已取消操作");
}
}
// 用户登出
<%@ include file="../../static/logout.jsp"%>
//修改
function edit(id) {
window.sessionStorage.setItem('updateId', id)
window.location.href = "add-or-update.jsp"
}
//清除会重复渲染的节点
function clear() {
var elements = document.getElementsByClassName('useOnce');
for (var i = elements.length - 1; i >= 0; i--) {
elements[i].parentNode.removeChild(elements[i]);
}
}
//添加
function add() {
window.sessionStorage.setItem("adddictionary", "adddictionary");
window.location.href = "add-or-update.jsp"
}
//报表
function graph() {
window.location.href = "graph.jsp"
}
// 查看详情
function detail(id) {
window.sessionStorage.setItem("updateId", id);
window.location.href = "info.jsp";
}
//填充级联表搜索下拉框
//填充本表搜索下拉框
//查询级联表搜索条件所有列表
//查询当前表搜索条件所有列表
$(document).ready(function () {
//激活翻页按钮
$('#tableId_previous').attr('class', 'paginate_button page-item previous')
$('#tableId_next').attr('class', 'paginate_button page-item next')
//隐藏原生搜索框
$('#tableId_filter').hide()
//设置右上角用户名
$('.dropdown-menu h5').html(window.sessionStorage.getItem('username'))
//设置项目名
$('.sidebar-header h3 a').html(projectName)
setMenu();
init();
//查询级联表的搜索下拉框
//查询当前表的搜索下拉框
getDataList();
//级联表的下拉框赋值
//当前表的下拉框赋值
<%@ include file="../../static/myInfo.js"%>
});
</script>
</body>
</html>

@ -0,0 +1,263 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<%@ include file="../../static/head.jsp" %>
<link href="http://www.bootcss.com/p/bootstrap-datetimepicker/bootstrap-datetimepicker/css/datetimepicker.css"
rel="stylesheet">
<script type="text/javascript" charset="utf-8">
window.UEDITOR_HOME_URL = "${pageContext.request.contextPath}/resources/ueditor/"; //UEDITOR_HOME_URL、config、all这三个顺序不能改变
</script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/ueditor.all.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/ueditor/lang/zh-cn/zh-cn.js"></script>
</head>
<style>
.error {
color: red;
}
</style>
<body>
<!-- Pre Loader -->
<div class="loading">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--/Pre Loader -->
<div class="wrapper">
<!-- Page Content -->
<div id="content">
<!-- Top Navigation -->
<%@ include file="../../static/topNav.jsp" %>
<!-- Menu -->
<div class="container menu-nav">
<nav class="navbar navbar-expand-lg lochana-bg text-white">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="ti-menu text-white"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navUl" class="navbar-nav mr-auto">
</ul>
</div>
</nav>
</div>
<!-- /Menu -->
<!-- Breadcrumb -->
<!-- Page Title -->
<div class="container mt-0">
<div class="row breadcrumb-bar">
<div class="col-md-6">
<h3 class="block-title">编辑</h3>
</div>
<div class="col-md-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="${pageContext.request.contextPath}/index.jsp">
<span class="ti-home"></span>
</a>
</li>
<li class="breadcrumb-item">管理</li>
<li class="breadcrumb-item active">编辑</li>
</ol>
</div>
</div>
</div>
<!-- /Page Title -->
<!-- /Breadcrumb -->
<!-- Main Content -->
<div class="container" style="width: 500px">
<div class="row" center>
<!-- Widget Item -->
<div class="col-md-12">
<div class="widget-area-2 lochana-box-shadow">
<h3 class="widget-title">忘记密码</h3>
<form id="addOrUpdateForm">
<div class="form-row">
<input id="updateId" name="id" type="hidden">
<div class="form-group col-md-12">
<label>用户名称</label>
<input id="name" name="name" class="form-control"
placeholder="用户名称">
</div>
<div class="form-group col-md-12">
<label>账号</label>
<input id="account" name="account" class="form-control"
placeholder="账号">
</div>
<div class="form-group col-md-12 mb-3">
<button id="exitBtn" type="button" class="btn btn-primary btn-lg">取消</button>
<button id="submitBtn" type="button" class="btn btn-primary btn-lg">找回</button>
</div>
</div>
</form>
</div>
</div>
<!-- /Widget Item -->
</div>
</div>
<!-- /Main Content -->
</div>
<!-- /Page Content -->
</div>
<!-- Back to Top -->
<a id="back-to-top" href="#" class="back-to-top">
<span class="ti-angle-up"></span>
</a>
<!-- /Back to Top -->
<%@ include file="../../static/foot.jsp" %>
<script src="${pageContext.request.contextPath}/resources/js/vue.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.ui.widget.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.fileupload.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.form.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/jquery.validate.min.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/messages_zh.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/validate/card.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath}/resources/js/datetimepicker/bootstrap-datetimepicker.min.js"></script>
<script>
<%@ include file="../../utils/menu.jsp"%>
<%@ include file="../../static/setMenu.js"%>
<%@ include file="../../utils/baseUrl.jsp"%>
var tableName = "yonghu";
var pageType = "add-or-update";
var updateId = "";
var crossTableId = -1;
var crossTableName = '';
var ruleForm = {};
var crossRuleForm = {};
var sbTypesOptions = [];
var ruleForm = {};
var vm = new Vue({
el: '#addOrUpdateForm',
data: {
ruleForm: {},
},
beforeCreate: function () {
var id = window.sessionStorage.getItem("updateId");
if (id != null && id != "" && id != "null") {
$.ajax({
type: "GET",
url: baseUrl + "yonghu/info/" + id,
beforeSend: function (xhr) {
xhr.setRequestHeader("token", window.sessionStorage.getItem('token'));
},
success: function (res) {
if (res.code == 0) {
vm.ruleForm = res.data;
} else if (res.code == 401) {
<%@ include file="../../static/toLogin.jsp"%>
} else {
alert(res.msg)
}
},
});
}
},
methods: {}
});
// 表单提交
function submit() {
if (validform() == true) {
let data = {};
let value = $('#addOrUpdateForm').serializeArray();
$.each(value, function (index, item) {
data[item.name] = item.value;
});
let json = JSON.stringify(data);
httpJson("yonghu/resetPass", "POST", data, (res) => {
if(res.code == 0){
alert("您的密码已经修改为123456");
window.parent.location.href = "../../login.jsp";
}
})
;
} else {
alert("表单未填完整或有错误");
}
}
//搜素输入检查
function idChickValue(e){
var this_val = e.value || 0;
var reg=/^[0-9]*$/;
if(!reg.test(this_val)){
e.value = "";
alert("输入不合法");
return false;
}
}
function balanceChickValue(e){
var this_val = e.value || 0;
var reg=/^[0-9]+.?[0-9]{1,2}$/;
if(!reg.test(this_val)){
e.value = "";
alert("输入不合法");
return false;
}
}
function creditChickValue(e){
var this_val = e.value || 0;
var reg=/^[0-9]*$/;
if(!reg.test(this_val)){
e.value = "";
alert("输入不合法");
return false;
}
}
function exit() {
window.location.href = "../../login.jsp";
}
// 表单校验
function validform() {
return $("#addOrUpdateForm").validate({
rules: {
name: "required",
account: "required",
password: "required",
password2: "required",
},
messages: {
name: "用户名不能为空",
account: "账号不能为空",
password: "密码不能为空",
password2: "确认密码不能为空",
}
}).form();
}
$(document).ready(function () {
<%@ include file="../../static/myInfo.js"%>
$('#submitBtn').on('click', function (e) {
e.preventDefault();
//console.log("点击了...提交按钮");
submit();
});
});
</script>
</body>
</html>

@ -0,0 +1,26 @@
function crossBtnControl(btnName){
var role = window.sessionStorage.getItem('role');
for(var i=0;i<menus.length;i++){
// 找到当前登录角色的菜单
if(menus[i].roleName == role){
var menu = menus[i].backMenu;
for(var j=0;j<menu.length;j++){
// 一级菜单
var menuChild = menu[j].child;
var secondMenuName = "";
for(var k=0;k<menuChild.length;k++){
//定位到当前list页
if(menuChild[k].tableName == tableName && k == 0){
var allButtons = menuChild[k].buttons;
if(allButtons.includes(btnName)){
return true;
}else{
return false;
}
}
}
}
}
}
}

@ -0,0 +1,13 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- Jquery Library-->
<script src="${pageContext.request.contextPath}/resources/js/jquery-3.2.1.min.js"></script>
<!-- Popper Library-->
<script src="${pageContext.request.contextPath}/resources/js/popper.min.js"></script>
<!-- Bootstrap Library-->
<script src="${pageContext.request.contextPath}/resources/js/bootstrap.min.js"></script>
<!-- Datatable -->
<script src="${pageContext.request.contextPath}/resources/datatable/jquery.dataTables.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/datatable/dataTables.bootstrap4.min.js"></script>
<!-- Custom Script-->
<script src="${pageContext.request.contextPath}/resources/js/custom.js"></script>

@ -0,0 +1,41 @@
function getRoleButtons() {
var role = window.sessionStorage.getItem('role');
var allButtons = ["新增", "修改", "查看", "删除", "发布", "取件", "完成", "报表", "寄件", "接单", "发布订单"];
for (var i = 0; i < menus.length; i++) {
// 找到当前登录角色的菜单
if (menus[i].roleName == role) {
//后台菜单
var backMenu = menus[i].backMenu;
for (var j = 0; j < backMenu.length; j++) {
// 一级菜单
var menuChild = backMenu[j].child;
for (var k = 0; k < menuChild.length; k++) {
// 二级菜单
if (tableName == menuChild[k].tableName) {
var buttons = menuChild[k].buttons;
//console.log("you can see: "+buttons);
//将allButtons剔除能看到的按钮剩下的就是不能看到的按钮
if(buttons && buttons.length>0){
for(var l=0;l<buttons.length;l++){
if(allButtons.includes(buttons[l])){
var index = allButtons.indexOf(buttons[l]);
allButtons.splice(index,1);
//console.log("l="+l+","+allButtons);
}
}
}
//console.log("you can't see: "+allButtons);
for (var m=0; m<allButtons.length; m++) {
var elements = document.getElementsByClassName(allButtons[m]);
for (var n = elements.length - 1; n >= 0; n--) {
elements[n].parentNode.removeChild(elements[n]);
}
}
}
}
}
}
}
}

@ -0,0 +1,25 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>校园快递一站式服务系统</title>
<!-- Fav Icon Link -->
<link rel="shortcut icon" type="image/png" href="${pageContext.request.contextPath}/resources/images/fav.png">
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/bootstrap.min.css">
<!-- themify icons CSS -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/themify-icons.css">
<!-- Animations CSS -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/animate.css">
<!-- Main CSS -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/styles.css">
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/green.css" id="style_theme">
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/responsive.css">
<!-- morris charts -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/charts/css/morris.css">
<!-- jvectormap -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/jquery-jvectormap.css">
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/datatable/dataTables.bootstrap4.min.css">
<script src="${pageContext.request.contextPath}/resources/js/modernizr.min.js"></script>

@ -0,0 +1,32 @@
function iframeAuto() {
try {
if (window != parent) {
//定位需要调整的frame框架在父级窗口中查找
var a = parent.document.getElementsByTagName("iframe");
for (var i = 0; i < a.length; i++) {
if (a[i].contentWindow == window) {
var h1 = 0, h2 = 0;
a[i].parentNode.style.height = a[i].offsetHeight + "px";
a[i].style.height = "10px"; //首先设置高度为10px,后面会修改
if (document.documentElement && document.documentElement.scrollHeight) {
h1 = document.documentElement.scrollHeight;
}
if (document.body) h2 = document.body.scrollHeight;
var h = Math.max(h1, h2); //取两者中的较大值
if (document.all) { h += 4; }
if (window.opera) { h += 1; }
//调整框架的大小
a[i].style.height = a[i].parentNode.style.height = h + "px";
}
}
}
}
catch (ex) { }
}
//事件绑定的方法支持IE5以上版本
if (window.attachEvent) {
window.attachEvent("onload", iframeAuto);
}
else if (window.addEventListener) {
window.addEventListener('load', iframeAuto, false);
}

@ -0,0 +1,22 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
function logout() {
$.ajax({
type: "GET",
url: baseUrl + "users/logout",
beforeSend: function(xhr) {
xhr.setRequestHeader("token", window.sessionStorage.getItem('token'));
},
success: function(res){
if(res.code == 0 || res.code == 401){
window.sessionStorage.clear();
window.location.href="${pageContext.request.contextPath}/jsp/login.jsp"
}else{
alert(res.msg);
}
},
});
}
function toFront() {
window.location.assign(baseUrl+'front');
}

@ -0,0 +1,15 @@
//设置用户个人中心入口
if(window.sessionStorage.getItem('role') != '管理员'){
var accountTableName = window.sessionStorage.getItem('accountTableName');
$('#myinfo').attr('href','#');
$('#myinfo').on('click', function(e) {
e.preventDefault();
http(accountTableName+'/session','GET',{},(res)=>{
if(res.code == 0){
window.sessionStorage.setItem('userId',res.data.id);
window.sessionStorage.setItem('onlyme',true);
window.location.href = baseUrl + 'jsp/modules/' + accountTableName + '/add-or-update.jsp';
}
});
});
}

@ -0,0 +1,51 @@
function setMenu(){
if(window.sessionStorage.getItem('role') != '管理员'){
var accountTableName = window.sessionStorage.getItem('accountTableName');
$('#side-menu').append('<li><a href="javascript:void(0);" data-toggle="collapse" data-target="#app_dr"><div class="pull-left"><i class="zmdi zmdi-apps mr-20"></i><span class="right-nav-text">个人中心</span></div><div class="pull-right"><i class="zmdi zmdi-caret-down"></i></div><div class="clearfix"></div></a><ul id="app_dr" class="collapse collapse-level-1"><li><a href="' + baseUrl + 'jsp/modules/center/updatePassword.jsp" onclick="navClick(this);return false;">修改密码</a></li><li><a href="${pageContext.request.contextPath}/jsp/modules/' + accountTableName + '/add-or-update.jsp" onclick="navClick(this);return false;">个人信息</a></li></ul></li>');
http(accountTableName+'/session','GET',{},(res)=>{
if(res.code == 0){
window.sessionStorage.setItem('userId',res.data.id);
window.sessionStorage.setItem('onlyme',true);
}
});
} else {
$('#side-menu').append('<li><a href="javascript:void(0);" data-toggle="collapse" data-target="#app_dr"><div class="pull-left"><i class="zmdi zmdi-apps mr-20"></i><span class="right-nav-text">个人中心</span></div><div class="pull-right"><i class="zmdi zmdi-caret-down"></i></div><div class="clearfix"></div></a><ul id="app_dr" class="collapse collapse-level-1"><li><a href="' + baseUrl + 'jsp/modules/center/updatePassword.jsp" onclick="navClick(this);return false;">修改密码</a></li><li><a href="' + baseUrl + 'jsp/modules/center/info.jsp" onclick="navClick(this);return false;">个人信息</a></li></ul></li>');
}
var role = window.sessionStorage.getItem('role');
var menusHtml = '';
for(var i=0;i<menus.length;i++){
// 找到当前登录角色的菜单
if(menus[i].roleName == role){
var menuHtml = '';
var menu = menus[i].backMenu;
for(var j=0;j<menu.length;j++){
// 一级菜单
menuHtml += '<li><a href="javascript:void(0);" data-toggle="collapse" data-target="#app_m' + j + '"><div class="pull-left"><i class="zmdi zmdi-apps mr-20"></i><span class="right-nav-text">' + menu[j].menu + '</span></div><div class="pull-right"><i class="zmdi zmdi-caret-down"></i></div><div class="clearfix"></div></a><ul id="app_m' + j + '" class="collapse collapse-level-1">';
var menuSubHtml = '';
var secondMenuName = "";
var menuChild = menu[j].child;
for(var k=0;k<menuChild.length;k++){
// 二级菜单
if(secondMenuName == menuChild[k].tableName && secondMenuName != ""){
menuSubHtml += '<li><a href="${pageContext.request.contextPath}/jsp/modules/' + menuChild[k].tableName + '/graph.jsp" onclick="navClick(this);return false;">' + menuChild[k].menu + '</a></li>';
}else{
menuSubHtml += '<li><a href="${pageContext.request.contextPath}/jsp/modules/' + menuChild[k].tableName + '/list.jsp" onclick="navClick(this);return false;">' + menuChild[k].menu + '</a></li>';
secondMenuName = menuChild[k].tableName;
}
}
menuHtml += menuSubHtml + '</ul></li>';
}
menusHtml += menuHtml;
}
}
$('#side-menu').append(menusHtml);
if(hasMessage != null && hasMessage == '是' && role == '管理员'){
$('#side-menu').append('<li><a href="javascript:void(0);" data-toggle="collapse" data-target="#app_dr1"><div class="pull-left"><i class="zmdi zmdi-apps mr-20"></i><span class="right-nav-text">留言管理</span></div><div class="pull-right"><i class="zmdi zmdi-caret-down"></i></div><div class="clearfix"></div></a><ul id="app_dr1" class="collapse collapse-level-1"><li><a href="' + baseUrl + 'jsp/modules/messages/list.jsp" onclick="navClick(this);return false;">留言列表</a></li></ul></li>');
}
}
window.navClick = function(obj, rootNavName, subNavName) {
$('iframe').attr('src', obj.href);
}

@ -0,0 +1,5 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- token过期或未登录时强制跳转到登录页 -->
alert('token过期或未登录!')
window.location.href="${pageContext.request.contextPath}/jsp/login.jsp"

@ -0,0 +1,69 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
var baseUrl = "http://localhost:8080/kuaidizhan/";
var projectName = "校园快递一站式服务系统"
/**
* 网络请求
* @param {Object} url 地址
* @param {Object} method get/post
* @param {Object} param 参数
* @param {Object} callback 回调函数
*/
function http(url, type, data, callback) {
url = baseUrl + url;
$.ajax({
url: url,
beforeSend: function(request) {
request.setRequestHeader("token", window.sessionStorage.getItem("token"));
},
contentType: 'application/x-www-form-urlencoded',
data: data,
dataType: 'json',
type: type,
async: false,
success: function(result, status, xhr) {
if (result.code == 0) {
callback(result);
} else if (result.code == 401) {
window.location.href = '${pageContext.request.contextPath}/jsp/login.jsp';
} else {
alert(result.msg)
}
},
error: function(xhr, status, error) {
console.log(xhr, status, error)
}
});
}
function httpJson(url, type, data, callback) {
url = baseUrl + url;
var params = null;
if (data) {
var params = JSON.stringify(data);
}
$.ajax({
url: url,
beforeSend: function(request) {
request.setRequestHeader("token", window.sessionStorage.getItem("token"));
},
contentType: 'application/json',
data: params,
dataType: 'json',
type: type,
async: false,
success: function(result, status, xhr) {
if (result.code == 0) {
callback(result);
} else if (result.code == 401) {
window.location.href = '${pageContext.request.contextPath}/jsp/login.jsp';
} else {
alert(result.msg)
}
},
error: function(xhr, status, error) {
console.log(xhr, status, error)
}
});
}

@ -0,0 +1,219 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
var menus = [
{
"backMenu":[
{
"child":[
{
"buttons":[
"查看",
"新增",
"修改",
"删除",
],
"menu":"用户管理",
"menuJump":"列表",
"tableName":"yonghu"
}
],
"menu":"用户管理"
}
,{
"child":[
{
"buttons":[
"查看",
"新增",
"修改",
"删除",
],
"menu":"代取人管理",
"menuJump":"列表",
"tableName":"daiquren"
}
],
"menu":"代取人管理"
},
{
"child":[
{
"buttons":[
"查看",
"新增",
"修改",
"删除",
],
"menu":"快递站点管理",
"menuJump":"列表",
"tableName":"zhandian"
}
],
"menu":"快递站点管理"
},
{
"child":[
{
"buttons":[
"新增",
"修改",
"删除",
],
"menu":"待取件表管理",
"menuJump":"列表",
"tableName":"daiqu"
}
],
"menu":"待取件表管理"
}
,{
"child":[
{
"buttons":[
"新增",
"删除",
],
"menu":"快递接单表管理",
"menuJump":"列表",
"tableName":"jiedan"
}
],
"menu":"快递接单表管理"
}
,{
"child":[
{
"buttons":[
"查看",
"删除",
],
"menu":"已接单表管理",
"menuJump":"列表",
"tableName":"yijiedan"
}
],
"menu":"已接单表管理"
}
],
"frontMenu":[
],
"roleName":"管理员",
"tableName":"users"
},
{
"backMenu":[
{
"child":[
{
"buttons":[
"查看",
],
"menu":"快递站点管理",
"menuJump":"列表",
"tableName":"zhandian"
}
],
"menu":"快递站点管理"
},
{
"child":[
{
"buttons":[
"接单",
],
"menu":"快递接单表管理",
"menuJump":"列表",
"tableName":"jiedan"
}
],
"menu":"快递接单表管理"
}
,{
"child":[
{
"buttons":[
"查看",
],
"menu":"已接单表管理",
"menuJump":"列表",
"tableName":"yijiedan"
}
],
"menu":"已接单表管理"
}
],
"frontMenu":[
],
"roleName":"代取人",
"tableName":"daiquren"
},
{
"backMenu":[
{
"child":[
{
"buttons":[
"查看",
],
"menu":"快递站点管理",
"menuJump":"列表",
"tableName":"zhandian"
}
],
"menu":"快递站点管理"
},
{
"child":[
{
"buttons":[
"取件",
"发布订单",
],
"menu":"待取件表管理",
"menuJump":"列表",
"tableName":"daiqu"
}
],
"menu":"待取件表管理"
}
,{
"child":[
{
"buttons":[
"寄件",
],
"menu":"快递接单表管理",
"menuJump":"列表",
"tableName":"jiedan"
}
],
"menu":"快递接单表管理"
}
,{
"child":[
{
"buttons":[
"查看",
"完成",
],
"menu":"已接单表管理",
"menuJump":"列表",
"tableName":"yijiedan"
}
],
"menu":"已接单表管理"
}
],
"frontMenu":[
],
"roleName":"用户",
"tableName":"yonghu"
}
];
var hasMessage = '';

@ -1,10 +0,0 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# 依赖于环境的 Maven 主目录路径
/mavenHomeManager.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_23" default="true" project-jdk-name="23" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/main.iml" filepath="$PROJECT_DIR$/main.iml" />
</modules>
</component>
</project>

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
</component>
</project>

@ -1,60 +0,0 @@
package com.controller;
import java.io.*;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
@WebServlet("/download")
public class AntiLeechServlet extends HttpServlet {
// 允许访问的域名白名单(根据实际修改)
private static final String[] ALLOWED_DOMAINS = {
"http://your-domain.com",
"https://www.your-domain.com"
};
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 获取来源域名
String referer = request.getHeader("Referer");
// 防盗链检查
if (referer == null || !isAllowedDomain(referer)) {
response.sendError(HttpServletResponse.SC_FORBIDDEN, "禁止直接访问");
return;
}
// 文件路径配置(根据实际路径修改)
String filePath = getServletContext().getRealPath("/WEB-INF/resources/images/image.png");
File file = new File(filePath);
// 检查文件是否存在
if (!file.exists()) {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
// 设置响应头
response.setContentType("image/png");
response.setHeader("Content-Disposition", "attachment; filename=\"image.png\"");
response.setContentLength((int) file.length());
// 文件传输
try (InputStream in = new FileInputStream(file);
OutputStream out = response.getOutputStream()) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
}
}
// 域名白名单验证方法
private boolean isAllowedDomain(String referer) {
if (referer == null) return false;
for (String domain : ALLOWED_DOMAINS) {
if (referer.startsWith(domain)) {
return true;
}
}
return false;
}
}

@ -1,350 +0,0 @@
package com.controller;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.MatchRequest;
import com.baidu.aip.util.Base64Util;
import com.service.CommonService;
import com.service.ConfigService;
import com.utils.BaiduUtil;
import com.utils.FileUtil;
import com.utils.R;
/**
*
*
*
*
* - CommonService
* - ConfigService
*
*
* 1.
* 2.
* 3.
*/
@RestController
public class CommonController {
@Autowired
private CommonService commonService; // 通用业务逻辑服务
@Autowired
private ConfigService configService; // 配置管理服务
private static AipFace client = null; // 百度人脸识别客户端(单例模式)
private static String BAIDU_DITU_AK = null; // 百度地图AK从配置中心获取
/**
*
* API
*
* @param lng 116.404
* @param lat 39.915
* @return {"status":0,"result":{"city":"北京市"}}
*
* @throws baidu_ditu_ak
*/
@RequestMapping("/location")
public R location(String lng, String lat) {
// 懒加载配置(首次调用时从数据库加载配置)
if (BAIDU_DITU_AK == null) {
ConfigEntity config = configService.selectOne(
new EntityWrapper<ConfigEntity>().eq("name", "baidu_ditu_ak")
);
BAIDU_DITU_AK = config.getValue();
if (StringUtils.isEmpty(BAIDU_DITU_AK)) {
return R.error("请在配置管理中正确配置baidu_ditu_ak");
}
}
// 调用百度地图逆地理编码API
Map<String, String> map = BaiduUtil.getCityByLonLat(BAIDU_DITU_AK, lng, lat);
return R.ok().put("data", map);
}
/**
* 1:1
* 使AI
*
* @param face1 1upload
* @param face2 2
* @param request HTTP
* @return {"score":85.5}
*
* @throws APIKey/SecretKey
* @throws
*/
@RequestMapping("/matchFace")
public R matchFace(String face1, String face2, HttpServletRequest request) {
// 初始化百度AI客户端单例模式保证线程安全
if (client == null) {
String APIKey = configService.selectOne(
new EntityWrapper<ConfigEntity>().eq("name", "APIKey")
).getValue();
String SecretKey = configService.selectOne(
new EntityWrapper<ConfigEntity>().eq("name", "SecretKey")
).getValue();
String token = BaiduUtil.getAuth(APIKey, SecretKey);
if (token == null) {
return R.error("请在配置管理中正确配置APIKey和SecretKey");
}
client = new AipFace(null, APIKey, SecretKey);
client.setConnectionTimeoutInMillis(2000); // 连接超时2秒
client.setSocketTimeoutInMillis(60000); // 数据传输超时60秒
}
try {
// 构建服务器文件路径从web应用根目录获取
String uploadPath = request.getSession()
.getServletContext()
.getRealPath("/upload");
File file1 = new File(uploadPath, face1);
File file2 = new File(uploadPath, face2);
// 图片转Base64编码
String img1 = Base64Util.encode(FileUtil.FileToByte(file1));
String img2 = Base64Util.encode(FileUtil.FileToByte(file2));
// 构造比对请求参数
MatchRequest req1 = new MatchRequest(img1, "BASE64");
MatchRequest req2 = new MatchRequest(img2, "BASE64");
ArrayList<MatchRequest> requests = new ArrayList<>();
requests.add(req1);
requests.add(req2);
// 执行人脸比对
JSONObject res = client.match(requests);
return R.ok().put("data",
JSONObject.parse(res.get("result").toString())
);
} catch (FileNotFoundException e) {
return R.error("文件不存在:" + e.getMessage());
} catch (IOException e) {
return R.error("文件处理失败:" + e.getMessage());
}
}
/**
*
*
*
* @param tableName sys_area
* @param columnName parent_id ID
* @param level
* @param parent ID
* @return ["选项1","选项2"]
*
* @apiNote /option/sys_area/area_name?level=2&parent=110000
*/
@RequestMapping("/option/{tableName}/{columnName}")
@IgnoreAuth // 标注不需要登录验证
public R getOption(@PathVariable String tableName,
@PathVariable String columnName,
@RequestParam(required = false) String level,
@RequestParam(required = false) String parent) {
Map<String, Object> params = new HashMap<>();
params.put("table", tableName);
params.put("column", columnName);
// 添加可选参数
if (StringUtils.isNotBlank(level)) {
params.put("level", level);
}
if (StringUtils.isNotBlank(parent)) {
params.put("parent", parent);
}
List<String> data = commonService.getOption(params);
return R.ok().put("data", data);
}
}
/**
* tablecolumn
* @param table
* @param column
* @return
*/
/**
*
*
*
* @param tableName sys_user
* @param columnName dept_id ID
* @param columnValue 1001
* @return {"id":1,"name":"测试数据"}
*
* @apiNote /follow/sys_user/dept_id/1001
*/
@RequestMapping("/follow/{tableName}/{columnName}")
@IgnoreAuth
public R getFollowByOption(@PathVariable String tableName,
@PathVariable String columnName,
@RequestParam String columnValue) {
Map<String, Object> params = new HashMap<>();
params.put("table", tableName);
params.put("column", columnName);
params.put("columnValue", columnValue); // 关键查询条件
Map<String, Object> result = commonService.getFollowByOption(params);
return R.ok().put("data", result);
}
/**
*
* sh
*
* @param tableName news
* @param map id-ID, shzt-
* @return
*
* @apiNote
* POST /sh/news
* Body: {"id":123,"shzt":"1"}
*/
@RequestMapping("/sh/{tableName}")
public R sh(@PathVariable String tableName,
@RequestBody Map<String, Object> map) {
map.put("table", tableName); // 注入表名参数
commonService.sh(map); // 调用通用审核服务
return R.ok();
}
/**
*
*
*
* @param tableName order
* @param columnName create_time
* @param type 1: 2:
* @param map
* - remindstart:
* - remindend:
* @return {"count":5}
*
* @apiNote
* +remindstart +remindend
*/
@RequestMapping("/remind/{tableName}/{columnName}/{type}")
@IgnoreAuth
public R remindCount(@PathVariable String tableName,
@PathVariable String columnName,
@PathVariable String type,
@RequestParam Map<String, Object> map) {
map.put("table", tableName);
map.put("column", columnName);
map.put("type", type);
// 日期类型特殊处理
if ("2".equals(type)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
// 处理开始日期偏移(支持负数表示过去天数)
if (map.get("remindstart") != null) {
int offset = Integer.parseInt(map.get("remindstart").toString());
c.add(Calendar.DAY_OF_MONTH, offset);
map.put("remindstart", sdf.format(c.getTime()));
}
// 处理结束日期偏移
if (map.get("remindend") != null) {
int offset = Integer.parseInt(map.get("remindend").toString());
c.add(Calendar.DAY_OF_MONTH, offset);
map.put("remindend", sdf.format(c.getTime()));
}
}
int count = commonService.remindCount(map);
return R.ok().put("count", count);
}
/**
*
*
*
* @param tableName finance
* @param columnName amount
* @return {"sum":1000.5}
*/
@RequestMapping("/cal/{tableName}/{columnName}")
@IgnoreAuth
public R cal(@PathVariable String tableName,
@PathVariable String columnName) {
Map<String, Object> params = new HashMap<>();
params.put("table", tableName);
params.put("column", columnName);
Map<String, Object> result = commonService.selectCal(params);
return R.ok().put("data", result);
}
/**
*
* GROUP BY
*
* @param tableName sales
* @param columnName product_type
* @return [{"group":"类型A","count":10},...]
*/
@RequestMapping("/group/{tableName}/{columnName}")
@IgnoreAuth
public R group(@PathVariable String tableName,
@PathVariable String columnName) {
Map<String, Object> params = new HashMap<>();
params.put("table", tableName);
params.put("column", columnName);
List<Map<String, Object>> result = commonService.selectGroup(params);
return R.ok().put("data", result);
}
/**
*
* X/Y
*
* @param tableName visit_log 访
* @param xColumnName Xdate
* @param yColumnName Ychannel
* @return [{"x":"2023-01-01","y":"SEO","count":15},...]
*/
@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}")
@IgnoreAuth
public R value(@PathVariable String tableName,
@PathVariable String yColumnName,
@PathVariable String xColumnName) {
Map<String, Object> params = new HashMap<>();
params.put("table", tableName);
params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName);
List<Map<String, Object>> result = commonService.selectValue(params);
return R.ok().put("data", result);
}

@ -1,110 +0,0 @@
package com.controller;
import java.util.Arrays;
import java.util.Map;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.service.ConfigService;
import com.utils.PageUtils;
import com.utils.R;
/**
*
*/
@RequestMapping("config")
@RestController
public class ConfigController{
@Autowired
private ConfigService configService;
/**
*
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ConfigEntity config){
EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>();
PageUtils page = configService.queryPage(params);
return R.ok().put("data", page);
}
/**
*
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ConfigEntity config){
EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>();
PageUtils page = configService.queryPage(params);
return R.ok().put("data", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
ConfigEntity config = configService.selectById(id);
return R.ok().put("data", config);
}
/**
*
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") String id){
ConfigEntity config = configService.selectById(id);
return R.ok().put("data", config);
}
/**
* name
*/
@RequestMapping("/info")
public R infoByName(@RequestParam String name){
ConfigEntity config = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
return R.ok().put("data", config);
}
/**
*
*/
@PostMapping("/save")
public R save(@RequestBody ConfigEntity config){
// ValidatorUtils.validateEntity(config);
configService.insert(config);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
public R update(@RequestBody ConfigEntity config){
// ValidatorUtils.validateEntity(config);
configService.updateById(config);//全部更新
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
configService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}

@ -1,244 +0,0 @@
package com.controller;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import com.entity.JiedanEntity;
import com.service.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.DaiquEntity;
import com.entity.view.DaiquView;
import com.entity.YonghuEntity;
import com.entity.ZhandianEntity;
import com.utils.PageUtils;
import com.utils.R;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@RestController
@Controller
@RequestMapping("/daiqu")
public class DaiquController {
private static final Logger logger = LoggerFactory.getLogger(DaiquController.class);
@Autowired
private DaiquService daiquService;
@Autowired
private JiedanService jiedanService;
@Autowired
private TokenService tokenService;
@Autowired
private DictionaryService dictionaryService;
//级联表service
@Autowired
private YonghuService yonghuService;
@Autowired
private ZhandianService zhandianService;
/**
*
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isNotEmpty(role) && "用户".equals(role)){
params.put("yonghuId",request.getSession().getAttribute("userId"));
}
PageUtils page = daiquService.queryPage(params);
//字典表数据转换
List<DaiquView> list =(List<DaiquView>)page.getList();
for(DaiquView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c);
}
return R.ok().put("data", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
DaiquEntity daiqu = daiquService.selectById(id);
if(daiqu !=null){
//entity转view
DaiquView view = new DaiquView();
BeanUtils.copyProperties( daiqu , view );//把实体数据重构到view中
//级联表
YonghuEntity yonghu = yonghuService.selectById(daiqu.getYonghuId());
if(yonghu != null){
BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setYonghuId(yonghu.getId());
}
//级联表
ZhandianEntity zhandian = zhandianService.selectById(daiqu.getZhandianId());
if(zhandian != null){
BeanUtils.copyProperties( zhandian , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setZhandianId(zhandian.getId());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
*
*/
@RequestMapping("/save")
public R save(@RequestBody DaiquEntity daiqu, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,daiqu:{}",this.getClass().getName(),daiqu.toString());
daiqu.setKdztTypes(1);
daiqu.setTakecode(UUID.randomUUID().toString().toString().replace("-","").substring(0,6));
Wrapper<DaiquEntity> queryWrapper = new EntityWrapper<DaiquEntity>()
.eq("dqname", daiqu.getDqname())
.eq("zhandian_id", daiqu.getZhandianId())
.eq("yonghu_id", daiqu.getYonghuId())
.eq("takecode", daiqu.getTakecode())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
DaiquEntity daiquEntity = daiquService.selectOne(queryWrapper);
if(daiquEntity==null){
daiquService.insert(daiqu);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
*
*/
@RequestMapping("/update")
public R update(@RequestBody DaiquEntity daiqu, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,daiqu:{}",this.getClass().getName(),daiqu.toString());
//根据字段查询是否有相同数据
Wrapper<DaiquEntity> queryWrapper = new EntityWrapper<DaiquEntity>()
.notIn("id",daiqu.getId())
.eq("dqname", daiqu.getDqname())
.eq("zhandian_id", daiqu.getZhandianId())
.eq("yonghu_id", daiqu.getYonghuId())
.eq("kddx_types", daiqu.getKddxTypes())
.eq("dqphone", daiqu.getDqphone())
.eq("takecode", daiqu.getTakecode())
.eq("kdzt_types", daiqu.getKdztTypes())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
DaiquEntity daiquEntity = daiquService.selectOne(queryWrapper);
daiqu.setPickupTime(new Date());
if(daiquEntity==null){
daiquService.updateById(daiqu);//根据id更新
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
*
*/
@RequestMapping("/replaceExpress")
public R replaceExpress(@RequestBody Integer ids){
DaiquEntity daiqu = daiquService.selectById(ids);
if(daiqu == null){
return R.error("数据不存在");
}
YonghuEntity yonghu = yonghuService.selectById(daiqu.getYonghuId());
if(yonghu == null){
return R.error("数据不存在");
}
JiedanEntity jiedan = new JiedanEntity();
jiedan.setInitiateTime(new Date());
jiedan.setJdyonghuId(daiqu.getYonghuId());
jiedan.setJdphone(daiqu.getDqphone());
jiedan.setAddresseename(yonghu.getName());
jiedan.setJdaddressee("住宿楼栋:"+yonghu.getDormitory()+" ,寝室号:"+yonghu.getDormitory());
jiedan.setJdtakecode(daiqu.getTakecode());
jiedan.setDaiqukuaidimc(daiqu.getDqname());
jiedan.setJdztTypes(1);//1未接
jiedan.setKdlxTypes(1);//1取件
jiedan.setOdd(String.valueOf(new Date().getTime()));
Wrapper<JiedanEntity> queryWrapper = new EntityWrapper<JiedanEntity>()
.eq("jdyonghu_id", jiedan.getJdyonghuId())
.eq("jdtakecode", jiedan.getJdtakecode())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
JiedanEntity jiedanEntity = jiedanService.selectOne(queryWrapper);
if(jiedanEntity==null){
daiqu.setKdztTypes(3);
daiquService.updateById(daiqu);
jiedanService.insert(jiedan);
return R.ok();
}else {
return R.error(511,"你已经发布过这件快递的代取订单了");
}
}
/**
*
*/
@RequestMapping("/pickUp")
public R pickUp(@RequestBody Integer ids){
DaiquEntity daiqu = daiquService.selectById(ids);
if(daiqu == null){
return R.error("数据不存在");
}
daiqu.setKdztTypes(2);
daiqu.setPickupTime(new Date());
daiquService.updateById(daiqu);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
daiquService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}

@ -1,225 +0,0 @@
package com.controller;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import com.entity.DaiqurenEntity;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;
import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.DaiqurenEntity;
import com.service.DaiqurenService;
import com.entity.view.DaiqurenView;
import com.utils.PageUtils;
import com.utils.R;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@RestController
@Controller
@RequestMapping("/daiquren")
public class DaiqurenController {
private static final Logger logger = LoggerFactory.getLogger(DaiqurenController.class);
@Autowired
private DaiqurenService daiqurenService;
@Autowired
private TokenService tokenService;
@Autowired
private DictionaryService dictionaryService;
//级联表service
/**
*
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isNotEmpty(role) && "代取人".equals(role)){
params.put("yonghuId",request.getSession().getAttribute("userId"));
}
PageUtils page = daiqurenService.queryPage(params);
//字典表数据转换
List<DaiqurenView> list =(List<DaiqurenView>)page.getList();
for(DaiqurenView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c);
}
return R.ok().put("data", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
DaiqurenEntity daiquren = daiqurenService.selectById(id);
if(daiquren !=null){
//entity转view
DaiqurenView view = new DaiqurenView();
BeanUtils.copyProperties( daiquren , view );//把实体数据重构到view中
//修改对应字典表字段
dictionaryService.dictionaryConvert(view);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
*
*/
@RequestMapping("/save")
public R save(@RequestBody DaiqurenEntity daiquren, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,daiquren:{}",this.getClass().getName(),daiquren.toString());
Wrapper<DaiqurenEntity> queryWrapper = new EntityWrapper<DaiqurenEntity>()
.eq("name", daiquren.getName())
.eq("username", daiquren.getUsername())
.eq("password", daiquren.getPassword())
.eq("sex_types", daiquren.getSexTypes())
.eq("phone", daiquren.getPhone())
.eq("role", daiquren.getRole())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
DaiqurenEntity daiqurenEntity = daiqurenService.selectOne(queryWrapper);
if(daiqurenEntity==null){
daiquren.setRole("代取人");
daiqurenService.insert(daiquren);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
*
*/
@RequestMapping("/update")
public R update(@RequestBody DaiqurenEntity daiquren, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,daiquren:{}",this.getClass().getName(),daiquren.toString());
//根据字段查询是否有相同数据
Wrapper<DaiqurenEntity> queryWrapper = new EntityWrapper<DaiqurenEntity>()
.notIn("id",daiquren.getId())
.eq("name", daiquren.getName())
.eq("username", daiquren.getUsername())
.eq("password", daiquren.getPassword())
.eq("sex_types", daiquren.getSexTypes())
.eq("phone", daiquren.getPhone())
.eq("role", daiquren.getRole())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
DaiqurenEntity daiqurenEntity = daiqurenService.selectOne(queryWrapper);
if("".equals(daiquren.getImgPhoto()) || "null".equals(daiquren.getImgPhoto())){
daiquren.setImgPhoto(null);
}
if(daiqurenEntity==null){
daiqurenService.updateById(daiquren);//根据id更新
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
*
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
daiqurenService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
*
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String role, HttpServletRequest request) {
DaiqurenEntity yonghu = daiqurenService.selectOne(new EntityWrapper<DaiqurenEntity>().eq("username", username));
if(yonghu==null || !yonghu.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
if(!role.equals(yonghu.getRole())){
return R.error("权限不正确");
}
String token = tokenService.generateToken(yonghu.getId(),username, "yonghu", "代取人");
R r = R.ok();
r.put("token", token);
r.put("role","代取人");
r.put("userId",yonghu.getId());
return r;
}
/**
*
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody DaiqurenEntity yonghu){
// ValidatorUtils.validateEntity(user);
if(daiqurenService.selectOne(new EntityWrapper<DaiqurenEntity>().eq("username", yonghu.getUsername()).orNew().eq("phone",yonghu.getPhone())) !=null) {
return R.error("代取人已存在或手机号身份证号已经被使用");
}
daiqurenService.insert(yonghu);
return R.ok();
}
/**
* session
*/
@RequestMapping("/session")
public R getCurrYonghu(HttpServletRequest request){
Integer id = (Integer)request.getSession().getAttribute("userId");
DaiqurenEntity yonghu = daiqurenService.selectById(id);
return R.ok().put("data", yonghu);
}
/**
* 退
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
}

@ -1,188 +0,0 @@
package com.controller;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;
import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.DictionaryEntity;
import com.service.DictionaryService;
import com.entity.view.DictionaryView;
import com.utils.PageUtils;
import com.utils.R;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@RestController
@Controller
@RequestMapping("/dictionary")
public class DictionaryController {
private static final Logger logger = LoggerFactory.getLogger(DictionaryController.class);
@Autowired
private DictionaryService dictionaryService;
@Autowired
private TokenService tokenService;
//级联表service
/**
*
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isNotEmpty(role) && "用户".equals(role)){
params.put("yonghuId",request.getSession().getAttribute("userId"));
}
PageUtils page = dictionaryService.queryPage(params);
//字典表数据转换
List<DictionaryView> list =(List<DictionaryView>)page.getList();
for(DictionaryView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c);
}
return R.ok().put("data", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
DictionaryEntity dictionary = dictionaryService.selectById(id);
if(dictionary !=null){
//entity转view
DictionaryView view = new DictionaryView();
BeanUtils.copyProperties( dictionary , view );//把实体数据重构到view中
//修改对应字典表字段
dictionaryService.dictionaryConvert(view);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
*
*/
@RequestMapping("/save")
public R save(@RequestBody DictionaryEntity dictionary, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,dictionary:{}",this.getClass().getName(),dictionary.toString());
Wrapper<DictionaryEntity> queryWrapper = new EntityWrapper<DictionaryEntity>()
.eq("dic_code", dictionary.getDicCode())
.eq("code_index", dictionary.getCodeIndex())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
DictionaryEntity dictionaryEntity = dictionaryService.selectOne(queryWrapper);
if(dictionaryEntity==null){
dictionary.setCreateTime(new Date());
// String role = String.valueOf(request.getSession().getAttribute("role"));
// if("".equals(role)){
// dictionary.set
// }
dictionaryService.insert(dictionary);
//如果字典表新增数据的话,把数据再重新查出,放入监听器中
List<DictionaryEntity> dictionaryEntities = dictionaryService.selectList(new EntityWrapper<DictionaryEntity>());
ServletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext();
Map<String, Map<Integer,String>> map = new HashMap<>();
for(DictionaryEntity d :dictionaryEntities){
Map<Integer, String> m = map.get(d.getDicCode());
if(m ==null || m.isEmpty()){
m = new HashMap<>();
}
m.put(d.getCodeIndex(),d.getIndexName());
map.put(d.getDicCode(),m);
}
servletContext.setAttribute("dictionaryMap",map);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
*
*/
@RequestMapping("/update")
public R update(@RequestBody DictionaryEntity dictionary, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,dictionary:{}",this.getClass().getName(),dictionary.toString());
//根据字段查询是否有相同数据
Wrapper<DictionaryEntity> queryWrapper = new EntityWrapper<DictionaryEntity>()
.notIn("id",dictionary.getId())
.eq("dic_code", dictionary.getDicCode())
.eq("code_index", dictionary.getCodeIndex())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
DictionaryEntity dictionaryEntity = dictionaryService.selectOne(queryWrapper);
if(dictionaryEntity==null){
// String role = String.valueOf(request.getSession().getAttribute("role"));
// if("".equals(role)){
// dictionary.set
// }
dictionaryService.updateById(dictionary);//根据id更新
//如果字典表修改数据的话,把数据再重新查出,放入监听器中
List<DictionaryEntity> dictionaryEntities = dictionaryService.selectList(new EntityWrapper<DictionaryEntity>());
ServletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext();
Map<String, Map<Integer,String>> map = new HashMap<>();
for(DictionaryEntity d :dictionaryEntities){
Map<Integer, String> m = map.get(d.getDicCode());
if(m ==null || m.isEmpty()){
m = new HashMap<>();
}
m.put(d.getCodeIndex(),d.getIndexName());
map.put(d.getDicCode(),m);
}
servletContext.setAttribute("dictionaryMap",map);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
*
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
dictionaryService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}

@ -1,164 +0,0 @@
import java.util.*;
// 快递实体类POJO
class ExpressItem {
private String trackingNumber; // 运单号
private String recipient; // 收件人
private String phone; // 联系电话
private String status; // 包裹状态
private Date arrivalTime; // 到站时间
private String pickupCode; // 取件码
public ExpressItem(String trackingNumber, String recipient, String phone) {
this.trackingNumber = trackingNumber;
this.recipient = recipient;
this.phone = phone;
this.status = "待取件"; // 默认状态
this.arrivalTime = new Date();
this.pickupCode = generatePickupCode(); // 自动生成取件码
}
// 生成4位随机取件码0000-9999
private String generatePickupCode() {
Random random = new Random();
return String.format("%04d", random.nextInt(10000));
}
// Getter/Setter 区域省略其他getter/setter
public String getStatus() { return status; }
public String getPickupCode() { return pickupCode; }
// ...其他getter/setter保持原有结构
@Override
public String toString() {
return String.format("""
%s
%s
%s
%s
%tF %tT
""", trackingNumber, recipient, status, pickupCode, arrivalTime, arrivalTime);
}
}
// 快递业务逻辑类
class ExpressService {
private final Map<String, ExpressItem> database = new HashMap<>(); // 内存数据库
private int totalPackages = 0; // 总入库计数器
// 快递入库(返回是否成功)
public boolean addPackage(ExpressItem item) {
if (database.containsKey(item.getTrackingNumber())) return false; // 重复检查
database.put(item.getTrackingNumber(), item);
totalPackages++;
return true;
}
// 标记包裹为已取件
public boolean markAsPickedUp(String trackingNumber) {
ExpressItem item = database.get(trackingNumber);
if (item != null && "待取件".equals(item.getStatus())) { // 双重验证
item.setStatus("已取件");
return true;
}
return false;
}
// 统计方法
public int getTotalPackages() { return totalPackages; }
public int getPendingPackages() {
return (int) database.values().stream() // 使用流式计算
.filter(item -> "待取件".equals(item.getStatus()))
.count();
}
}
// 控制台交互层
public class ExpressManagementSystem {
private static final Scanner scanner = new Scanner(System.in);
private static final ExpressService service = new ExpressService();
public static void main(String[] args) {
while (true) {
printMenu();
int choice = getIntInput("请选择操作:");
switch (choice) {
case 1 -> addPackage();
case 2 -> pickupPackage();
case 3 -> searchPackage();
case 4 -> showStatistics();
case 5 -> System.exit(0);
default -> System.out.println("无效输入!");
}
}
}
private static void printMenu() {
System.out.println("""
===== =====
1.
2.
3.
4.
5. 退
""");
}
private static void addPackage() {
System.out.println("\n--- 快递入库 ---");
String trackingNumber = getNonEmptyInput("请输入运单号:");
String recipient = getNonEmptyInput("请输入收件人姓名:");
String phone = getValidPhone();
ExpressItem newItem = new ExpressItem(trackingNumber, recipient, phone);
System.out.println(service.addPackage(newItem)
? "入库成功!\n取件码" + newItem.getPickupCode()
: "该运单号已存在!");
}
private static void pickupPackage() {
System.out.println("\n--- 快递出库 ---");
String trackingNumber = getNonEmptyInput("请输入运单号:");
String inputCode = getNonEmptyInput("请输入取件码:");
ExpressItem item = service.getPackage(trackingNumber);
if (item == null) {
System.out.println("运单号不存在!");
return;
}
System.out.println(inputCode.equals(item.getPickupCode())
? service.markAsPickedUp(trackingNumber)
? "取件成功!"
: "该包裹已取件!"
: "取件码错误!");
}
// 辅助方法区域
private static String getNonEmptyInput(String prompt) {
while (true) {
String input = scanner.nextLine().trim();
if (!input.isEmpty()) return input;
System.out.print("输入不能为空,请重新输入:");
}
}
private static String getValidPhone() {
while (true) {
String phone = scanner.nextLine().trim();
if (phone.matches("1[3-9]\\d{9}")) return phone; // 中国手机号正则
System.out.print("手机号格式不正确,请重新输入:");
}
}
private static int getIntInput(String prompt) {
while (true) {
try {
return Integer.parseInt(scanner.nextLine().trim());
} catch (NumberFormatException e) {
System.out.print("请输入有效数字:");
}
}
}
}

@ -1,261 +0,0 @@
import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
import com.google.gson.Gson; // 需要gson库支持添加依赖
/**
*
*
*/
class ExpressIteml {
// ... [原有属性保持不变]
private double weight; // 包裹重量(kg)
private Dimension dimension; // 包裹尺寸(cm)
private int storageDays; // 存放天数
public ExpressItem(String trackingNumber, String recipient, String phone,
double weight, int length, int width, int height) {
// ... [原有初始化代码]
this.weight = weight;
this.dimension = new Dimension(length, width, height);
this.storageDays = 0;
}
// 新增内部类:包裹尺寸
static class Dimension {
int length;
int width;
int height;
Dimension(int l, int w, int h) {
this.length = l;
this.width = w;
this.height = h;
}
@Override
public String toString() {
return String.format("%dx%dx%d cm", length, width, height);
}
}
// 新增业务方法:计算体积重量(航空件常用算法)
public double calculateVolumetricWeight() {
// 体积重量(kg) = 长(cm)*宽(cm)*高(cm)/6000
return (dimension.length * dimension.width * dimension.height) / 6000.0;
}
// Getter/Setter 区域(新增属性)
public double getWeight() { return weight; }
public Dimension getDimension() { return dimension; }
public int getStorageDays() { return storageDays; }
public void setStorageDays(int days) { this.storageDays = days; }
}
/**
*
*
*/
class ExpressService {
// ... [原有属性保持不变]
private final DataPersistence persistence = new DataPersistence();
private static final int MAX_STORAGE_DAYS = 7; // 最大免费存放天数
public ExpressService() {
// 启动时加载持久化数据
database = persistence.loadData();
// 更新所有包裹的存放天数(模拟每日自动更新)
updateStorageDays();
}
// 新增方法:更新所有包裹的存放天数
private void updateStorageDays() {
long today = new Date().getTime() / (24 * 3600 * 1000);
database.values().forEach(item -> {
long arrivalDay = item.getArrivalTime().getTime() / (24 * 3600 * 1000);
item.setStorageDays((int) (today - arrivalDay));
});
}
// 新增方法:获取超时包裹列表
public List<ExpressItem> getOverduePackages() {
return database.values().stream()
.filter(item -> item.getStorageDays() > MAX_STORAGE_DAYS)
.collect(Collectors.toList());
}
// 新增方法:按体积重量排序查询
public List<ExpressItem> searchByVolumetricWeight(double min, double max) {
return database.values().stream()
.filter(item -> {
double volWeight = item.calculateVolumetricWeight();
return volWeight >= min && volWeight <= max;
})
.sorted(Comparator.comparingDouble(ExpressItem::calculateVolumetricWeight).reversed())
.collect(Collectors.toList());
}
// 新增方法:批量标记为已取件
public int batchMarkAsPickedUp(List<String> trackingNumbers) {
return (int) trackingNumbers.stream()
.filter(tn -> {
ExpressItem item = database.get(tn);
return item != null && "待取件".equals(item.getStatus());
})
.peek(tn -> database.get(tn).setStatus("已取件"))
.count();
}
// 新增方法:获取仓库使用率统计
public Map<String, Double> getStorageUsage() {
Map<String, Double> usage = new HashMap<>();
long totalVolume = database.values().stream()
.mapToLong(item ->
item.getDimension().length *
item.getDimension().width *
item.getDimension().height
).sum();
usage.put("totalVolume", (double) totalVolume);
usage.put("averageVolume", totalVolume / (double) database.size());
return usage;
}
// 新增方法:数据持久化
public void saveData() {
persistence.saveData(database);
}
}
/**
*
* 使JSON
*/
class DataPersistence {
private static final String DATA_FILE = "express_data.json";
private final Gson gson = new Gson();
public Map<String, ExpressItem> loadData() {
try (Reader reader = new FileReader(DATA_FILE)) {
Type type = new com.google.gson.reflect.TypeToken<Map<String, ExpressItem>>() {}.getType();
return gson.fromJson(reader, type);
} catch (FileNotFoundException e) {
return new HashMap<>(); // 首次运行无数据文件
} catch (Exception e) {
System.err.println("数据加载错误: " + e.getMessage());
return new HashMap<>();
}
}
public void saveData(Map<String, ExpressItem> data) {
try (Writer writer = new FileWriter(DATA_FILE)) {
gson.toJson(data, writer);
} catch (Exception e) {
System.err.println("数据保存错误: " + e.getMessage());
}
}
}
/**
*
*
*/
public class ExpressManagementSystem {
// ... [原有属性保持不变]
private static final ExpressService service = new ExpressService();
private static void printAdvancedMenu() {
System.out.println("""
===== =====
6.
7.
8.
9. 使
10. 退
""");
}
private static void batchPickup() {
System.out.println("\n--- 批量取件 ---");
List<String> trackingNumbers = new ArrayList<>();
while (true) {
String tn = getNonEmptyInput("输入运单号输入0结束");
if ("0".equals(tn)) break;
trackingNumbers.add(tn);
}
int successCount = service.batchMarkAsPickedUp(trackingNumbers);
System.out.printf("成功取件%d个包裹\n", successCount);
}
private static void showOverduePackages() {
System.out.println("\n--- 超时包裹列表 ---");
List<ExpressItem> overdue = service.getOverduePackages();
if (overdue.isEmpty()) {
System.out.println("当前没有超时包裹");
return;
}
overdue.forEach(item ->
System.out.printf("运单号:%s 超时%d天\n",
item.getTrackingNumber(),
item.getStorageDays() - ExpressService.MAX_STORAGE_DAYS));
}
private static void volumetricSearch() {
System.out.println("\n--- 体积重量查询 ---");
double min = getDoubleInput("最小体积重量(kg)");
double max = getDoubleInput("最大体积重量(kg)");
List<ExpressItem> results = service.searchByVolumetricWeight(min, max);
if (results.isEmpty()) {
System.out.println("未找到匹配包裹");
return;
}
results.forEach(item ->
System.out.printf("运单号:%s 体积重量:%.2fkg\n",
item.getTrackingNumber(),
item.calculateVolumetricWeight()));
}
private static void showStorageStats() {
System.out.println("\n--- 仓库使用统计 ---");
Map<String, Double> stats = service.getStorageUsage();
System.out.printf("总占用体积:%,d cm³\n", stats.get("totalVolume").intValue());
System.out.printf("平均单件体积:%,.1f cm³\n", stats.get("averageVolume"));
}
public static void main(String[] args) {
while (true) {
printMenu();
int choice = getIntInput("请选择操作:");
switch (choice) {
case 1 -> addPackage();
case 2 -> pickupPackage();
case 3 -> searchPackage();
case 4 -> showStatistics();
case 5 -> printAdvancedMenu();
case 6 -> batchPickup();
case 7 -> showOverduePackages();
case 8 -> volumetricSearch();
case 9 -> showStorageStats();
case 10 -> {
service.saveData();
System.exit(0);
}
default -> System.out.println("无效输入!");
}
}
}
// 新增方法获取double类型输入
private static double getDoubleInput(String prompt) {
while (true) {
try {
return Double.parseDouble(scanner.nextLine().trim());
} catch (NumberFormatException e) {
System.out.print("请输入有效数字:");
}
}
}
}

@ -1,83 +0,0 @@
package com.controller;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.annotation.IgnoreAuth;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;
/**
*
*/
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
@Autowired
private ConfigService configService;
/**
*
*/
@RequestMapping("/upload")
public R upload(@RequestParam("file") MultipartFile file, String type,HttpServletRequest request) throws Exception {
if (file.isEmpty()) {
throw new EIException("上传文件不能为空");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
String fileName = new Date().getTime()+"."+fileExt;
File dest = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
file.transferTo(dest);
if(StringUtils.isNotBlank(type) && type.equals("1")) {
ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
if(configEntity==null) {
configEntity = new ConfigEntity();
configEntity.setName("faceFile");
configEntity.setValue(fileName);
} else {
configEntity.setValue(fileName);
}
configService.insertOrUpdate(configEntity);
}
return R.ok().put("file", fileName);
}
/**
*
*/
@IgnoreAuth
@RequestMapping("/download")
public void download(@RequestParam String fileName, HttpServletRequest request, HttpServletResponse response) {
try {
File file = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
if (file.exists()) {
response.reset();
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName+"\"");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setContentType("application/octet-stream; charset=UTF-8");
IOUtils.write(FileUtils.readFileToByteArray(file), response.getOutputStream());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

@ -1,259 +0,0 @@
package com.controller;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import com.entity.DaiqurenEntity;
import com.entity.YijiedanEntity;
import com.entity.YonghuEntity;
import com.service.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.JiedanEntity;
import com.entity.view.JiedanView;
import com.utils.PageUtils;
import com.utils.R;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@RestController
@Controller
@RequestMapping("/jiedan")
public class JiedanController {
private static final Logger logger = LoggerFactory.getLogger(JiedanController.class);
@Autowired
private YijiedanService yijiedanService;
@Autowired
private JiedanService jiedanService;
@Autowired
private DaiqurenService daiqurenService;
@Autowired
private YonghuService yonghuService;
@Autowired
private DictionaryService dictionaryService;
//级联表service
/**
*
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
PageUtils page = null;
if(StringUtil.isNotEmpty(role) && "用户".equals(role)){
params.put("yonghuId",request.getSession().getAttribute("userId"));
page = jiedanService.queryPage(params);
}
page = jiedanService.queryPage(params);
//字典表数据转换
List<JiedanView> list =(List<JiedanView>)page.getList();
for(JiedanView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c);
}
return R.ok().put("data", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
JiedanEntity jiedan = jiedanService.selectById(id);
if(jiedan !=null){
//entity转view
JiedanView view = new JiedanView();
BeanUtils.copyProperties( jiedan , view );//把实体数据重构到view中
//修改对应字典表字段
dictionaryService.dictionaryConvert(view);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
*
*/
@RequestMapping("/save")
public R save(@RequestBody JiedanEntity jiedan, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,jiedan:{}",this.getClass().getName(),jiedan.toString());
Wrapper<JiedanEntity> queryWrapper = new EntityWrapper<JiedanEntity>()
.eq("addresseename", jiedan.getAddresseename())
.eq("jdphone", jiedan.getJdphone())
.eq("jdaddressee", jiedan.getJdaddressee())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
JiedanEntity jiedanEntity = jiedanService.selectOne(queryWrapper);
if(jiedanEntity==null){
jiedanService.insert(jiedan);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
*
*/
@RequestMapping("/update")
public R update(@RequestBody JiedanEntity jiedan, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,jiedan:{}",this.getClass().getName(),jiedan.toString());
//根据字段查询是否有相同数据
Wrapper<JiedanEntity> queryWrapper = new EntityWrapper<JiedanEntity>()
.notIn("id",jiedan.getId())
.eq("odd", jiedan.getOdd())
.eq("daiqukuaidimc", jiedan.getDaiqukuaidimc())
.eq("jdyonghu_id", jiedan.getJdyonghuId())
.eq("addresseename", jiedan.getAddresseename())
.eq("jdphone", jiedan.getJdphone())
.eq("jdaddressee", jiedan.getJdaddressee())
.eq("jdtakecode", jiedan.getJdtakecode())
.eq("jdzt_types", jiedan.getJdztTypes())
.eq("kdlx_types", jiedan.getKdlxTypes())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
JiedanEntity jiedanEntity = jiedanService.selectOne(queryWrapper);
jiedan.setInitiateTime(new Date());
if(jiedanEntity==null){
jiedanService.updateById(jiedan);//根据id更新
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
*
*/
@RequestMapping("/receiving")
public R receiving(@RequestBody Integer ids, HttpServletRequest request){
JiedanEntity jiedan = jiedanService.selectById(ids);
if(jiedan == null){
return R.error();
}
if(request.getSession().getAttribute("role").equals("代取人")){
DaiqurenEntity userId = daiqurenService.selectById((Integer) request.getSession().getAttribute("userId"));
jiedan.setJdztTypes(2);//以接
YijiedanEntity yijiedan = new YijiedanEntity();
yijiedan.setOdd(jiedan.getOdd());
yijiedan.setYonghuId(jiedan.getJdyonghuId());
yijiedan.setFbphone(jiedan.getJdphone());
yijiedan.setDaiqurenId(userId.getId());
yijiedan.setJdphone(userId.getPhone());
yijiedan.setInitiateTime(new Date());
yijiedan.setDdztTypes(1);//1正在路上
Wrapper<YijiedanEntity> queryWrapper = new EntityWrapper<YijiedanEntity>()
.eq("odd", yijiedan.getOdd())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
YijiedanEntity yijiedanEntity = yijiedanService.selectOne(queryWrapper);
if(yijiedanEntity==null){
jiedanService.updateById(jiedan);
yijiedanService.insert(yijiedan);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
return R.error("***");
}
/**
*
*/
@RequestMapping("/ship")
public R ship(String name, Integer yh, Integer dx, HttpServletRequest request){
if(name == null && name == "null" && name == ""){
return R.error("快递名称不能为空");
}
if(yh == null && yh == 0){
return R.error("收件人不能为空");
}
YonghuEntity yonghu = yonghuService.selectById(yh);
if(yonghu == null){
return R.error();
}
if(yonghu.getId() == (Integer)request.getSession().getAttribute("userId")){
return R.error("发件人和收件人不能相同");
}
JiedanEntity jiedan = new JiedanEntity();
jiedan.setOdd(String.valueOf(new Date().getTime()));
jiedan.setDaiqukuaidimc(name);
jiedan.setDx(dx);
jiedan.setJdyonghuId((Integer)request.getSession().getAttribute("userId"));
jiedan.setJdphone(yonghu.getPhone());
jiedan.setInitiateTime(new Date());
jiedan.setAddresseename(yonghu.getName());
jiedan.setJdaddressee("住宿楼栋:"+yonghu.getDormitory()+" ,寝室号:"+yonghu.getDormitory());
jiedan.setJdtakecode(UUID.randomUUID().toString().toString().replace("-","").substring(0,6));
jiedan.setJdztTypes(1);//1未接
jiedan.setKdlxTypes(2);//2寄件
Wrapper<JiedanEntity> queryWrapper = new EntityWrapper<JiedanEntity>()
.eq("addresseename", jiedan.getAddresseename())
.eq("jdphone", jiedan.getJdphone())
.eq("jdaddressee", jiedan.getJdaddressee())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
JiedanEntity jiedanEntity = jiedanService.selectOne(queryWrapper);
if(jiedanEntity==null){
jiedanService.insert(jiedan);
return R.ok();
}else {
return R.error(511,"已经有相同的数据了");
}
}
/**
*
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
jiedanService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}

@ -1,235 +0,0 @@
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
*
*
*/
public class OverduePackageService {
// 配置参数(可通过配置文件加载)
private static final int MAX_FREE_DAYS = 7; // 最大免费存放天数
private static final double DAILY_STORAGE_FEE = 1.0; // 每日滞留费用(元)
private static final int NOTICE_INTERVAL = 3; // 提醒间隔天数
// 依赖服务注入
private final ExpressService expressService;
private final NotificationService notificationService;
// 内部状态管理
private final Map<String, OverdueRecord> overdueRecords = new HashMap<>();
private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
/**
*
*/
public OverduePackageService(ExpressService expressService,
NotificationService notificationService) {
this.expressService = expressService;
this.notificationService = notificationService;
initializeOverdueMonitoring();
}
/**
* 线
*/
private void initializeOverdueMonitoring() {
// 创建定时任务每24小时执行一次检测
Timer timer = new Timer(true);
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
detectAndProcessOverduePackages();
}
}, 0, 24 * 60 * 60 * 1000);
}
/**
*
*/
public synchronized void detectAndProcessOverduePackages() {
// 1. 获取所有待取件包裹
List<ExpressItem> allPackages = expressService.getAllPackages()
.stream()
.filter(item -> "待取件".equals(item.getStatus()))
.collect(Collectors.toList());
// 2. 计算存放天数并识别滞留件
List<ExpressItem> overduePackages = new ArrayList<>();
for (ExpressItem item : allPackages) {
int storageDays = calculateStorageDays(item.getArrivalTime());
item.setStorageDays(storageDays);
if (storageDays > MAX_FREE_DAYS) {
overduePackages.add(item);
recordOverdueHistory(item, storageDays);
}
}
// 3. 执行滞留处理流程
overduePackages.forEach(this::processOverduePackage);
}
/**
*
*/
private int calculateStorageDays(Date arrivalTime) {
long now = System.currentTimeMillis();
long elapsed = now - arrivalTime.getTime();
return (int) (elapsed / (24 * 3600 * 1000));
}
/**
*
*/
private void recordOverdueHistory(ExpressItem item, int currentDays) {
String trackingNumber = item.getTrackingNumber();
overdueRecords.putIfAbsent(trackingNumber, new OverdueRecord());
OverdueRecord record = overdueRecords.get(trackingNumber);
if (record.getLastNoticeDay() == 0 ||
(currentDays - record.getLastNoticeDay()) >= NOTICE_INTERVAL) {
record.setLastNoticeDay(currentDays);
record.incrementNoticeCount();
}
}
/**
*
*/
private void processOverduePackage(ExpressItem item) {
// 1. 费用计算
double overdueFee = calculateOverdueFee(item.getStorageDays());
// 2. 生成通知内容
String noticeContent = buildNoticeContent(item, overdueFee);
// 3. 发送通知(支持多通道)
sendMultiChannelNotice(item.getPhone(), noticeContent);
// 4. 标记为滞留状态(可选扩展)
if (item.getStorageDays() > MAX_FREE_DAYS * 2) {
expressService.markAsOverdue(item.getTrackingNumber());
}
}
/**
* 线
*/
private double calculateOverdueFee(int storageDays) {
int overdueDays = storageDays - MAX_FREE_DAYS;
return overdueDays > 0 ? overdueDays * DAILY_STORAGE_FEE : 0;
}
/**
*
*/
private String buildNoticeContent(ExpressItem item, double fee) {
return String.format("""
%s
%s
%d
%.2f
""",
item.getTrackingNumber(),
item.getRecipient(),
item.getStorageDays(),
fee);
}
/**
* ++
*/
private void sendMultiChannelNotice(String phone, String content) {
// 短信通知
notificationService.sendSMS(phone, content);
// 邮件通知(需实现邮件服务)
// notificationService.sendEmail(recipientEmail, "快递滞留提醒", content);
// 系统内消息(需集成消息中心)
// messageCenter.pushSystemNotice(userId, content);
}
/**
*
*/
public String generateOverdueReport() {
Map<Integer, Long> dailyCount = overdueRecords.values().stream()
.collect(Collectors.groupingBy(
OverdueRecord::getNoticeCount,
Collectors.counting()
));
StringBuilder report = new StringBuilder();
report.append("===== 滞留件统计报表 =====\n");
report.append("统计时间:").append(dateFormat.format(new Date())).append("\n");
report.append("-------------------------\n");
report.append("总滞留包裹数:").append(overdueRecords.size()).append("\n");
dailyCount.forEach((times, count) ->
report.append(String.format("被提醒%d次包裹数%d\n", times, count)));
return report.toString();
}
/**
*
*/
private static class OverdueRecord {
private int lastNoticeDay; // 最后一次通知时的存放天数
private int noticeCount; // 通知发送次数
// Getter/Setter
public int getLastNoticeDay() { return lastNoticeDay; }
public void setLastNoticeDay(int day) { this.lastNoticeDay = day; }
public int getNoticeCount() { return noticeCount; }
public void incrementNoticeCount() { this.noticeCount++; }
}
/**
*
*/
public interface NotificationService {
void sendSMS(String phone, String message);
// void sendEmail(String to, String subject, String content);
}
/**
*
*/
public List<ExpressItem> queryOverduePackages(int minDays, int maxDays) {
return expressService.getAllPackages().stream()
.filter(item -> {
int days = item.getStorageDays();
return days >= minDays && days <= maxDays;
})
.sorted(Comparator.comparingInt(ExpressItem::getStorageDays).reversed())
.collect(Collectors.toList());
}
/**
* 退
*/
public int batchReturnOverduePackages(int maxDays) {
List<ExpressItem> toReturn = queryOverduePackages(maxDays, Integer.MAX_VALUE);
toReturn.forEach(item -> expressService.markAsReturned(item.getTrackingNumber()));
return toReturn.size();
}
/**
*
*/
public Map<String, Double> getOverdueFees(String trackingNumber) {
OverdueRecord record = overdueRecords.get(trackingNumber);
if (record == null) return Collections.emptyMap();
Map<String, Double> feeDetail = new HashMap<>();
feeDetail.put("baseFee", (double) (record.getNoticeCount() * NOTICE_INTERVAL));
feeDetail.put("totalFee", calculateOverdueFee(record.getNoticeCount() * NOTICE_INTERVAL));
return feeDetail;
}
}

@ -1,301 +0,0 @@
import java.security.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
/**
*
* //
*/
public class PickupCodeService {
// 配置参数(建议通过配置中心动态加载)
private static final int CODE_LENGTH = 6; // 取件码长度
private static final int MAX_ATTEMPTS = 3; // 最大尝试次数
private static final long EXPIRATION_TIME = 24 * 3600; // 有效期(秒)
private static final int CLEANUP_INTERVAL = 60 * 60; // 清理线程间隔(秒)
// 依赖服务注入
private final ExpressService expressService;
private final SecureRandom secureRandom;
private final ScheduledExecutorService cleanupScheduler;
// 核心数据存储内存数据库实际应使用Redis等持久化存储
private final Map<String, PickupCodeRecord> codeDatabase = new ConcurrentHashMap<>();
private final Map<String, Integer> attemptCounter = new ConcurrentHashMap<>();
/**
*
*/
public PickupCodeService(ExpressService expressService) {
this.expressService = expressService;
this.secureRandom = new SecureRandom();
this.cleanupScheduler = Executors.newSingleThreadScheduledExecutor();
initializeCleanupTask();
}
/**
*
*/
private void initializeCleanupTask() {
cleanupScheduler.scheduleAtFixedRate(() -> {
long now = System.currentTimeMillis();
codeDatabase.entrySet().removeIf(entry ->
entry.getValue().getExpirationTime() < now);
}, CLEANUP_INTERVAL, CLEANUP_INTERVAL, TimeUnit.SECONDS);
}
/**
*
* @param trackingNumber
* @return
* @throws CodeGenerationException
*/
public PickupCode generatePickupCode(String trackingNumber)
throws CodeGenerationException {
// 1. 参数验证
if (!expressService.packageExists(trackingNumber)) {
throw new CodeGenerationException("包裹不存在");
}
// 2. 生成唯一码(时间戳+随机数+包裹哈希)
String baseCode = String.format("%d%06d",
System.currentTimeMillis() % 1000000,
secureRandom.nextInt(999999));
String hashedCode = hashCode(baseCode + trackingNumber);
String formattedCode = String.format("%s-%s",
hashedCode.substring(0, 3),
hashedCode.substring(3, 6));
// 3. 创建记录对象
PickupCodeRecord record = new PickupCodeRecord(
formattedCode,
trackingNumber,
System.currentTimeMillis() + EXPIRATION_TIME * 1000
);
// 4. 防重存储CAS操作保证原子性
codeDatabase.putIfAbsent(formattedCode, record);
return new PickupCode(formattedCode, record.getExpirationTime());
}
/**
*
* @param inputCode
* @param phone
* @return
*/
public ValidationResult validatePickupCode(String inputCode, String phone)
throws InvalidCodeException {
// 1. 格式预校验
if (!inputCode.matches("\\d{3}-\\d{3}")) {
throw new InvalidCodeException("格式错误");
}
// 2. 防暴力破解计数器
attemptCounter.merge(phone, 1, Integer::sum);
if (attemptCounter.get(phone) > MAX_ATTEMPTS) {
throw new InvalidCodeException("尝试次数过多请1小时后重试");
}
// 3. 核心验证逻辑
PickupCodeRecord record = codeDatabase.get(inputCode);
if (record == null) {
throw new InvalidCodeException("无效取件码");
}
if (record.isExpired()) {
throw new InvalidCodeException("取件码已过期");
}
if (!record.getTrackingNumber().equals(
expressService.getPackageByPhone(phone).getTrackingNumber())) {
throw new InvalidCodeException("取件码与包裹不匹配");
}
// 4. 验证成功后清理计数器
attemptCounter.remove(phone);
return new ValidationResult(true, record.getTrackingNumber());
}
/**
*
*/
private String hashCode(String input) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hashBytes = md.digest(input.getBytes());
return bytesToHex(hashBytes).substring(0, CODE_LENGTH);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("哈希算法不可用", e);
}
}
/**
*
*/
private String bytesToHex(byte[] bytes) {
StringBuilder hexString = new StringBuilder();
for (byte b : bytes) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
return hexString.toString();
}
/**
*
*/
public Optional<PickupCodeInfo> queryCodeInfo(String code) {
PickupCodeRecord record = codeDatabase.get(code);
if (record == null) return Optional.empty();
ExpressItem item = expressService.getPackage(record.getTrackingNumber());
return Optional.of(new PickupCodeInfo(
code,
item.getRecipient(),
item.getPhone(),
new Date(record.getExpirationTime()),
record.isUsed()
));
}
/**
* 使
*/
public void markCodeAsUsed(String code) {
PickupCodeRecord record = codeDatabase.get(code);
if (record != null) {
record.setUsed(true);
}
}
/**
*
*/
public List<PickupCode> batchGenerateCodes(int quantity)
throws CodeGenerationException {
return IntStream.range(0, quantity)
.mapToObj(i -> {
try {
return generatePickupCode(generateTrackingNumber());
} catch (CodeGenerationException e) {
throw new RuntimeException(e);
}
})
.collect(Collectors.toList());
}
/**
*
*/
private String generateTrackingNumber() {
return "TEST" + System.currentTimeMillis() % 1000000;
}
/**
*
*/
public static class PickupCode {
private final String code;
private final long expirationTime;
PickupCode(String code, long expirationTime) {
this.code = code;
this.expirationTime = expirationTime;
}
// Getter方法
public String getCode() { return code; }
public long getExpirationTime() { return expirationTime; }
}
/**
*
*/
public static class ValidationResult {
private final boolean valid;
private final String trackingNumber;
ValidationResult(boolean valid, String trackingNumber) {
this.valid = valid;
this.trackingNumber = trackingNumber;
}
// Getter方法
public boolean isValid() { return valid; }
public String getTrackingNumber() { return trackingNumber; }
}
/**
*
*/
public static class PickupCodeInfo {
private final String code;
private final String recipient;
private final String phone;
private final Date expiration;
private final boolean used;
PickupCodeInfo(String code, String recipient, String phone,
Date expiration, boolean used) {
this.code = code;
this.recipient = recipient;
this.phone = phone;
this.expiration = expiration;
this.used = used;
}
// Getter方法
public String getCode() { return code; }
public String getRecipient() { return recipient; }
public String getPhone() { return phone; }
public Date getExpiration() { return expiration; }
public boolean isUsed() { return used; }
}
/**
*
*/
public static class CodeGenerationException extends Exception {
public CodeGenerationException(String message) {
super(message);
}
}
public static class InvalidCodeException extends Exception {
public InvalidCodeException(String message) {
super(message);
}
}
/**
*
*/
private static class PickupCodeRecord {
private final String code;
private final String trackingNumber;
private final long expirationTime;
private boolean used = false;
PickupCodeRecord(String code, String trackingNumber, long expirationTime) {
this.code = code;
this.trackingNumber = trackingNumber;
this.expirationTime = expirationTime;
}
// Getter/Setter
public String getCode() { return code; }
public String getTrackingNumber() { return trackingNumber; }
public long getExpirationTime() { return expirationTime; }
public boolean isExpired() {
return System.currentTimeMillis() > expirationTime;
}
public boolean isUsed() { return used; }
public void setUsed(boolean used) { this.used = used; }
}
}

@ -1,178 +0,0 @@
package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
/**
*
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
*
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String role, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user != null){
if(!user.getRole().equals(role)){
return R.error("权限不正常");
}
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}else{
return R.error("账号或密码或权限不对");
}
}
/**
*
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
*
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为123456");
}
/**
*
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
*
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
*
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* session
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Integer id = (Integer)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
*
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
userService.updateById(user);//全部更新
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}

@ -1,263 +0,0 @@
import java.security.*;
import java.util.*;
import java.util.regex.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
/**
*
* /
*/
class UserManagementService {
// 内存存储结构(实际项目应使用数据库)
private final Map<String, User> userDatabase = new HashMap<>();
private final Map<String, Session> activeSessions = new HashMap<>();
private static final String SECRET_KEY = "express@Sys#Key2025"; // 加密密钥(生产环境应存储在安全配置)
/**
*
* @param username 4-16
* @param password
* @param role admin/staff/customer
* @return
*/
public RegistrationResult registerUser(String username, String password, String role)
throws NoSuchAlgorithmException, InvalidKeySpecException {
// 1. 参数验证
if (!isValidUsername(username)) {
return new RegistrationResult(false, "用户名需为4-16位字母数字");
}
if (userDatabase.containsKey(username)) {
return new RegistrationResult(false, "用户名已存在");
}
if (!isValidPassword(password)) {
return new RegistrationResult(false, "密码需包含大小写字母和数字至少8位");
}
if (!isValidRole(role)) {
return new RegistrationResult(false, "无效角色类型");
}
// 2. 密码加密处理
String salt = generateSalt();
String hashedPwd = hashPassword(password, salt);
// 3. 创建用户对象
User newUser = new User(username, hashedPwd, salt, role);
userDatabase.put(username, newUser);
return new RegistrationResult(true, "注册成功", newUser);
}
/**
*
* @param username
* @param password
* @return
*/
public AuthenticationResult authenticate(String username, String password)
throws NoSuchAlgorithmException, InvalidKeySpecException {
User user = userDatabase.get(username);
if (user == null) {
return new AuthenticationResult(false, "用户不存在");
}
// 验证密码
String testHash = hashPassword(password, user.getSalt());
if (!testHash.equals(user.getHashedPassword())) {
return new AuthenticationResult(false, "密码错误");
}
// 生成会话令牌JWT风格
String token = generateSessionToken(username);
activeSessions.put(token, new Session(token, username, new Date()));
return new AuthenticationResult(true, "认证成功", token);
}
/**
*
* @param password
* @return
*/
private boolean isValidPassword(String password) {
if (password.length() < 8) return false;
boolean hasUpper = false, hasLower = false, hasDigit = false;
for (char c : password.toCharArray()) {
if (Character.isUpperCase(c)) hasUpper = true;
else if (Character.isLowerCase(c)) hasLower = true;
else if (Character.isDigit(c)) hasDigit = true;
}
return hasUpper && hasLower && hasDigit;
}
/**
* 16
*/
private String generateSalt() {
SecureRandom random = new SecureRandom();
byte[] salt = new byte[16];
random.nextBytes(salt);
return Base64.getEncoder().encodeToString(salt);
}
/**
* PBKDF2
*/
private String hashPassword(String password, String salt)
throws NoSuchAlgorithmException, InvalidKeySpecException {
int iterations = 10000;
int keyLength = 256;
char[] passwordChars = password.toCharArray();
byte[] saltBytes = Base64.getDecoder().decode(salt);
PBEKeySpec spec = new PBEKeySpec(passwordChars, saltBytes, iterations, keyLength);
SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
byte[] hash = skf.generateSecret(spec).getEncoded();
return String.format("%d$%s$%s",
iterations,
Base64.getEncoder().encodeToString(saltBytes),
Base64.getEncoder().encodeToString(hash));
}
/**
* HMAC-SHA256
*/
private String generateSessionToken(String username) {
try {
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(SECRET_KEY.getBytes(), "HmacSHA256");
sha256_HMAC.init(secret_key);
String baseString = username + new Date().getTime();
return Base64.getEncoder().encodeToString(
sha256_HMAC.doFinal(baseString.getBytes())
);
} catch (Exception e) {
throw new RuntimeException("令牌生成失败", e);
}
}
/**
*
* @param requiredRole
*/
public static class RoleValidator {
private final String currentRole;
public RoleValidator(String sessionToken) {
// 实际应从会话中获取用户角色
this.currentRole = "customer"; // 示例值
}
public void validate(String requiredRole) throws InsufficientPermissionsException {
if (!currentRole.equals(requiredRole)) {
throw new InsufficientPermissionsException(
String.format("需要%s权限当前角色%s", requiredRole, currentRole));
}
}
}
/**
*
*/
static class User {
private final String username;
private final String hashedPassword;
private final String salt;
private final String role;
User(String username, String hashedPassword, String salt, String role) {
this.username = username;
this.hashedPassword = hashedPassword;
this.salt = salt;
this.role = role;
}
// Getter方法根据安全需求限制访问
public String getUsername() { return username; }
public String getHashedPassword() { return hashedPassword; }
public String getSalt() { return salt; }
public String getRole() { return role; }
}
/**
*
*/
static class Session {
private final String token;
private final String username;
private final Date createdAt;
Session(String token, String username, Date createdAt) {
this.token = token;
this.username = username;
this.createdAt = createdAt;
}
// Getter方法
public String getToken() { return token; }
public String getUsername() { return username; }
public Date getCreatedAt() { return createdAt; }
}
/**
*
*/
static class RegistrationResult {
private final boolean success;
private final String message;
private final User user;
RegistrationResult(boolean success, String message) {
this(success, message, null);
}
RegistrationResult(boolean success, String message, User user) {
this.success = success;
this.message = message;
this.user = user;
}
// Getter方法
public boolean isSuccess() { return success; }
public String getMessage() { return message; }
public User getUser() { return user; }
}
/**
*
*/
static class AuthenticationResult {
private final boolean success;
private final String message;
private final String token;
AuthenticationResult(boolean success, String message) {
this(success, message, null);
}
AuthenticationResult(boolean success, String message, String token) {
this.success = success;
this.message = message;
this.token = token;
}
// Getter方法
public boolean isSuccess() { return success; }
public String getMessage() { return message; }
public String getToken() { return token; }
}
/**
*
*/
static class InsufficientPermissionsException extends SecurityException {
public InsufficientPermissionsException(String message) {
super(message);
}
}
}

@ -1,246 +0,0 @@
package com.controller;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import com.entity.*;
import com.service.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.view.YijiedanView;
import com.utils.PageUtils;
import com.utils.R;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@RestController
@Controller
@RequestMapping("/yijiedan")
public class YijiedanController {
private static final Logger logger = LoggerFactory.getLogger(YijiedanController.class);
@Autowired
private YijiedanService yijiedanService;
@Autowired
private JiedanService jiedanService;
@Autowired
private DictionaryService dictionaryService;
@Autowired
private DaiquService daiquService;
//级联表service
@Autowired
private DaiqurenService daiqurenService;
@Autowired
private YonghuService yonghuService;
@Autowired
private ZhandianService zhandianService;
/**
*
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
PageUtils page = null;
if(StringUtil.isNotEmpty(role) && "用户".equals(role)){
params.put("yonghuId",request.getSession().getAttribute("userId"));
page = yijiedanService.queryPage(params);
}else if(StringUtil.isNotEmpty(role) && "代取人".equals(role)){
params.put("daiqurenId",request.getSession().getAttribute("userId"));
page = yijiedanService.queryPage(params);
}
page = yijiedanService.queryPage(params);
//字典表数据转换
List<YijiedanView> list =(List<YijiedanView>)page.getList();
for(YijiedanView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c);
}
return R.ok().put("data", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
YijiedanEntity yijiedan = yijiedanService.selectById(id);
if(yijiedan !=null){
//entity转view
YijiedanView view = new YijiedanView();
BeanUtils.copyProperties( yijiedan , view );//把实体数据重构到view中
//级联表
DaiqurenEntity daiquren = daiqurenService.selectById(yijiedan.getDaiqurenId());
if(daiquren != null){
view.setDaiqurenId(daiquren.getId());
view.setYhname(daiquren.getName());
}
//级联表
YonghuEntity yonghu = yonghuService.selectById(yijiedan.getYonghuId());
if(yonghu != null){
BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setYonghuId(yonghu.getId());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
*
*/
@RequestMapping("/save")
public R save(@RequestBody YijiedanEntity yijiedan, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,yijiedan:{}",this.getClass().getName(),yijiedan.toString());
Wrapper<YijiedanEntity> queryWrapper = new EntityWrapper<YijiedanEntity>()
.eq("odd", yijiedan.getOdd())
.eq("yonghu_id", yijiedan.getYonghuId())
.eq("fbphone", yijiedan.getFbphone())
.eq("daiquren_id", yijiedan.getDaiqurenId())
.eq("jdphone", yijiedan.getJdphone())
.eq("ddzt_types", yijiedan.getDdztTypes())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
YijiedanEntity yijiedanEntity = yijiedanService.selectOne(queryWrapper);
if(yijiedanEntity==null){
// String role = String.valueOf(request.getSession().getAttribute("role"));
// if("".equals(role)){
// yijiedan.set
// }
yijiedanService.insert(yijiedan);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
*
*/
@RequestMapping("/update")
public R update(@RequestBody YijiedanEntity yijiedan, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,yijiedan:{}",this.getClass().getName(),yijiedan.toString());
//根据字段查询是否有相同数据
Wrapper<YijiedanEntity> queryWrapper = new EntityWrapper<YijiedanEntity>()
.notIn("id",yijiedan.getId())
.eq("odd", yijiedan.getOdd())
.eq("yonghu_id", yijiedan.getYonghuId())
.eq("fbphone", yijiedan.getFbphone())
.eq("daiquren_id", yijiedan.getDaiqurenId())
.eq("jdphone", yijiedan.getJdphone())
.eq("ddzt_types", yijiedan.getDdztTypes())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
YijiedanEntity yijiedanEntity = yijiedanService.selectOne(queryWrapper);
yijiedan.setInitiateTime(new Date());
if(yijiedanEntity==null){
// String role = String.valueOf(request.getSession().getAttribute("role"));
// if("".equals(role)){
// yijiedan.set
// }
yijiedanService.updateById(yijiedan);//根据id更新
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
*
*/
@RequestMapping("/accomplish")
public R accomplish(@RequestBody Integer ids){
YijiedanEntity yijiedan = yijiedanService.selectById(ids);
if(yijiedan == null){
return R.error();
}
JiedanEntity odd = jiedanService.selectOne(new EntityWrapper<JiedanEntity>().eq("odd", yijiedan.getOdd()));
if(odd == null){
return R.error();
}
if(odd.getKdlxTypes() == 1){
DaiquEntity takecode = daiquService.selectOne(new EntityWrapper().eq("takecode", odd.getJdtakecode()));
if(takecode == null){
return R.error();
}
takecode.setKdztTypes(2);
takecode.setPickupTime(new Date());
daiquService.updateById(takecode);
}else{
DaiquEntity daiqu = new DaiquEntity();
List<ZhandianEntity> zhandian = zhandianService.selectList(null);
int max=zhandian.size()-1,min=0;
int ran2 = (int) (Math.random()*(max-min)+min);
//随机站点
daiqu.setZhandianId(zhandian.get(ran2).getId());
//快递名称
daiqu.setDqname(odd.getDaiqukuaidimc());
//快递大小
daiqu.setKddxTypes(odd.getDx());
daiqu.setKdztTypes(1);
//收件用户id
YonghuEntity name = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("name", odd.getAddresseename()));
daiqu.setYonghuId(name.getId());
//手机号
daiqu.setDqphone(name.getPhone());
//取件码
daiqu.setTakecode(UUID.randomUUID().toString().toString().replace("-","").substring(0,6));
daiquService.insert(daiqu);
}
yijiedan.setDdztTypes(2);//2已完成
yijiedanService.updateById(yijiedan);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
yijiedanService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}

@ -1,242 +0,0 @@
package com.controller;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;
import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.YonghuEntity;
import com.service.YonghuService;
import com.entity.view.YonghuView;
import com.utils.PageUtils;
import com.utils.R;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
@RestController
@Controller
@RequestMapping("/yonghu")
public class YonghuController {
private static final Logger logger = LoggerFactory.getLogger(YonghuController.class);
@Autowired
private YonghuService yonghuService;
@Autowired
private TokenService tokenService;
@Autowired
private DictionaryService dictionaryService;
/**
*
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
PageUtils page = yonghuService.queryPage(params);
//字典表数据转换
List<YonghuView> list =(List<YonghuView>)page.getList();
for(YonghuView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c);
}
return R.ok().put("data", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
YonghuEntity yonghu = yonghuService.selectById(id);
if(yonghu !=null){
//entity转view
YonghuView view = new YonghuView();
BeanUtils.copyProperties( yonghu , view );//把实体数据重构到view中
//修改对应字典表字段
dictionaryService.dictionaryConvert(view);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
*
*/
@IgnoreAuth
@RequestMapping("/save")
public R save(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,yonghu:{}",this.getClass().getName(),yonghu.toString());
Wrapper<YonghuEntity> queryWrapper = new EntityWrapper<YonghuEntity>()
.eq("studentnumber", yonghu.getStudentnumber())
.eq("name", yonghu.getName())
.eq("username", yonghu.getUsername())
.eq("password", yonghu.getPassword())
.eq("sex_types", yonghu.getSexTypes())
.eq("phone", yonghu.getPhone())
.eq("zhuSuLou", yonghu.getZhuSuLou())
.eq("dormitory", yonghu.getDormitory())
.eq("role", yonghu.getRole())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
YonghuEntity yonghuEntity = yonghuService.selectOne(queryWrapper);
if(yonghuEntity==null){
if(yonghu.getPassword()== "" || yonghu.getPassword() == null){
yonghu.setPassword("123456");
}
yonghu.setRole("用户");
yonghuService.insert(yonghu);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
*
*/
@RequestMapping("/update")
public R update(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,yonghu:{}",this.getClass().getName(),yonghu.toString());
//根据字段查询是否有相同数据
Wrapper<YonghuEntity> queryWrapper = new EntityWrapper<YonghuEntity>()
.notIn("id",yonghu.getId())
.eq("studentnumber", yonghu.getStudentnumber())
.eq("name", yonghu.getName())
.eq("username", yonghu.getUsername())
.eq("password", yonghu.getPassword())
.eq("sex_types", yonghu.getSexTypes())
.eq("phone", yonghu.getPhone())
.eq("zhuSuLou", yonghu.getZhuSuLou())
.eq("dormitory", yonghu.getDormitory())
.eq("role", yonghu.getRole())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
YonghuEntity yonghuEntity = yonghuService.selectOne(queryWrapper);
if("".equals(yonghu.getImgPhoto()) || "null".equals(yonghu.getImgPhoto())){
yonghu.setImgPhoto(null);
}
if(yonghuEntity==null){
yonghuService.updateById(yonghu);//根据id更新
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
*
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
yonghuService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
*
*/
@RequestMapping("/yanz")
public R delete(Integer ids){
YonghuEntity yonghu = yonghuService.selectById(ids);
if(yonghu!= null){
return R.error();
}
yonghu.setYanzheng(1);
yonghuService.updateById(yonghu);
return R.ok();
}
/**
*
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String role, HttpServletRequest request) {
YonghuEntity yonghu = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("username", username));
if(yonghu==null || !yonghu.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
if(yonghu.getYanzheng() != 1){
return R.error("还未通过验证请耐心等待");
}
if(!role.equals(yonghu.getRole())){
return R.error("权限不正确");
}
String token = tokenService.generateToken(yonghu.getId(),username, "yonghu", "用户");
R r = R.ok();
r.put("token", token);
r.put("role","用户");
r.put("userId",yonghu.getId());
return r;
}
/**
*
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody YonghuEntity yonghu){
// ValidatorUtils.validateEntity(user);
if(yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("username", yonghu.getUsername()).orNew().eq("phone",yonghu.getPhone())) !=null) {
return R.error("用户已存在或手机号身份证号已经被使用");
}
yonghuService.insert(yonghu);
return R.ok();
}
/**
* session
*/
@RequestMapping("/session")
public R getCurrYonghu(HttpServletRequest request){
Integer id = (Integer)request.getSession().getAttribute("userId");
YonghuEntity yonghu = yonghuService.selectById(id);
return R.ok().put("data", yonghu);
}
/**
* 退
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
}

@ -1,182 +0,0 @@
package com.controller;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;
import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.ZhandianEntity;
import com.service.ZhandianService;
import com.entity.view.ZhandianView;
import com.utils.PageUtils;
import com.utils.R;
/**
*
*
* @author
* @email
* @date 2021-03-11
*/
/**
*
* CRUD
*
*
* 1.
* 2.
* 3.
*
* @author
* @email
* @date 2021-03-11
*/
@RestController
@RequestMapping("/zhandian")
public class ZhandianController {
private static final Logger logger = LoggerFactory.getLogger(ZhandianController.class);
@Autowired private ZhandianService zhandianService; // 站点核心业务服务
@Autowired private TokenService tokenService; // 用户认证服务
@Autowired private DictionaryService dictionaryService; // 数据字典服务
/**
*
* @param params page/limit
* @param request HTTP
* @return
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request) {
// 日志记录:输出调试信息(使用参数化日志避免字符串拼接)
logger.debug("分页查询参数: {}", JSONObject.toJSONString(params));
// 用户权限校验:普通用户只能查看关联数据
if("用户".equals(request.getSession().getAttribute("role"))) {
params.put("yonghuId", request.getSession().getAttribute("userId"));
}
// 执行分页查询
PageUtils page = zhandianService.queryPage(params);
// 数据转换:将实体列表转为视图对象并处理字典值
((List<ZhandianView>)page.getList()).forEach(dictionaryService::dictionaryConvert);
return R.ok().put("data", page);
}
/**
*
* @param id ID
* @return
* @throws 511
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id) {
logger.debug("查询站点详情, ID: {}", id);
ZhandianEntity entity = zhandianService.selectById(id);
if(entity == null) return R.error(511, "查不到数据");
// 实体转视图:过滤敏感字段并准备返回数据
ZhandianView view = new ZhandianView();
BeanUtils.copyProperties(entity, view);
// 字典值转换:将编码值转为可读文本
dictionaryService.dictionaryConvert(view);
return R.ok().put("data", view);
}
}
/**
*
*/
/**
*
* @param zhandian zdname/address
* @param request HTTP
* @return 200511
*
* @apiNote
* 1. zdname+address
* 2.
*/
@RequestMapping("/add")
public R add(@RequestBody ZhandianEntity zhandian, HttpServletRequest request) {
// 唯一性校验(名称+地址组合唯一)
Wrapper<ZhandianEntity> queryWrapper = new EntityWrapper<ZhandianEntity>()
.eq("zdname", zhandian.getZdname())
.eq("address", zhandian.getAddress());
if(zhandianService.selectOne(queryWrapper) == null) {
// 权限校验预留接口(当前注释状态)
zhandianService.insert(zhandian);
return R.ok();
}
return R.error(511, "表中有相同数据");
}
/**
*
* @param zhandian id
* @param request HTTP
* @return 200511
*
* @apiNote
* 1. idzdname+address
* 2.
* 3.
*/
@RequestMapping("/update")
public R update(@RequestBody ZhandianEntity zhandian, HttpServletRequest request) {
// 唯一性校验(排除当前记录)
Wrapper<ZhandianEntity> queryWrapper = new EntityWrapper<ZhandianEntity>()
.notIn("id", zhandian.getId())
.eq("zdname", zhandian.getZdname())
.eq("address", zhandian.getAddress());
logger.info("生成的SQL片段: {}", queryWrapper.getSqlSegment());
if(zhandianService.selectOne(queryWrapper) == null) {
zhandianService.updateById(zhandian);
return R.ok();
}
return R.error(511, "表中有相同数据");
}
/**
*
* @param ids ID
* @return
*
* @apiNote
* 1. 使
* 2.
* 3.
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids) {
logger.debug("待删除ID列表: {}", Arrays.toString(ids));
int affectRows = zhandianService.deleteBatchIds(Arrays.asList(ids));
return R.ok().put("data", "成功删除"+affectRows+"条记录");
}

@ -1,26 +0,0 @@
package com.dao;
import java.util.List;
import java.util.Map;
/**
*
*/
public interface CommonDao{
List<String> getOption(Map<String, Object> params);
Map<String, Object> getFollowByOption(Map<String, Object> params);
List<String> getFollowByOption2(Map<String, Object> params);
void sh(Map<String, Object> params);
int remindCount(Map<String, Object> params);
Map<String, Object> selectCal(Map<String, Object> params);
List<Map<String, Object>> selectGroup(Map<String, Object> params);
List<Map<String, Object>> selectValue(Map<String, Object> params);
}

@ -1,13 +0,0 @@
package com.dao;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.entity.ConfigEntity;
/**
*
*/
public interface ConfigDao extends BaseMapper<ConfigEntity> {
}

@ -1,22 +0,0 @@
package com.dao;
import com.entity.DaiquEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import org.apache.ibatis.annotations.Param;
import com.entity.view.DaiquView;
/**
* Dao
*
* @author
* @since 2021-03-11
*/
public interface DaiquDao extends BaseMapper<DaiquEntity> {
List<DaiquView> selectListView(Pagination page,@Param("params")Map<String,Object> params);
}

@ -1,22 +0,0 @@
package com.dao;
import com.entity.DaiqurenEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import org.apache.ibatis.annotations.Param;
import com.entity.view.DaiqurenView;
/**
* Dao
*
* @author
* @since 2021-03-11
*/
public interface DaiqurenDao extends BaseMapper<DaiqurenEntity> {
List<DaiqurenView> selectListView(Pagination page,@Param("params")Map<String,Object> params);
}

@ -1,22 +0,0 @@
package com.dao;
import com.entity.DictionaryEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import org.apache.ibatis.annotations.Param;
import com.entity.view.DictionaryView;
/**
* Dao
*
* @author
* @since 2021-03-11
*/
public interface DictionaryDao extends BaseMapper<DictionaryEntity> {
List<DictionaryView> selectListView(Pagination page,@Param("params")Map<String,Object> params);
}

@ -1,22 +0,0 @@
package com.dao;
import com.entity.JiedanEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import org.apache.ibatis.annotations.Param;
import com.entity.view.JiedanView;
/**
* Dao
*
* @author
* @since 2021-03-11
*/
public interface JiedanDao extends BaseMapper<JiedanEntity> {
List<JiedanView> selectListView(Pagination page,@Param("params")Map<String,Object> params);
}

@ -1,22 +0,0 @@
package com.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.entity.TokenEntity;
/**
* token
*/
public interface TokenDao extends BaseMapper<TokenEntity> {
List<TokenEntity> selectListView(@Param("ew") Wrapper<TokenEntity> wrapper);
List<TokenEntity> selectListView(Pagination page, @Param("ew") Wrapper<TokenEntity> wrapper);
}

@ -1,22 +0,0 @@
package com.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.entity.UserEntity;
/**
*
*/
public interface UserDao extends BaseMapper<UserEntity> {
List<UserEntity> selectListView(@Param("ew") Wrapper<UserEntity> wrapper);
List<UserEntity> selectListView(Pagination page, @Param("ew") Wrapper<UserEntity> wrapper);
}

@ -1,22 +0,0 @@
package com.dao;
import com.entity.YijiedanEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import org.apache.ibatis.annotations.Param;
import com.entity.view.YijiedanView;
/**
* Dao
*
* @author
* @since 2021-03-11
*/
public interface YijiedanDao extends BaseMapper<YijiedanEntity> {
List<YijiedanView> selectListView(Pagination page,@Param("params")Map<String,Object> params);
}

@ -1,22 +0,0 @@
package com.dao;
import com.entity.YonghuEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import org.apache.ibatis.annotations.Param;
import com.entity.view.YonghuView;
/**
* Dao
*
* @author
* @since 2021-03-11
*/
public interface YonghuDao extends BaseMapper<YonghuEntity> {
List<YonghuView> selectListView(Pagination page,@Param("params")Map<String,Object> params);
}

@ -1,22 +0,0 @@
package com.dao;
import com.entity.ZhandianEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import org.apache.ibatis.annotations.Param;
import com.entity.view.ZhandianView;
/**
* Dao
*
* @author
* @since 2021-03-11
*/
public interface ZhandianDao extends BaseMapper<ZhandianEntity> {
List<ZhandianView> selectListView(Pagination page,@Param("params")Map<String,Object> params);
}
Loading…
Cancel
Save