main
parent
094675d07e
commit
8bb8c56ff3
@ -0,0 +1,33 @@
|
||||
HELP.md
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### STS ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
@ -0,0 +1,190 @@
|
||||
|
||||
DROP DATABASE IF EXISTS gym_management_system ;
|
||||
CREATE DATABASE gym_management_system CHARACTER SET utf8;
|
||||
use gym_management_system ;
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for admin
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `admin`;
|
||||
CREATE TABLE `admin` (
|
||||
`admin_account` int NOT NULL COMMENT '管理员账号',
|
||||
`admin_password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '管理员密码',
|
||||
PRIMARY KEY (`admin_account`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of admin
|
||||
-- ----------------------------
|
||||
INSERT INTO `admin` VALUES (1001, '123456');
|
||||
INSERT INTO `admin` VALUES (1002, '123456');
|
||||
INSERT INTO `admin` VALUES (1003, '123456');
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for classtable
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `class_table`;
|
||||
CREATE TABLE `class_table` (
|
||||
`c_id` int NOT NULL AUTO_INCREMENT COMMENT '预约表id',
|
||||
`class_id` int NULL DEFAULT NULL COMMENT '预约id',
|
||||
`class_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '器材名称',
|
||||
`class_begin` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '时间',
|
||||
`coach` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地点',
|
||||
PRIMARY KEY (`c_id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of classtable
|
||||
-- ----------------------------
|
||||
INSERT INTO `class_table` VALUES (1,10001, '跑步机1', '8:00-9:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (2,10002, '跑步机1', '9:00-10:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (3,10003, '跑步机1', '10:00-11:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (4,10004, '跑步机1', '11:00-12:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (5,10005, '跑步机1', '14:00-15:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (6,10006, '跑步机1', '15:00-16:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (7,10007, '跑步机1', '16:00-17:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (8,10008, '跑步机1', '17:00-18:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (9,10009, '跑步机1', '20:00-21:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (10,10010, '跑步机1', '21:00-22:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (11,10011, '杠铃1', '8:00-9:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (12,10012, '杠铃1', '9:00-10:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (13,10013, '杠铃1', '10:00-11:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (14,10014, '杠铃1', '11:00-12:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (15,10015, '杠铃1', '14:00-15:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (16,10016, '杠铃1', '15:00-16:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (17,10017, '杠铃1', '16:00-17:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (18,10018, '杠铃1', '17:00-18:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (19,10019, '杠铃1', '20:00-21:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (20,10020, '杠铃1', '21:00-22:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (21,10011, '哑铃1', '8:00-9:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (22,10012, '哑铃1', '9:00-10:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (23,10013, '哑铃1', '10:00-11:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (24,10014, '哑铃1', '11:00-12:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (25,10015, '哑铃1', '14:00-15:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (26,10016, '哑铃1', '15:00-16:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (27,10017, '哑铃1', '16:00-17:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (28,10018, '哑铃1', '17:00-18:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (29,10019, '哑铃1', '20:00-21:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (30,10020, '哑铃1', '21:00-22:00', '一号房间');
|
||||
INSERT INTO `class_table` VALUES (31,10001, '跑步机2', '8:00-9:00', '二号房间');
|
||||
INSERT INTO `class_table` VALUES (32,10003, '跑步机2', '10:00-11:00', '二号房间');
|
||||
INSERT INTO `class_table` VALUES (33,10004, '跑步机2', '11:00-12:00', '二号房间');
|
||||
INSERT INTO `class_table` VALUES (34,10005, '跑步机2', '14:00-15:00', '二号房间');
|
||||
INSERT INTO `class_table` VALUES (35,10006, '跑步机2', '15:00-16:00', '二号房间');
|
||||
INSERT INTO `class_table` VALUES (36,10007, '跑步机2', '16:00-17:00', '二号房间');
|
||||
INSERT INTO `class_table` VALUES (37,10008, '跑步机2', '17:00-18:00', '二号房间');
|
||||
INSERT INTO `class_table` VALUES (38,10009, '跑步机2', '20:00-21:00', '二号房间');
|
||||
INSERT INTO `class_table` VALUES (39,10010, '跑步机2', '21:00-22:00', '二号房间');
|
||||
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `record_table`;
|
||||
CREATE TABLE `record_table` (
|
||||
`date` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '预约时间',
|
||||
`ruser` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户账号',
|
||||
`record_id` int NULL DEFAULT NULL COMMENT '预约id',
|
||||
`record_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '器材名称',
|
||||
`record_begin` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '时间',
|
||||
`location` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地点',
|
||||
PRIMARY KEY (`date`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
|
||||
|
||||
INSERT INTO `record_table` VALUES ('2024-11-18 15:01:20',202009867,10001, '跑步机', '8:00-9:00', '一号房间');
|
||||
INSERT INTO `record_table` VALUES ('2024-11-18 15:11:20',202009867,10002, '跑步机', '9:00-10:00', '一号房间');
|
||||
INSERT INTO `record_table` VALUES ('2024-11-18 15:21:20',202009867,10005, '跑步机', '9:00-10:00', '一号房间');
|
||||
INSERT INTO `record_table` VALUES ('2024-11-18 15:31:20',202009867,10003, '跑步机', '9:00-10:00', '一号房间');
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for member
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `member`;
|
||||
CREATE TABLE `member` (
|
||||
`member_account` int NOT NULL COMMENT '用户账号',
|
||||
`member_password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户密码',
|
||||
`member_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户姓名',
|
||||
`member_gender` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户性别',
|
||||
`member_age` int NULL DEFAULT NULL COMMENT '用户年龄',
|
||||
`member_height` int NULL DEFAULT NULL COMMENT '用户身高',
|
||||
`member_weight` int NULL DEFAULT NULL COMMENT '用户体重',
|
||||
`member_phone` bigint NULL DEFAULT NULL COMMENT '用户电话',
|
||||
PRIMARY KEY (`member_account`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of member
|
||||
-- ----------------------------
|
||||
INSERT INTO `member` VALUES (202009867, '123456', '张三', '女', 24, 182, 60, 13515548482);
|
||||
INSERT INTO `member` VALUES (202100788, '123456', '李四', '男', 31, 178, 60, 13131554873);
|
||||
INSERT INTO `member` VALUES (202132539, '123456', '王五', '男', 31, 178, 60, 13154875489);
|
||||
INSERT INTO `member` VALUES (202186416, '123456', '马六', '女', 23, 160, 45, 13124576857);
|
||||
INSERT INTO `member` VALUES (202106725, '123456', 'Tom', '男', 24, 178, 88, 13758784959);
|
||||
INSERT INTO `member` VALUES (202183406, '123456', 'Tylor', '女', 19, 170, 60, 13786457488);
|
||||
INSERT INTO `member` VALUES (202176587, '123456', 'Jack', '男', 33, 177, 90, 13767546666);
|
||||
INSERT INTO `member` VALUES (202156754, '123456', 'Mike', '男', 36, 166, 67, 13786532448);
|
||||
INSERT INTO `member` VALUES (202153468, '123456', 'Emma', '女', 25, 173, 44, 13786457124);
|
||||
INSERT INTO `member` VALUES (202121345, '123456', 'Ava', '女', 28, 160, 40, 13754457488);
|
||||
INSERT INTO `member` VALUES (202189776, '123456', 'Chloe', '女', 27, 170, 50, 13986337489);
|
||||
INSERT INTO `member` VALUES (202123664, '123456', 'Lily', '女', 25, 165, 51, 15986457423);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for equipment
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `equipment`;
|
||||
CREATE TABLE `equipment` (
|
||||
`equipment_id` int NOT NULL AUTO_INCREMENT COMMENT '器材id',
|
||||
`equipment_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '器材名称',
|
||||
`equipment_location` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '器材位置',
|
||||
`equipment_status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '器材状态',
|
||||
`equipment_message` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '器材备注信息',
|
||||
PRIMARY KEY (`equipment_id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of equipment
|
||||
-- ----------------------------
|
||||
INSERT INTO `equipment` VALUES (1, '哑铃1', '1号房间', '正常', '');
|
||||
INSERT INTO `equipment` VALUES (2, '杠铃1', '2号房间', '损坏', '待维修');
|
||||
INSERT INTO `equipment` VALUES (3, '跑步机1', '2号房间', '维修中', '联系厂家维修');
|
||||
INSERT INTO `equipment` VALUES (4, '跑步机2', '2号房间', '正常', '');
|
||||
INSERT INTO `equipment` VALUES (5, '跑步机3', '2号房间', '正常', '');
|
||||
INSERT INTO `equipment` VALUES (6, '杠铃1', '1号房间', '正常', '');
|
||||
INSERT INTO `equipment` VALUES (7, '杠铃2', '1号房间', '正常', '');
|
||||
|
||||
-- ----------------------------
|
||||
-- Records for target_record
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `target_record`;
|
||||
CREATE TABLE `target_record` (
|
||||
`tuser` int NULL DEFAULT NULL COMMENT '用户账号',
|
||||
`tp_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '项目名称',
|
||||
`tep_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '器材名称',
|
||||
`tr_location` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '器材位置',
|
||||
`ttime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '锻炼时长',
|
||||
`tdate` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci Not NULL COMMENT '锻炼时间',
|
||||
PRIMARY KEY (`tdate`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
|
||||
INSERT INTO `target_record` VALUES (202009867,'跑步','跑步机','1号房','30min','2021年1月2日 10:20');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
DROP TABLE IF EXISTS `real_record`;
|
||||
CREATE TABLE `real_record` (
|
||||
`ruser` int NULL DEFAULT NULL COMMENT '用户账号',
|
||||
`rp_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '项目名称',
|
||||
`rep_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '器材名称',
|
||||
`rr_location` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '器材位置',
|
||||
`rtime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '锻炼时长',
|
||||
`rdate` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci Not NULL COMMENT '锻炼时间',
|
||||
PRIMARY KEY (`rdate`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
|
||||
INSERT INTO `real_record` VALUES (202009867,'跑步','跑步机','1号房','30min','2021年1月2日 10:20');
|
||||
INSERT INTO `real_record` VALUES (202009867,'跑步','跑步机','1号房','30min','2021年1月3日 10:21');
|
||||
INSERT INTO `real_record` VALUES (202009867,'跑步','跑步机','1号房','30min','2021年1月4日 11:20');
|
||||
INSERT INTO `real_record` VALUES (202009867,'跑步','跑步机','1号房','30min','2021年1月8日 10:20');
|
||||
INSERT INTO `real_record` VALUES (202009867,'跑步','跑步机','1号房','30min','2021年1月9日 14:20');
|
||||
INSERT INTO `real_record` VALUES (202009867,'跑步','跑步机','1号房','30min','2021年1月1日 10:90');
|
||||
|
||||
|
||||
|
@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.5.3</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
<groupId>com.milotnt</groupId>
|
||||
<artifactId>gym-management-system</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<name>gym-management-system</name>
|
||||
<description>gym-management-system</description>
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
<mysql.version>8.0.25</mysql.version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jdbc</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-devtools</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mybatis.spring.boot</groupId>
|
||||
<artifactId>mybatis-spring-boot-starter</artifactId>
|
||||
<version>2.2.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
@ -0,0 +1,13 @@
|
||||
package com.milotnt;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class GymManagementSystemApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(GymManagementSystemApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.milotnt.controller;
|
||||
|
||||
import com.milotnt.pojo.ClassTable;
|
||||
import com.milotnt.service.ClassTableService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author
|
||||
* @date
|
||||
*/
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/class")
|
||||
public class ClassController {
|
||||
|
||||
@Autowired
|
||||
private ClassTableService classTableService;
|
||||
//查询预约信息
|
||||
@RequestMapping("/selClass")
|
||||
public String selectClass(Model model) {
|
||||
List<ClassTable> classList = classTableService.findAll();
|
||||
model.addAttribute("classList", classList);
|
||||
return "selectClass";
|
||||
}
|
||||
|
||||
//跳转新增预约信息页面
|
||||
@RequestMapping("/toAddClass")
|
||||
public String toAddClass() {
|
||||
return "addClass";
|
||||
}
|
||||
|
||||
//新增预约信息
|
||||
@RequestMapping("/addClass")
|
||||
public String addClass(ClassTable classTable) {
|
||||
classTableService.insertClass(classTable);
|
||||
return "redirect:selClass";
|
||||
}
|
||||
|
||||
|
||||
//删除预约信息
|
||||
@RequestMapping("/delClass")
|
||||
public String deleteClass(Integer classId) {
|
||||
classTableService.deleteClassByClassId(classId);
|
||||
return "redirect:selClass";
|
||||
}
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
package com.milotnt.controller;
|
||||
|
||||
import com.milotnt.pojo.Equipment;
|
||||
import com.milotnt.service.EquipmentService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/equipment")
|
||||
public class EquipmentController {
|
||||
|
||||
@Autowired
|
||||
private EquipmentService equipmentService;
|
||||
|
||||
//查询器材
|
||||
@RequestMapping("/selEquipment")
|
||||
public String selectEquipment(Model model, HttpSession session) {
|
||||
List<Equipment> equipmentList = equipmentService.findAll();
|
||||
session.setAttribute("equipmentList", equipmentList);
|
||||
model.addAttribute("equipmentList", equipmentList);
|
||||
return "selectEquipment";
|
||||
}
|
||||
|
||||
//删除器材
|
||||
@RequestMapping("/delEquipment")
|
||||
public String deleteEquipment(Integer equipmentId) {
|
||||
equipmentService.deleteByEquipmentId(equipmentId);
|
||||
return "redirect:selEquipment";
|
||||
}
|
||||
|
||||
//跳转修改器材页面
|
||||
@RequestMapping("/toUpdateEquipment")
|
||||
public String toUpdateEquipment(Integer equipmentId, Model model) {
|
||||
List<Equipment> equipmentList = equipmentService.selectByEquipmentId(equipmentId);
|
||||
model.addAttribute("equipmentList", equipmentList);
|
||||
return "updateEquipment";
|
||||
}
|
||||
|
||||
//修改器材
|
||||
@RequestMapping("/updateEquipment")
|
||||
public String updateEquipment(Equipment equipment) {
|
||||
equipmentService.updateEquipmentByEquipmentId(equipment);
|
||||
return "redirect:selEquipment";
|
||||
}
|
||||
|
||||
//跳转新增器材页面
|
||||
@RequestMapping("/toAddEquipment")
|
||||
public String toAddEquipment() {
|
||||
return "addEquipment";
|
||||
}
|
||||
|
||||
//新增器材
|
||||
@RequestMapping("/addEquipment")
|
||||
public String addEquipment(Equipment equipment) {
|
||||
equipmentService.insertEquipment(equipment);
|
||||
return "redirect:selEquipment";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,133 @@
|
||||
package com.milotnt.controller;
|
||||
|
||||
import com.milotnt.pojo.Admin;
|
||||
import com.milotnt.pojo.Member;
|
||||
import com.milotnt.service.AdminService;
|
||||
import com.milotnt.service.EquipmentService;
|
||||
import com.milotnt.service.MemberService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
|
||||
@Controller
|
||||
public class LoginController {
|
||||
|
||||
@Autowired
|
||||
private MemberService memberService;
|
||||
@Autowired
|
||||
private AdminService adminService;
|
||||
|
||||
@Autowired
|
||||
private EquipmentService equipmentService;
|
||||
|
||||
//主页、跳转管理员登录页面
|
||||
@RequestMapping("/")
|
||||
public String toAdminLogin() {
|
||||
return "adminLogin";
|
||||
}
|
||||
|
||||
//跳转用户登录页面
|
||||
@RequestMapping("/toUserLogin")
|
||||
public String toUserLogin() {
|
||||
return "userLogin";
|
||||
}
|
||||
|
||||
//跳转注册页面
|
||||
@RequestMapping("/toUserRegist")
|
||||
public String toUserRegist() {
|
||||
return "userRegist";
|
||||
}
|
||||
|
||||
//管理员登录
|
||||
@RequestMapping("/adminLogin")
|
||||
public String adminLogin(Admin admin, Model model, HttpSession session) {
|
||||
Admin admin1 = adminService.adminLogin(admin);
|
||||
if (admin1 != null) {
|
||||
//会员人数
|
||||
Integer memberTotal = memberService.selectTotalCount();
|
||||
model.addAttribute("memberTotal", memberTotal);
|
||||
session.setAttribute("memberTotal", memberTotal);
|
||||
|
||||
//健身房总人数
|
||||
Integer humanTotal = memberTotal;
|
||||
model.addAttribute("humanTotal", humanTotal);
|
||||
session.setAttribute("humanTotal", humanTotal);
|
||||
|
||||
//器材数
|
||||
Integer equipmentTotal = equipmentService.selectTotalCount();
|
||||
model.addAttribute("equipmentTotal", equipmentTotal);
|
||||
session.setAttribute("equipmentTotal", equipmentTotal);
|
||||
|
||||
return "adminMain";
|
||||
}
|
||||
model.addAttribute("msg", "您输入的账号或密码有误,请重新输入!");
|
||||
return "adminLogin";
|
||||
}
|
||||
|
||||
//用户登录
|
||||
@RequestMapping("/userLogin")
|
||||
public String userLogin(Member member, Model model, HttpSession session) {
|
||||
Member member1 = memberService.userLogin(member);
|
||||
Member member2 = memberService.selectByPhoneAndPassword(member);
|
||||
if (member1 != null) {
|
||||
model.addAttribute("member", member1);
|
||||
session.setAttribute("user", member1);
|
||||
return "userMain";
|
||||
}
|
||||
if(member2 != null) {
|
||||
model.addAttribute("member", member2);
|
||||
session.setAttribute("user", member2);
|
||||
return "userMain";
|
||||
}
|
||||
model.addAttribute("msg", "您输入的账号或密码有误,请重新输入!");
|
||||
return "userLogin";
|
||||
}
|
||||
|
||||
//跳转管理员主页
|
||||
@RequestMapping("/toAdminMain")
|
||||
public String toAdminMain(Model model, HttpSession session) {
|
||||
Integer memberTotal = (Integer) session.getAttribute("memberTotal");
|
||||
Integer employeeTotal = (Integer) session.getAttribute("employeeTotal");
|
||||
Integer humanTotal = (Integer) session.getAttribute("humanTotal");
|
||||
Integer equipmentTotal = (Integer) session.getAttribute("equipmentTotal");
|
||||
model.addAttribute("memberTotal", memberTotal);
|
||||
model.addAttribute("employeeTotal", employeeTotal);
|
||||
model.addAttribute("humanTotal", humanTotal);
|
||||
model.addAttribute("equipmentTotal", equipmentTotal);
|
||||
return "adminMain";
|
||||
}
|
||||
|
||||
//跳转用户主页
|
||||
@RequestMapping("/toUserMain")
|
||||
public String toUserMain(Model model, HttpSession session) {
|
||||
Member member = (Member) session.getAttribute("user");
|
||||
model.addAttribute("member", member);
|
||||
return "userMain";
|
||||
}
|
||||
|
||||
//注册成功
|
||||
@RequestMapping("/addUser")
|
||||
public String addUser(Member member) {
|
||||
//用户账号&卡号随机生成
|
||||
Random random = new Random();
|
||||
String account1 = "21";
|
||||
for (int i = 0; i < 5; i++) {
|
||||
account1 += random.nextInt(10);
|
||||
}
|
||||
Integer account = Integer.parseInt(account1);
|
||||
member.setMemberAccount(account);
|
||||
memberService.insertMember(member);
|
||||
return "redirect:toUserLogin";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,99 @@
|
||||
package com.milotnt.controller;
|
||||
|
||||
import com.milotnt.pojo.Member;
|
||||
import com.milotnt.service.MemberService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/member")
|
||||
public class MemberController {
|
||||
|
||||
@Autowired
|
||||
private MemberService memberService;
|
||||
|
||||
//查询会员
|
||||
@RequestMapping("/selMember")
|
||||
public String selectMember(Model model) {
|
||||
List<Member> memberList = memberService.findAll();
|
||||
model.addAttribute("memberList", memberList);
|
||||
return "selectMember";
|
||||
}
|
||||
|
||||
//跳转新增会员页面
|
||||
@RequestMapping("/toAddMember")
|
||||
public String toAddMember() {
|
||||
return "addMember";
|
||||
}
|
||||
|
||||
//新增用户
|
||||
@RequestMapping("/addMember")
|
||||
public String addMember(Member member) {
|
||||
//用户账号&卡号随机生成
|
||||
Random random = new Random();
|
||||
String account1 = "21";
|
||||
for (int i = 0; i < 5; i++) {
|
||||
account1 += random.nextInt(10);
|
||||
}
|
||||
Integer account = Integer.parseInt(account1);
|
||||
member.setMemberAccount(account);
|
||||
|
||||
memberService.insertMember(member);
|
||||
|
||||
return "redirect:selMember";
|
||||
|
||||
}
|
||||
|
||||
//新增用户
|
||||
|
||||
|
||||
//删除会员
|
||||
@RequestMapping("/delMember")
|
||||
public String deleteMember(Integer memberAccount) {
|
||||
memberService.deleteByMemberAccount(memberAccount);
|
||||
return "redirect:selMember";
|
||||
}
|
||||
|
||||
//跳转会员修改页面
|
||||
@RequestMapping("/toUpdateMember")
|
||||
public String toUpdateMember(Integer memberAccount, Model model) {
|
||||
List<Member> memberList = memberService.selectByMemberAccount(memberAccount);
|
||||
model.addAttribute("memberList", memberList);
|
||||
return "updateMember";
|
||||
}
|
||||
|
||||
//修改会员信息
|
||||
@RequestMapping("/updateMember")
|
||||
public String updateMember(Member member) {
|
||||
memberService.updateMemberByMemberAccount(member);
|
||||
return "redirect:selMember";
|
||||
}
|
||||
|
||||
|
||||
//跳转会员卡查询页面
|
||||
@RequestMapping("/toSelByCard")
|
||||
public String toSelectByCardId() {
|
||||
return "selectByMemberAccount";
|
||||
}
|
||||
|
||||
//根据会员卡号查询
|
||||
@RequestMapping("/selByCard")
|
||||
public String selectByCardId(Model model, Integer memberAccount) {
|
||||
List<Member> memberList = memberService.selectByMemberAccount(memberAccount);
|
||||
if (memberList != null) {
|
||||
model.addAttribute("memberList", memberList);
|
||||
} else {
|
||||
String message = "会员卡号不存在!";
|
||||
model.addAttribute("noMessage", message);
|
||||
}
|
||||
return "selectByMemberAccount";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,185 @@
|
||||
package com.milotnt.controller;
|
||||
|
||||
import com.milotnt.pojo.*;
|
||||
import com.milotnt.service.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author
|
||||
* @date 24/11/18
|
||||
*/
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/user")
|
||||
public class UserController {
|
||||
|
||||
@Autowired
|
||||
private ClassTableService classTableService;
|
||||
|
||||
@Autowired
|
||||
private MemberService memberService;
|
||||
|
||||
@Autowired
|
||||
private RecordTableService recordTableService;
|
||||
|
||||
@Autowired
|
||||
private TargetRecordService targetRecordService;
|
||||
|
||||
@Autowired
|
||||
private RealRecordService realRecordService;
|
||||
|
||||
|
||||
//跳转个人信息页面
|
||||
@RequestMapping("/toUserInfo")
|
||||
public String toUserInformation(Model model, HttpSession session) {
|
||||
Member member = (Member) session.getAttribute("user");
|
||||
model.addAttribute("member", member);
|
||||
return "userInformation";
|
||||
}
|
||||
|
||||
//跳转修改个人信息页面
|
||||
@RequestMapping("/toUpdateInfo")
|
||||
public String toUpdateUserInformation(HttpSession session, Model model) {
|
||||
Member member = (Member) session.getAttribute("user");
|
||||
model.addAttribute("member", member);
|
||||
return "updateUserInformation";
|
||||
}
|
||||
|
||||
//修改个人信息
|
||||
@RequestMapping("/updateInfo")
|
||||
public String updateUserInformation(HttpSession session, Member member) {
|
||||
Member member1 = (Member) session.getAttribute("user");
|
||||
member.setMemberAccount(member1.getMemberAccount());
|
||||
memberService.updateMemberByMemberAccount(member);
|
||||
return "userInformation";
|
||||
}
|
||||
|
||||
|
||||
//跳转预约信息
|
||||
@RequestMapping("/toUserBook")
|
||||
public String selectClass(Model model) {
|
||||
List<ClassTable> classList = classTableService.findAll();
|
||||
model.addAttribute("classList", classList);
|
||||
return "userBook";
|
||||
}
|
||||
|
||||
//跳转我的预约记录
|
||||
@RequestMapping("/toUserBookRecord")
|
||||
public String toUserBookRecord(Model model, HttpSession session) {
|
||||
Member member = (Member) session.getAttribute("user");
|
||||
Integer ruser = member.getMemberAccount();
|
||||
List<RecordTable> recordList = recordTableService.findAll(ruser);
|
||||
model.addAttribute("recordList", recordList);
|
||||
return "userBookRecord";
|
||||
}
|
||||
|
||||
//删除预约记录
|
||||
@RequestMapping("delUserRecord")
|
||||
public String delUserRecord(Integer recordId, HttpSession session) {
|
||||
Member member = (Member) session.getAttribute("user");
|
||||
Integer ruser = member.getMemberAccount();
|
||||
recordTableService.deleteRecord(recordId,ruser);
|
||||
return "redirect:toUserBookRecord";
|
||||
}
|
||||
|
||||
//获取时间函数
|
||||
public static String getCurrentDateTime(){
|
||||
// 获取当前日期和时间
|
||||
LocalDateTime currentDateTime = LocalDateTime.now();
|
||||
// 格式化为 "yyyy-MM-dd HH:mm:ss" 字符串格式
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
return currentDateTime.format(formatter);
|
||||
}
|
||||
//新增预期目标
|
||||
@RequestMapping("/addTargetRecord")
|
||||
public String addTargetRecord(String tpName, String tepName, String trLocation, String tTime,Model model, HttpSession session) {
|
||||
Member member = (Member) session.getAttribute("user");
|
||||
Integer tuser = member.getMemberAccount();
|
||||
String tdate = getCurrentDateTime();
|
||||
TargetRecord targetRecord = new TargetRecord(tuser,tpName,tepName,trLocation,tTime,tdate);
|
||||
targetRecordService.insertTargetRecord(targetRecord);
|
||||
List<TargetRecord> TargetRecord = targetRecordService.findLatestTargetRecord(tuser);
|
||||
model.addAttribute("TargetRecord", TargetRecord);
|
||||
model.addAttribute("member", member);
|
||||
return "timer";
|
||||
}
|
||||
|
||||
//新增真实锻炼记录
|
||||
@RequestMapping("/addRealRecord")
|
||||
public String addRealRecord(String rpName, String repName, String rrLocation, String rTime,Model model, HttpSession session) {
|
||||
Member member = (Member) session.getAttribute("user");
|
||||
Integer ruser = member.getMemberAccount();
|
||||
String rdate = getCurrentDateTime();
|
||||
RealRecord realRecord = new RealRecord(ruser,rpName,repName,rrLocation,rTime,rdate);
|
||||
realRecordService.insertRealRecord(realRecord);
|
||||
model.addAttribute("realRecord", realRecord);
|
||||
return "redirect:toEndRecord";
|
||||
}
|
||||
|
||||
//跳转锻炼结束
|
||||
@RequestMapping("/toEndRecord")
|
||||
public String toEndRecord(Model model, HttpSession session) {
|
||||
Member member = (Member) session.getAttribute("user");
|
||||
Integer ruser = member.getMemberAccount();
|
||||
List<TargetRecord> targetRecord = targetRecordService.findLatestTargetRecord(ruser);
|
||||
model.addAttribute("targetRecord", targetRecord);
|
||||
List<RealRecord> realRecord = realRecordService.findLatestRealRecord(ruser);
|
||||
model.addAttribute("realRecord", realRecord);
|
||||
return "endRecord";
|
||||
}
|
||||
|
||||
//跳转我的锻炼记录
|
||||
@RequestMapping("/toUserRealRecord")
|
||||
public String toUserRealRecord(Model model, HttpSession session) {
|
||||
Member member = (Member) session.getAttribute("user");
|
||||
Integer ruser = member.getMemberAccount();
|
||||
List<RealRecord> RealRecord = realRecordService.findAll(ruser);
|
||||
model.addAttribute("RealRecord", RealRecord);
|
||||
return "userClass";
|
||||
}
|
||||
|
||||
//跳转我的预约记录并添加预约记录
|
||||
@RequestMapping("/userBook")
|
||||
public String userBook(Integer recordId,String recordName,String recordBegin,String Location,Model model, HttpSession session) {
|
||||
Member member = (Member) session.getAttribute("user");
|
||||
Integer ruser = member.getMemberAccount();
|
||||
String date = getCurrentDateTime();
|
||||
RecordTable recordTable = new RecordTable(date,ruser,recordId,recordName,recordBegin,Location);
|
||||
recordTableService.insertRecord(recordTable);
|
||||
return "redirect:toUserBookRecord";
|
||||
}
|
||||
|
||||
|
||||
//删除锻炼记录
|
||||
@RequestMapping("delRealRecord")
|
||||
public String deleteRealRecord(String rDate) {
|
||||
realRecordService.deleteRealRecord(rDate);
|
||||
return "redirect:toUserRealRecord";
|
||||
}
|
||||
|
||||
//跳转预约信息页面
|
||||
@RequestMapping("/toApplyClass")
|
||||
public String toUserApplyClass(Model model, HttpSession session) {
|
||||
Member member = (Member) session.getAttribute("user");
|
||||
List<ClassTable> classList = classTableService.findAll();
|
||||
model.addAttribute("member", member);
|
||||
model.addAttribute("classList", classList);
|
||||
return "userApplyClass";
|
||||
}
|
||||
|
||||
//新增预约信息
|
||||
@RequestMapping("/addClass")
|
||||
public String addClass(ClassTable classTable) {
|
||||
classTableService.insertClass(classTable);
|
||||
return "redirect:selClass";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.milotnt.mapper;
|
||||
|
||||
import com.milotnt.pojo.Admin;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
||||
@Mapper
|
||||
public interface AdminMapper {
|
||||
|
||||
Admin selectByAccountAndPassword(Admin admin);
|
||||
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.milotnt.mapper;
|
||||
|
||||
import com.milotnt.pojo.ClassTable;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
|
||||
@Mapper
|
||||
public interface ClassTableMapper {
|
||||
|
||||
//查询所有课程
|
||||
List<ClassTable> findAll();
|
||||
|
||||
//根据id删除课程
|
||||
Boolean deleteClassByClassId(Integer classId);
|
||||
|
||||
//添加课程
|
||||
Boolean insertClass(ClassTable classTable);
|
||||
|
||||
//根据id查询课表
|
||||
ClassTable selectByClassId(Integer classId);
|
||||
|
||||
//根据id删除已预约的课程
|
||||
Boolean deleteOrderByClassId(Integer classId);
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.milotnt.mapper;
|
||||
|
||||
import com.milotnt.pojo.Equipment;
|
||||
import org.apache.ibatis.annotations.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Mapper
|
||||
public interface EquipmentMapper {
|
||||
|
||||
//查询所有器械
|
||||
List<Equipment> findAll();
|
||||
|
||||
//根据id删除器械
|
||||
Boolean deleteByEquipmentId(Integer equipmentId);
|
||||
|
||||
//添加器材
|
||||
Boolean insertEquipment(Equipment equipment);
|
||||
|
||||
//根据id修改器械信息
|
||||
Boolean updateEquipmentByEquipmentId(Equipment equipment);
|
||||
|
||||
//根据id查询器械
|
||||
List<Equipment> selectByEquipmentId(Integer equipmentId);
|
||||
|
||||
//查询器械总数
|
||||
Integer selectTotalCount();
|
||||
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package com.milotnt.mapper;
|
||||
|
||||
import com.milotnt.pojo.Member;
|
||||
import org.apache.ibatis.annotations.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface MemberMapper {
|
||||
|
||||
//查询会员信息
|
||||
List<Member> findAll();
|
||||
|
||||
//新增会员信息
|
||||
Boolean insertMember(Member member);
|
||||
|
||||
//根据会员账号修改会员信息
|
||||
Boolean updateMemberByMemberAccount(Member member);
|
||||
|
||||
//查询会员账号密码
|
||||
Member selectByAccountAndPassword(Member member);
|
||||
|
||||
//根据会员账号删除会员信息
|
||||
Boolean deleteByMemberAccount(Integer memberAccount);
|
||||
|
||||
//查询会员数
|
||||
Integer selectTotalCount();
|
||||
|
||||
//根据会员账号查询会员
|
||||
List<Member> selectByMemberAccount(Integer memberAccount);
|
||||
|
||||
List<Member> selectByMemberPhone(Integer memberPhone);
|
||||
|
||||
Member selectByPhoneAndPassword(Member member);
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.milotnt.mapper;
|
||||
|
||||
import com.milotnt.pojo.RealRecord;
|
||||
import com.milotnt.pojo.TargetRecord;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
|
||||
@Mapper
|
||||
public interface RealRecordMapper {
|
||||
|
||||
//查询所有课程
|
||||
List<RealRecord> findAll(Integer ruser);
|
||||
|
||||
//根据id删除课程
|
||||
Boolean deleteRealRecord(String rDate);
|
||||
|
||||
//添加课程
|
||||
Boolean insertRealRecord(RealRecord realRecord);
|
||||
|
||||
List<RealRecord> selectRealRecord(String rDate);
|
||||
|
||||
List<RealRecord> findLatestRealRecord();
|
||||
|
||||
List<RealRecord> findLatestRealRecord(Integer ruser);
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.milotnt.mapper;
|
||||
|
||||
import com.milotnt.pojo.RecordTable;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
|
||||
@Mapper
|
||||
public interface RecordTableMapper {
|
||||
|
||||
//查询所有课程
|
||||
List<RecordTable> findAll(Integer ruser);
|
||||
|
||||
//根据id删除课程
|
||||
Boolean deleteRecord(Integer recordId, Integer ruser);
|
||||
|
||||
//添加课程
|
||||
Boolean insertRecord(RecordTable recordTable);
|
||||
|
||||
List<RecordTable> selectRecord(Integer recordId);
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.milotnt.mapper;
|
||||
|
||||
import com.milotnt.pojo.RecordTable;
|
||||
import com.milotnt.pojo.TargetRecord;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
|
||||
@Mapper
|
||||
public interface TargetRecordMapper {
|
||||
|
||||
//查询所有课程
|
||||
List<TargetRecord> findAll();
|
||||
|
||||
//根据id删除课程
|
||||
Boolean deleteTargetRecord(String tDate);
|
||||
|
||||
//添加预期目标
|
||||
Boolean insertTargetRecord(TargetRecord targetRecord);
|
||||
|
||||
List<TargetRecord> selectTargetRecord(String tDate);
|
||||
|
||||
List<TargetRecord> findLatestTargetRecord();
|
||||
|
||||
List<TargetRecord> findLatestTargetRecord(Integer ruser);
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package com.milotnt.pojo;
|
||||
|
||||
|
||||
public class Admin {
|
||||
|
||||
private Integer adminAccount;
|
||||
private String adminPassword;
|
||||
|
||||
public Integer getAdminAccount() {
|
||||
return adminAccount;
|
||||
}
|
||||
|
||||
public void setAdminAccount(Integer adminAccount) {
|
||||
this.adminAccount = adminAccount;
|
||||
}
|
||||
|
||||
public String getAdminPassword() {
|
||||
return adminPassword;
|
||||
}
|
||||
|
||||
public void setAdminPassword(String adminPassword) {
|
||||
this.adminPassword = adminPassword;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Admin{" +
|
||||
"adminAccount=" + adminAccount +
|
||||
", adminPassword='" + adminPassword + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package com.milotnt.pojo;
|
||||
|
||||
import org.springframework.data.relational.core.sql.In;
|
||||
|
||||
|
||||
public class ClassTable {
|
||||
private Integer cid;
|
||||
private Integer classId;
|
||||
private String className;
|
||||
private String classBegin;
|
||||
private String coach;
|
||||
|
||||
public Integer getCid() {return cid;}
|
||||
|
||||
public void setCid(Integer cid) {this.cid = cid;}
|
||||
|
||||
public Integer getClassId() {
|
||||
return classId;
|
||||
}
|
||||
|
||||
public void setClassId(Integer classId) {
|
||||
this.classId = classId;
|
||||
}
|
||||
|
||||
public String getClassName() {
|
||||
return className;
|
||||
}
|
||||
|
||||
public void setClassName(String className) {
|
||||
this.className = className;
|
||||
}
|
||||
|
||||
public String getClassBegin() {
|
||||
return classBegin;
|
||||
}
|
||||
|
||||
public void setClassBegin(String classBegin) {
|
||||
this.classBegin = classBegin;
|
||||
}
|
||||
|
||||
public String getCoach() {
|
||||
return coach;
|
||||
}
|
||||
|
||||
public void setCoach(String coach) {
|
||||
this.coach = coach;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ClassTable{" +
|
||||
"cid=" + cid +
|
||||
"classId=" + classId +
|
||||
", className='" + className + '\'' +
|
||||
", classBegin='" + classBegin + '\'' +
|
||||
", coach='" + coach + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,76 @@
|
||||
package com.milotnt.pojo;
|
||||
|
||||
/**
|
||||
* @author
|
||||
* @date
|
||||
*/
|
||||
public class Equipment {
|
||||
|
||||
private Integer equipmentId;
|
||||
private String equipmentName;
|
||||
private String equipmentLocation;
|
||||
private String equipmentStatus;
|
||||
private String equipmentMessage;
|
||||
|
||||
public Equipment() {
|
||||
}
|
||||
|
||||
public Equipment(Integer equipmentId, String equipmentName, String equipmentLocation, String equipmentStatus, String equipmentMessage) {
|
||||
this.equipmentId = equipmentId;
|
||||
this.equipmentName = equipmentName;
|
||||
this.equipmentLocation = equipmentLocation;
|
||||
this.equipmentStatus = equipmentStatus;
|
||||
this.equipmentMessage = equipmentMessage;
|
||||
}
|
||||
|
||||
public Integer getEquipmentId() {
|
||||
return equipmentId;
|
||||
}
|
||||
|
||||
public void setEquipmentId(Integer equipmentId) {
|
||||
this.equipmentId = equipmentId;
|
||||
}
|
||||
|
||||
public String getEquipmentName() {
|
||||
return equipmentName;
|
||||
}
|
||||
|
||||
public void setEquipmentName(String equipmentName) {
|
||||
this.equipmentName = equipmentName;
|
||||
}
|
||||
|
||||
public String getEquipmentLocation() {
|
||||
return equipmentLocation;
|
||||
}
|
||||
|
||||
public void setEquipmentLocation(String equipmentLocation) {
|
||||
this.equipmentLocation = equipmentLocation;
|
||||
}
|
||||
|
||||
public String getEquipmentStatus() {
|
||||
return equipmentStatus;
|
||||
}
|
||||
|
||||
public void setEquipmentStatus(String equipmentStatus) {
|
||||
this.equipmentStatus = equipmentStatus;
|
||||
}
|
||||
|
||||
public String getEquipmentMessage() {
|
||||
return equipmentMessage;
|
||||
}
|
||||
|
||||
public void setEquipmentMessage(String equipmentMessage) {
|
||||
this.equipmentMessage = equipmentMessage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Equipment{" +
|
||||
"equipmentId=" + equipmentId +
|
||||
", equipmentName='" + equipmentName + '\'' +
|
||||
", equipmentLocation='" + equipmentLocation + '\'' +
|
||||
", equipmentStatus='" + equipmentStatus + '\'' +
|
||||
", equipmentMessage='" + equipmentMessage + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,125 @@
|
||||
package com.milotnt.pojo;
|
||||
|
||||
/**
|
||||
* @author
|
||||
* @date
|
||||
*/
|
||||
public class Member {
|
||||
|
||||
private Integer memberAccount;
|
||||
private String memberPassword;
|
||||
private String memberName;
|
||||
private String memberGender;
|
||||
private Integer memberAge;
|
||||
private Integer memberHeight;
|
||||
private Integer memberWeight;
|
||||
private Long memberPhone;
|
||||
// private String cardTime;
|
||||
// private Integer cardClass;
|
||||
// private Integer cardNextClass;
|
||||
|
||||
public Integer getMemberAccount() {
|
||||
return memberAccount;
|
||||
}
|
||||
|
||||
public void setMemberAccount(Integer memberAccount) {
|
||||
this.memberAccount = memberAccount;
|
||||
}
|
||||
|
||||
public String getMemberPassword() {
|
||||
return memberPassword;
|
||||
}
|
||||
|
||||
public void setMemberPassword(String memberPassword) {
|
||||
this.memberPassword = memberPassword;
|
||||
}
|
||||
|
||||
public String getMemberName() {
|
||||
return memberName;
|
||||
}
|
||||
|
||||
public void setMemberName(String memberName) {
|
||||
this.memberName = memberName;
|
||||
}
|
||||
|
||||
public String getMemberGender() {
|
||||
return memberGender;
|
||||
}
|
||||
|
||||
public void setMemberGender(String memberGender) {
|
||||
this.memberGender = memberGender;
|
||||
}
|
||||
|
||||
public Integer getMemberAge() {
|
||||
return memberAge;
|
||||
}
|
||||
|
||||
public void setMemberAge(Integer memberAge) {
|
||||
this.memberAge = memberAge;
|
||||
}
|
||||
|
||||
public Integer getMemberHeight() {
|
||||
return memberHeight;
|
||||
}
|
||||
|
||||
public void setMemberHeight(Integer memberHeight) {
|
||||
this.memberHeight = memberHeight;
|
||||
}
|
||||
|
||||
public Integer getMemberWeight() {
|
||||
return memberWeight;
|
||||
}
|
||||
|
||||
public void setMemberWeight(Integer memberWeight) {
|
||||
this.memberWeight = memberWeight;
|
||||
}
|
||||
|
||||
public Long getMemberPhone() {
|
||||
return memberPhone;
|
||||
}
|
||||
|
||||
public void setMemberPhone(Long memberPhone) {
|
||||
this.memberPhone = memberPhone;
|
||||
}
|
||||
//
|
||||
// public String getCardTime() {
|
||||
// return cardTime;
|
||||
// }
|
||||
//
|
||||
// public void setCardTime(String cardTime) {
|
||||
// this.cardTime = cardTime;
|
||||
// }
|
||||
//
|
||||
// public Integer getCardClass() {
|
||||
// return cardClass;
|
||||
// }
|
||||
//
|
||||
// public void setCardClass(Integer cardClass) {
|
||||
// this.cardClass = cardClass;
|
||||
// }
|
||||
//
|
||||
// public Integer getCardNextClass() {
|
||||
// return cardNextClass;
|
||||
// }
|
||||
//
|
||||
// public void setCardNextClass(Integer cardNextClass) {
|
||||
// this.cardNextClass = cardNextClass;
|
||||
// }
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Member{" +
|
||||
", memberAccount=" + memberAccount +
|
||||
", memberPassword='" + memberPassword + '\'' +
|
||||
", memberName='" + memberName + '\'' +
|
||||
", memberGender='" + memberGender + '\'' +
|
||||
", memberAge=" + memberAge +
|
||||
", memberHeight=" + memberHeight +
|
||||
", memberWeight=" + memberWeight +
|
||||
", memberPhone=" + memberPhone +
|
||||
// ", cardTime='" + cardTime + '\'' +
|
||||
// ", cardClass=" + cardClass +
|
||||
// ", cardNextClass=" + cardNextClass +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,70 @@
|
||||
package com.milotnt.pojo;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
public class RealRecord {
|
||||
private Integer ruser;
|
||||
private String rpName;
|
||||
private String repName;
|
||||
private String rrLocation;
|
||||
private String rTime;
|
||||
private String rDate;
|
||||
|
||||
public RealRecord() {}
|
||||
public RealRecord(Integer ruser,String rpName,String repName, String rrLocation, String rTime, String rDate) {
|
||||
this.ruser = ruser;
|
||||
this.rpName = rpName;
|
||||
this.repName = repName;
|
||||
this.rrLocation = rrLocation;
|
||||
this.rTime = rTime;
|
||||
this.rDate = rDate;
|
||||
}
|
||||
|
||||
public Integer getRuser() { return ruser; }
|
||||
|
||||
public void setRuser(Integer ruser) { this.ruser = ruser; }
|
||||
|
||||
public String getRpName() {return rpName;}
|
||||
|
||||
public void setTpName(String rpName) {
|
||||
this.rpName = rpName;
|
||||
}
|
||||
|
||||
public String getRepName() {return repName;}
|
||||
|
||||
public void setRepName(String repName){
|
||||
this.repName = repName;
|
||||
}
|
||||
|
||||
public String getRrLocation(){return rrLocation;}
|
||||
|
||||
public void setRrLocation(String rrLocation){
|
||||
this.rrLocation = rrLocation;
|
||||
}
|
||||
|
||||
public String getRTime(){return rTime;}
|
||||
|
||||
public void setRTime(String rTime){
|
||||
this.rTime = rTime;
|
||||
}
|
||||
|
||||
public String getRDate(){return rDate;}
|
||||
|
||||
public void settDate(String rDate){
|
||||
this.rDate = rDate;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RealRecord{" +
|
||||
"rpName=" + rpName +
|
||||
", repName=" + repName +
|
||||
", rrLocation='" + rrLocation + '\'' +
|
||||
", rTime='" + rTime + '\'' +
|
||||
", rDate='" + rDate + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
package com.milotnt.pojo;
|
||||
|
||||
import org.springframework.data.relational.core.sql.In;
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
public class RecordTable {
|
||||
private String date;
|
||||
private Integer ruser;
|
||||
private Integer recordId;
|
||||
private String recordName;
|
||||
private String recordBegin;
|
||||
private String Location;
|
||||
|
||||
public RecordTable(){}
|
||||
public RecordTable(String date,Integer ruser,Integer recordId, String recordName, String recordBegin, String location) {
|
||||
this.ruser = ruser;
|
||||
this.date = date;
|
||||
this.recordId =recordId;
|
||||
this.recordName = recordName;
|
||||
this.recordBegin = recordBegin;
|
||||
this.Location = location;
|
||||
}
|
||||
|
||||
public String getDate() {return date;}
|
||||
|
||||
public void setDate(String date) { this.date = date; }
|
||||
|
||||
public Integer getRuser() {return ruser;}
|
||||
|
||||
public void setRuser(Integer ruser) {this.ruser = ruser;}
|
||||
|
||||
public Integer getRecordId() {
|
||||
return recordId;
|
||||
}
|
||||
|
||||
public void setRecordId(Integer recordId) {
|
||||
this.recordId = recordId;
|
||||
}
|
||||
|
||||
public String getRecordName() {
|
||||
return recordName;
|
||||
}
|
||||
|
||||
public void setRecordName(String recordName) {
|
||||
this.recordName = recordName;
|
||||
}
|
||||
|
||||
public String getRecordBegin() {
|
||||
return recordBegin;
|
||||
}
|
||||
|
||||
public void setRecordBegin(String recordBegin) {
|
||||
this.recordBegin = recordBegin;
|
||||
}
|
||||
|
||||
public String getLocation() {return Location;}
|
||||
|
||||
public void setLocation(String Location) {this.Location = Location;}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RecordTable{" +
|
||||
"date=" + date +
|
||||
", ruser=" + ruser +
|
||||
" recordId=" + recordId +
|
||||
", recordName='" + recordName + '\'' +
|
||||
", recordBegin='" + recordBegin + '\'' +
|
||||
", Location='" + Location + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
package com.milotnt.pojo;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
public class TargetRecord {
|
||||
private Integer tuser ;
|
||||
private String tpName;
|
||||
private String tepName;
|
||||
private String trLocation;
|
||||
private String tTime;
|
||||
private String tDate;
|
||||
|
||||
public TargetRecord() {}
|
||||
public TargetRecord(Integer tuser,String tpName,String tepName, String trLocation, String tTime, String tDate) {
|
||||
this.tuser = tuser;
|
||||
this.tpName = tpName;
|
||||
this.tepName =tepName;
|
||||
this.trLocation = trLocation;
|
||||
this.tTime = tTime;
|
||||
this.tDate = tDate;
|
||||
}
|
||||
|
||||
public Integer getTuser() {
|
||||
return tuser;
|
||||
}
|
||||
|
||||
public void setTuser(Integer tuser) {
|
||||
this.tuser = tuser;
|
||||
}
|
||||
|
||||
public String getTpName() {return tpName;}
|
||||
|
||||
public void setTpName(String tpName) {
|
||||
this.tpName = tpName;
|
||||
}
|
||||
|
||||
public String getTepName() {return tepName;}
|
||||
|
||||
public void setTepName(String tepName){
|
||||
this.tepName = tepName;
|
||||
}
|
||||
|
||||
public String getTrLocation(){return trLocation;}
|
||||
|
||||
public void setTrLocation(String trLocation){
|
||||
this.trLocation = trLocation;
|
||||
}
|
||||
|
||||
public String getTTime(){return tTime;}
|
||||
|
||||
public void settTime(String tTime){
|
||||
this.tTime = tTime;
|
||||
}
|
||||
|
||||
public String getTDate(){return tDate;}
|
||||
|
||||
public void settDate(String tDate){
|
||||
this.tDate = tDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TargetRecord{" +
|
||||
"tuser=" + tuser +
|
||||
"tpName=" + tpName +
|
||||
", tepName=" + tepName +
|
||||
", trLocation='" + trLocation + '\'' +
|
||||
", tTime='" + tTime + '\'' +
|
||||
", tDate='" + tDate + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package com.milotnt.service;
|
||||
|
||||
import com.milotnt.pojo.Admin;
|
||||
|
||||
public interface AdminService {
|
||||
|
||||
//管理员登录
|
||||
Admin adminLogin(Admin admin);
|
||||
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.milotnt.service;
|
||||
|
||||
import com.milotnt.pojo.ClassTable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ClassTableService {
|
||||
|
||||
//查询所有课程
|
||||
List<ClassTable> findAll();
|
||||
|
||||
//根据id删除课程
|
||||
Boolean deleteClassByClassId(Integer classId);
|
||||
|
||||
//添加课程
|
||||
Boolean insertClass(ClassTable classTable);
|
||||
|
||||
//根据id查询课表
|
||||
ClassTable selectByClassId(Integer classId);
|
||||
|
||||
//根据id删除已预约的课程
|
||||
Boolean deleteOrderByClassId(Integer classId);
|
||||
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.milotnt.service;
|
||||
|
||||
import com.milotnt.pojo.Equipment;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface EquipmentService {
|
||||
|
||||
//查询所有器械
|
||||
List<Equipment> findAll();
|
||||
|
||||
//根据id删除器械
|
||||
Boolean deleteByEquipmentId(Integer equipmentId);
|
||||
|
||||
//添加器材
|
||||
Boolean insertEquipment(Equipment equipment);
|
||||
|
||||
//根据id修改器械信息
|
||||
Boolean updateEquipmentByEquipmentId(Equipment equipment);
|
||||
|
||||
//根据id查询器械
|
||||
List<Equipment> selectByEquipmentId(Integer equipmentId);
|
||||
|
||||
//查询器械总数
|
||||
Integer selectTotalCount();
|
||||
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package com.milotnt.service;
|
||||
|
||||
import com.milotnt.pojo.Member;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface MemberService {
|
||||
|
||||
//查询会员信息
|
||||
List<Member> findAll();
|
||||
|
||||
//新增会员信息
|
||||
Boolean insertMember(Member member);
|
||||
|
||||
//根据会员账号修改会员信息
|
||||
Boolean updateMemberByMemberAccount(Member member);
|
||||
|
||||
//查询会员账号密码(登录)
|
||||
Member userLogin(Member member);
|
||||
|
||||
Member selectByPhoneAndPassword(Member member);
|
||||
|
||||
//根据会员账号删除会员信息
|
||||
Boolean deleteByMemberAccount(Integer memberAccount);
|
||||
|
||||
//查询会员数
|
||||
Integer selectTotalCount();
|
||||
|
||||
//根据会员账号查询会员
|
||||
List<Member> selectByMemberAccount(Integer memberAccount);
|
||||
|
||||
List<Member> selectByMemberPhone(Integer memberPhone);
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.milotnt.service;
|
||||
|
||||
import com.milotnt.pojo.RealRecord;
|
||||
import com.milotnt.pojo.TargetRecord;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
|
||||
public interface RealRecordService {
|
||||
|
||||
//查询所有课程
|
||||
List<RealRecord> findAll(Integer ruser);
|
||||
|
||||
List<RealRecord> selectRealRecord(String rDate);
|
||||
|
||||
//根据id删除课程
|
||||
Boolean deleteRealRecord(String rDate);
|
||||
|
||||
Boolean insertRealRecord(RealRecord realRecord);
|
||||
|
||||
List<RealRecord> findLatestRealRecord(Integer ruser);
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.milotnt.service;
|
||||
|
||||
import com.milotnt.pojo.RecordTable;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
|
||||
public interface RecordTableService {
|
||||
|
||||
//查询所有课程
|
||||
List<RecordTable> findAll(Integer ruser);
|
||||
|
||||
List<RecordTable> selectRecord(Integer recordId);
|
||||
|
||||
//根据id删除课程
|
||||
Boolean deleteRecord(Integer recordId, Integer ruser);
|
||||
|
||||
//添加课程
|
||||
Boolean insertRecord(RecordTable recordTable);
|
||||
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.milotnt.service;
|
||||
|
||||
import com.milotnt.pojo.RecordTable;
|
||||
import com.milotnt.pojo.TargetRecord;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
|
||||
public interface TargetRecordService {
|
||||
|
||||
//查询所有课程
|
||||
List<TargetRecord> findAll();
|
||||
|
||||
List<TargetRecord> selectTargetRecord(String tDate);
|
||||
|
||||
//根据id删除课程
|
||||
Boolean deleteTargetRecord(String tDate);
|
||||
|
||||
Boolean insertTargetRecord(TargetRecord targetRecord);
|
||||
|
||||
List<TargetRecord> findLatestTargetRecord(Integer ruser);
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package com.milotnt.service.impl;
|
||||
|
||||
import com.milotnt.mapper.AdminMapper;
|
||||
import com.milotnt.pojo.Admin;
|
||||
import com.milotnt.service.AdminService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class AdminServiceImpl implements AdminService {
|
||||
|
||||
@Autowired
|
||||
private AdminMapper adminMapper;
|
||||
|
||||
@Override
|
||||
public Admin adminLogin(Admin admin) {
|
||||
return adminMapper.selectByAccountAndPassword(admin);
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.milotnt.service.impl;
|
||||
|
||||
import com.milotnt.mapper.ClassTableMapper;
|
||||
import com.milotnt.pojo.ClassTable;
|
||||
import com.milotnt.service.ClassTableService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class ClassTableServiceImpl implements ClassTableService {
|
||||
|
||||
@Autowired
|
||||
private ClassTableMapper classTableMapper;
|
||||
|
||||
@Override
|
||||
public List<ClassTable> findAll() {
|
||||
return classTableMapper.findAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean deleteClassByClassId(Integer classId) {
|
||||
return classTableMapper.deleteClassByClassId(classId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean insertClass(ClassTable classTable) {
|
||||
return classTableMapper.insertClass(classTable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassTable selectByClassId(Integer classId) {
|
||||
return classTableMapper.selectByClassId(classId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean deleteOrderByClassId(Integer classId) {
|
||||
return classTableMapper.deleteOrderByClassId(classId);
|
||||
}
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package com.milotnt.service.impl;
|
||||
|
||||
import com.milotnt.mapper.EquipmentMapper;
|
||||
import com.milotnt.pojo.Equipment;
|
||||
import com.milotnt.service.EquipmentService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class EquipmentServiceImpl implements EquipmentService {
|
||||
|
||||
@Autowired
|
||||
private EquipmentMapper equipmentMapper;
|
||||
|
||||
@Override
|
||||
public List<Equipment> findAll() {
|
||||
return equipmentMapper.findAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean deleteByEquipmentId(Integer equipmentId) {
|
||||
return equipmentMapper.deleteByEquipmentId(equipmentId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean insertEquipment(Equipment equipment) {
|
||||
return equipmentMapper.insertEquipment(equipment);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateEquipmentByEquipmentId(Equipment equipment) {
|
||||
return equipmentMapper.updateEquipmentByEquipmentId(equipment);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Equipment> selectByEquipmentId(Integer equipmentId) {
|
||||
return equipmentMapper.selectByEquipmentId(equipmentId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer selectTotalCount() {
|
||||
return equipmentMapper.selectTotalCount();
|
||||
}
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package com.milotnt.service.impl;
|
||||
|
||||
import com.milotnt.mapper.MemberMapper;
|
||||
import com.milotnt.pojo.Member;
|
||||
import com.milotnt.service.MemberService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class MemberServiceImpl implements MemberService {
|
||||
|
||||
@Autowired
|
||||
private MemberMapper memberMapper;
|
||||
|
||||
@Override
|
||||
public List<Member> findAll() {
|
||||
return memberMapper.findAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean insertMember(Member member) {
|
||||
return memberMapper.insertMember(member);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateMemberByMemberAccount(Member member) {
|
||||
return memberMapper.updateMemberByMemberAccount(member);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Member userLogin(Member member) {
|
||||
return memberMapper.selectByAccountAndPassword(member);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Member selectByPhoneAndPassword(Member member) {return memberMapper.selectByPhoneAndPassword(member);}
|
||||
|
||||
@Override
|
||||
public Boolean deleteByMemberAccount(Integer memberAccount) {
|
||||
return memberMapper.deleteByMemberAccount(memberAccount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer selectTotalCount() {
|
||||
return memberMapper.selectTotalCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Member> selectByMemberAccount(Integer memberAccount) {
|
||||
return memberMapper.selectByMemberAccount(memberAccount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Member> selectByMemberPhone(Integer memberPhone) {
|
||||
return memberMapper.selectByMemberPhone(memberPhone);
|
||||
}
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package com.milotnt.service.impl;
|
||||
import com.milotnt.mapper.RealRecordMapper;
|
||||
import com.milotnt.pojo.RealRecord;
|
||||
import com.milotnt.pojo.TargetRecord;
|
||||
import com.milotnt.service.RealRecordService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
|
||||
@Service
|
||||
public class RealRecordServiceImpl implements RealRecordService {
|
||||
|
||||
@Autowired
|
||||
private RealRecordMapper realRecordMapper;
|
||||
|
||||
@Override
|
||||
public List<RealRecord> findAll(Integer ruser) {
|
||||
return realRecordMapper.findAll(ruser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RealRecord> selectRealRecord(String rDate) {
|
||||
return realRecordMapper.selectRealRecord(rDate);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Boolean deleteRealRecord(String rDate) {
|
||||
return realRecordMapper.deleteRealRecord(rDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean insertRealRecord(RealRecord realRecord) {
|
||||
return realRecordMapper.insertRealRecord(realRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RealRecord> findLatestRealRecord(Integer ruser) {
|
||||
return realRecordMapper.findLatestRealRecord(ruser);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package com.milotnt.service.impl;
|
||||
|
||||
import com.milotnt.mapper.RecordTableMapper;
|
||||
import com.milotnt.pojo.RecordTable;
|
||||
import com.milotnt.service.RecordTableService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
@Service
|
||||
public class RecordTableServiceImpl implements RecordTableService {
|
||||
|
||||
@Autowired
|
||||
private RecordTableMapper recordTableMapper;
|
||||
|
||||
@Override
|
||||
public List<RecordTable> findAll(Integer ruser) {
|
||||
return recordTableMapper.findAll(ruser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RecordTable> selectRecord(Integer recordId) {
|
||||
return recordTableMapper.selectRecord(recordId);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Boolean deleteRecord(Integer recordId, Integer ruser) {
|
||||
return recordTableMapper.deleteRecord(recordId,ruser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean insertRecord(RecordTable recordTable) {
|
||||
return recordTableMapper.insertRecord(recordTable);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.milotnt.service.impl;
|
||||
|
||||
import com.milotnt.mapper.TargetRecordMapper;
|
||||
import com.milotnt.pojo.RecordTable;
|
||||
import com.milotnt.pojo.TargetRecord;
|
||||
import com.milotnt.service.TargetRecordService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lhl
|
||||
* @date 24/11
|
||||
*/
|
||||
|
||||
@Service
|
||||
public class TargetRecordServiceImpl implements TargetRecordService {
|
||||
|
||||
@Autowired
|
||||
private TargetRecordMapper targetRecordMapper;
|
||||
|
||||
@Override
|
||||
public List<TargetRecord> findAll() {
|
||||
return targetRecordMapper.findAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TargetRecord> selectTargetRecord(String tDate) {
|
||||
return targetRecordMapper.selectTargetRecord(tDate);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Boolean deleteTargetRecord(String tDate) {
|
||||
return targetRecordMapper.deleteTargetRecord(tDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean insertTargetRecord(TargetRecord targetRecord) {
|
||||
return targetRecordMapper.insertTargetRecord(targetRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TargetRecord> findLatestTargetRecord(Integer ruser) {
|
||||
return targetRecordMapper.findLatestTargetRecord(ruser);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
spring:
|
||||
datasource:
|
||||
url: jdbc:mysql://localhost:3306/gym_management_system
|
||||
username: root
|
||||
password: 915919
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
|
||||
thymeleaf:
|
||||
cache: false
|
||||
|
||||
|
||||
server:
|
||||
port: 8888
|
||||
|
||||
|
||||
mybatis:
|
||||
# config-location: classpath:mybatis/mybatis-config.xml
|
||||
mapper-locations: classpath:mybatis/mapper/*.xml
|
||||
configuration:
|
||||
map-underscore-to-camel-case: true
|
||||
type-aliases-package: com.milotnt.pojo
|
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.milotnt.mapper.AdminMapper">
|
||||
|
||||
<select id="selectByAccountAndPassword" resultType="admin">
|
||||
SELECT *
|
||||
FROM admin
|
||||
WHERE admin_account = #{adminAccount}
|
||||
AND admin_password = #{adminPassword}
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.milotnt.mapper.ClassTableMapper">
|
||||
|
||||
<select id="findAll" resultType="classTable">
|
||||
SELECT *
|
||||
FROM class_table
|
||||
</select>
|
||||
|
||||
<delete id="deleteClassByClassId" parameterType="java.lang.Integer">
|
||||
DELETE
|
||||
FROM class_table
|
||||
WHERE class_id = #{classId}
|
||||
</delete>
|
||||
|
||||
<insert id="insertClass" parameterType="classTable">
|
||||
INSERT INTO class_table(c_id,class_id, class_name, class_begin, coach)
|
||||
VALUES (#{cid},#{classId}, #{className}, #{classBegin}, #{coach})
|
||||
</insert>
|
||||
|
||||
<select id="selectByClassId" parameterType="java.lang.Integer" resultType="classTable">
|
||||
SELECT *
|
||||
FROM class_table
|
||||
WHERE class_id = #{classId}
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.milotnt.mapper.EquipmentMapper">
|
||||
|
||||
<select id="findAll" resultType="equipment">
|
||||
SELECt *
|
||||
FROM equipment
|
||||
</select>
|
||||
|
||||
<delete id="deleteByEquipmentId" parameterType="java.lang.Integer">
|
||||
DELETE
|
||||
FROM equipment
|
||||
WHERE equipment_id = #{equipmentId}
|
||||
</delete>
|
||||
|
||||
<insert id="insertEquipment" parameterType="equipment">
|
||||
INSERT INTO equipment (equipment_id, equipment_name, equipment_location, equipment_status, equipment_message)
|
||||
VALUES (#{equipmentId}, #{equipmentName}, #{equipmentLocation}, #{equipmentStatus}, #{equipmentMessage})
|
||||
</insert>
|
||||
|
||||
<update id="updateEquipmentByEquipmentId" parameterType="equipment">
|
||||
UPDATE equipment
|
||||
SET equipment_id = #{equipmentId},
|
||||
equipment_name = #{equipmentName},
|
||||
equipment_location = #{equipmentLocation},
|
||||
equipment_status = #{equipmentStatus},
|
||||
equipment_message = #{equipmentMessage}
|
||||
WHERE equipment_id = #{equipmentId}
|
||||
</update>
|
||||
|
||||
<select id="selectByEquipmentId" parameterType="java.lang.Integer" resultType="equipment">
|
||||
SELECT *
|
||||
FROM equipment
|
||||
WHERE equipment_id = #{equipmentId}
|
||||
</select>
|
||||
|
||||
<select id="selectTotalCount" resultType="java.lang.Integer">
|
||||
SELECT count(*)
|
||||
FROM equipment
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.milotnt.mapper.MemberMapper">
|
||||
|
||||
<select id="findAll" resultType="member">
|
||||
SELECT *
|
||||
FROM member
|
||||
</select>
|
||||
|
||||
<insert id="insertMember" parameterType="member">
|
||||
INSERT INTO member (member_account,member_password, member_name, member_gender, member_age, member_height,
|
||||
member_weight, member_phone)
|
||||
VALUES (#{memberAccount}, #{memberPassword}, #{memberName}, #{memberGender}, #{memberAge}, #{memberHeight},
|
||||
#{memberWeight}, #{memberPhone})
|
||||
</insert>
|
||||
|
||||
<update id="updateMemberByMemberAccount" parameterType="member">
|
||||
UPDATE member
|
||||
SET
|
||||
member_account = #{memberAccount},
|
||||
member_password = #{memberPassword},
|
||||
member_name = #{memberName},
|
||||
member_gender = #{memberGender},
|
||||
member_age = #{memberAge},
|
||||
member_height = #{memberHeight},
|
||||
member_weight = #{memberWeight},
|
||||
member_phone = #{memberPhone}
|
||||
WHERE member_account = #{memberAccount}
|
||||
</update>
|
||||
|
||||
<select id="selectByAccountAndPassword" resultType="member">
|
||||
SELECT *
|
||||
FROM member
|
||||
WHERE member_account = #{memberAccount}
|
||||
AND member_password = #{memberPassword}
|
||||
</select>
|
||||
|
||||
<select id="selectByPhoneAndPassword" resultType="member">
|
||||
SELECT *
|
||||
FROM member
|
||||
WHERE member_phone = #{memberPhone}
|
||||
AND member_password = #{memberPassword}
|
||||
</select>
|
||||
|
||||
<delete id="deleteByMemberAccount" parameterType="java.lang.Integer">
|
||||
DELETE
|
||||
FROM member
|
||||
WHERE member_account = #{memberAccount}
|
||||
</delete>
|
||||
|
||||
<select id="selectTotalCount" resultType="java.lang.Integer">
|
||||
SELECT count(*)
|
||||
FROM member
|
||||
</select>
|
||||
|
||||
<select id="selectByMemberAccount" parameterType="java.lang.Integer" resultType="member">
|
||||
SELECT *
|
||||
FROM member
|
||||
WHERE member_account = #{memberAccount}
|
||||
</select>
|
||||
|
||||
<select id="selectByMemberPhone" parameterType="java.lang.Integer" resultType="member">
|
||||
SELECT *
|
||||
FROM member
|
||||
WHERE member_phone = #{memberPhone}
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.milotnt.mapper.RealRecordMapper">
|
||||
|
||||
<select id="findAll" resultType="RealRecord">
|
||||
SELECT *
|
||||
FROM real_record
|
||||
where ruser = #{ruser}
|
||||
</select>
|
||||
|
||||
<select id="selectRealRecord" resultType="RealRecord">
|
||||
SELECT *
|
||||
FROM real_record
|
||||
WHERE rdate= #{rDate} and ruser = {ruser}
|
||||
</select>
|
||||
|
||||
<delete id="deleteRealRecord" parameterType="RealRecord">
|
||||
DELETE
|
||||
FROM real_record
|
||||
WHERE rdate = #{rDate} and ruser = {ruser}
|
||||
</delete>
|
||||
|
||||
|
||||
<insert id="insertRealRecord" parameterType="RealRecord">
|
||||
INSERT INTO real_record(ruser,rp_name,rep_name, rr_location, rtime, rdate)
|
||||
VALUES (#{ruser},#{rpName},#{repName}, #{rrLocation}, #{rTime}, #{rDate})
|
||||
</insert>
|
||||
|
||||
<select id="findLatestRealRecord" resultType="RealRecord">
|
||||
SELECT *
|
||||
FROM real_record
|
||||
where ruser = #{ruser}
|
||||
ORDER BY rdate DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
</mapper>
|
@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.milotnt.mapper.RecordTableMapper">
|
||||
|
||||
<select id="findAll" resultType="RecordTable">
|
||||
SELECT *
|
||||
FROM record_table
|
||||
where ruser = #{ruser}
|
||||
</select>
|
||||
|
||||
<select id="selectRecord" resultType="RecordTable">
|
||||
SELECT *
|
||||
FROM record_table
|
||||
WHERE record_id= #{recordId} and ruser = #{ruser}
|
||||
</select>
|
||||
|
||||
<delete id="deleteRecord" parameterType="RecordTable">
|
||||
DELETE
|
||||
FROM record_table
|
||||
WHERE record_id = #{recordId} and ruser = #{ruser}
|
||||
</delete>
|
||||
|
||||
|
||||
<insert id="insertRecord" parameterType="RecordTable">
|
||||
INSERT INTO record_table(date,ruser,record_id, record_name, record_begin, location)
|
||||
VALUES (#{date},#{ruser},#{recordId}, #{recordName}, #{recordBegin}, #{Location})
|
||||
</insert>
|
||||
|
||||
|
||||
</mapper>
|
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.milotnt.mapper.TargetRecordMapper">
|
||||
|
||||
<select id="findAll" resultType="TargetRecord">
|
||||
SELECT *
|
||||
FROM target_record
|
||||
where tuser=#{tuser}
|
||||
</select>
|
||||
|
||||
<select id="selectTargetRecord" resultType="TargetRecord">
|
||||
SELECT *
|
||||
FROM target_record
|
||||
WHERE tdate= #{tDate} and tuser=#{tuser}
|
||||
</select>
|
||||
|
||||
<delete id="deleteTargetRecord" parameterType="TargetRecord">
|
||||
DELETE
|
||||
FROM target_record
|
||||
WHERE tdate = #{tDate} and tuser=#{tuser}
|
||||
</delete>
|
||||
|
||||
|
||||
<insert id="insertTargetRecord" parameterType="TargetRecord">
|
||||
INSERT INTO target_record(tuser,tp_name,tep_name, tr_location, ttime, tdate)
|
||||
VALUES (#{tuser},#{tpName},#{tepName}, #{trLocation}, #{tTime}, #{tDate})
|
||||
</insert>
|
||||
|
||||
<select id="findLatestTargetRecord" resultType="TargetRecord">
|
||||
SELECT *
|
||||
FROM target_record
|
||||
where tuser = #{tuser}
|
||||
ORDER BY tdate DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE configuration
|
||||
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-config.dtd">
|
||||
<!--测试时使用-->
|
||||
<!--
|
||||
<configuration>
|
||||
<typeAliases>
|
||||
<package name="com.milotnt.pojo"/>
|
||||
</typeAliases>
|
||||
|
||||
<environments default="development">
|
||||
<environment id="development">
|
||||
<transactionManager type="JDBC"/>
|
||||
<dataSource type="POOLED">
|
||||
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
|
||||
<property name="url" value="jdbc:mysql://localhost:3306/gym_management_system"/>
|
||||
<property name="username" value="root"/>
|
||||
<property name="password" value="12345678"/>
|
||||
</dataSource>
|
||||
</environment>
|
||||
</environments>
|
||||
|
||||
<mappers>
|
||||
<package name="mybatis.mapper"/>
|
||||
</mappers>
|
||||
|
||||
<settings>
|
||||
<setting name="mapUnderscoreToCamelCase" value="true"/>
|
||||
</settings>
|
||||
|
||||
</configuration>-->
|
@ -0,0 +1,54 @@
|
||||
// Set new default font family and font color to mimic Bootstrap's default styling
|
||||
Chart.defaults.global.defaultFontFamily = '-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif';
|
||||
Chart.defaults.global.defaultFontColor = '#292b2c';
|
||||
|
||||
// Area Chart Example
|
||||
var ctx = document.getElementById("myAreaChart");
|
||||
var myLineChart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: ["Mar 1", "Mar 2", "Mar 3", "Mar 4", "Mar 5", "Mar 6", "Mar 7", "Mar 8", "Mar 9", "Mar 10", "Mar 11", "Mar 12", "Mar 13"],
|
||||
datasets: [{
|
||||
label: "Sessions",
|
||||
lineTension: 0.3,
|
||||
backgroundColor: "rgba(2,117,216,0.2)",
|
||||
borderColor: "rgba(2,117,216,1)",
|
||||
pointRadius: 5,
|
||||
pointBackgroundColor: "rgba(2,117,216,1)",
|
||||
pointBorderColor: "rgba(255,255,255,0.8)",
|
||||
pointHoverRadius: 5,
|
||||
pointHoverBackgroundColor: "rgba(2,117,216,1)",
|
||||
pointHitRadius: 50,
|
||||
pointBorderWidth: 2,
|
||||
data: [10000, 30162, 26263, 18394, 18287, 28682, 31274, 33259, 25849, 24159, 32651, 31984, 38451],
|
||||
}],
|
||||
},
|
||||
options: {
|
||||
scales: {
|
||||
xAxes: [{
|
||||
time: {
|
||||
unit: 'date'
|
||||
},
|
||||
gridLines: {
|
||||
display: false
|
||||
},
|
||||
ticks: {
|
||||
maxTicksLimit: 7
|
||||
}
|
||||
}],
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
min: 0,
|
||||
max: 40000,
|
||||
maxTicksLimit: 5
|
||||
},
|
||||
gridLines: {
|
||||
color: "rgba(0, 0, 0, .125)",
|
||||
}
|
||||
}],
|
||||
},
|
||||
legend: {
|
||||
display: false
|
||||
}
|
||||
}
|
||||
});
|
@ -0,0 +1,46 @@
|
||||
// Set new default font family and font color to mimic Bootstrap's default styling
|
||||
Chart.defaults.global.defaultFontFamily = '-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif';
|
||||
Chart.defaults.global.defaultFontColor = '#292b2c';
|
||||
|
||||
// Bar Chart Example
|
||||
var ctx = document.getElementById("myBarChart");
|
||||
var myLineChart = new Chart(ctx, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: ["January", "February", "March", "April", "May", "June"],
|
||||
datasets: [{
|
||||
label: "Revenue",
|
||||
backgroundColor: "rgba(2,117,216,1)",
|
||||
borderColor: "rgba(2,117,216,1)",
|
||||
data: [4215, 5312, 6251, 7841, 9821, 14984],
|
||||
}],
|
||||
},
|
||||
options: {
|
||||
scales: {
|
||||
xAxes: [{
|
||||
time: {
|
||||
unit: 'month'
|
||||
},
|
||||
gridLines: {
|
||||
display: false
|
||||
},
|
||||
ticks: {
|
||||
maxTicksLimit: 6
|
||||
}
|
||||
}],
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
min: 0,
|
||||
max: 15000,
|
||||
maxTicksLimit: 5
|
||||
},
|
||||
gridLines: {
|
||||
display: true
|
||||
}
|
||||
}],
|
||||
},
|
||||
legend: {
|
||||
display: false
|
||||
}
|
||||
}
|
||||
});
|
@ -0,0 +1,16 @@
|
||||
// Set new default font family and font color to mimic Bootstrap's default styling
|
||||
Chart.defaults.global.defaultFontFamily = '-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif';
|
||||
Chart.defaults.global.defaultFontColor = '#292b2c';
|
||||
|
||||
// Pie Chart Example
|
||||
var ctx = document.getElementById("myPieChart");
|
||||
var myPieChart = new Chart(ctx, {
|
||||
type: 'pie',
|
||||
data: {
|
||||
labels: ["Blue", "Red", "Yellow", "Green"],
|
||||
datasets: [{
|
||||
data: [12.21, 15.58, 11.25, 8.32],
|
||||
backgroundColor: ['#007bff', '#dc3545', '#ffc107', '#28a745'],
|
||||
}],
|
||||
},
|
||||
});
|
@ -0,0 +1,4 @@
|
||||
// Call the dataTables jQuery plugin
|
||||
$(document).ready(function() {
|
||||
$('#dataTable').DataTable();
|
||||
});
|
After Width: | Height: | Size: 6.0 KiB |
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 423 KiB |
@ -0,0 +1,9 @@
|
||||
window.addEventListener('DOMContentLoaded', event => {
|
||||
// Simple-DataTables
|
||||
// https://github.com/fiduswriter/Simple-DataTables/wiki
|
||||
|
||||
const datatablesSimple = document.getElementById('datatablesSimple');
|
||||
if (datatablesSimple) {
|
||||
new simpleDatatables.DataTable(datatablesSimple);
|
||||
}
|
||||
});
|
@ -0,0 +1,26 @@
|
||||
/*!
|
||||
* Start Bootstrap - SB Admin v7.0.2 (https://startbootstrap.com/template/sb-admin)
|
||||
* Copyright 2013-2021 Start Bootstrap
|
||||
* Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-sb-admin/blob/master/LICENSE)
|
||||
*/
|
||||
//
|
||||
// Scripts
|
||||
//
|
||||
|
||||
window.addEventListener('DOMContentLoaded', event => {
|
||||
|
||||
// Toggle the side navigation
|
||||
const sidebarToggle = document.body.querySelector('#sidebarToggle');
|
||||
if (sidebarToggle) {
|
||||
// Uncomment Below to persist sidebar toggle between refreshes
|
||||
// if (localStorage.getItem('sb|sidebar-toggle') === 'true') {
|
||||
// document.body.classList.toggle('sb-sidenav-toggled');
|
||||
// }
|
||||
sidebarToggle.addEventListener('click', event => {
|
||||
event.preventDefault();
|
||||
document.body.classList.toggle('sb-sidenav-toggled');
|
||||
localStorage.setItem('sb|sidebar-toggle', document.body.classList.contains('sb-sidenav-toggled'));
|
||||
});
|
||||
}
|
||||
|
||||
});
|
@ -0,0 +1,80 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="adminCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="adminCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="adminCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">添加预约信息</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item"><a th:href="@{/toAdminMain}">主页</a></li>
|
||||
<li class="breadcrumb-item"><a th:href="@{/class/selClass}">预约管理</a></li>
|
||||
<li class="breadcrumb-item active">添加预约信息</li>
|
||||
</ol>
|
||||
|
||||
<div class="card mb-4">
|
||||
|
||||
<form th:action="@{/class/addClass}" method="post" name="addForm"
|
||||
onsubmit="return beforeSubmit(this)">
|
||||
<table class="table table-hover">
|
||||
<tr>
|
||||
<td text-align="center">编号:</td>
|
||||
<td><input type="text" class="form-control" placeholder="4位编号" name="classId"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td text-align="center">名称:</td>
|
||||
<td><input type="text" class="form-control" placeholder="器材名称" name="className">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">时间:</td>
|
||||
<td><input type="text" class="form-control" placeholder="xx:xx-xx:xx" name="classBegin">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">地点:</td>
|
||||
<td><input type="text" class="form-control" placeholder="地点" name="coach">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="text-align:center;margin-top:20px;margin-bottom:20px">
|
||||
<input type="submit" class="btn btn-outline-success" value="添加">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="adminCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="adminCommon::common-scripts"></div>
|
||||
<script type="text/javascript">
|
||||
function beforeSubmit(addForm) {
|
||||
if (addForm.classId.value == "") {
|
||||
alert("请输入编号!")
|
||||
return false;
|
||||
}
|
||||
if (addForm.recordName.value == "") {
|
||||
alert("请输入器材名称!")
|
||||
return false;
|
||||
}
|
||||
if (addForm.recordBegin.value == "") {
|
||||
alert("请输入时间!")
|
||||
return false;
|
||||
}
|
||||
if (addForm.coach.value == "") {
|
||||
alert("请输入地点!")
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,76 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="adminCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="adminCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="adminCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">添加器材</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item"><a th:href="@{/toAdminMain}">主页</a></li>
|
||||
<li class="breadcrumb-item"><a th:href="@{/equipment/selEquipment}">器材管理</a></li>
|
||||
<li class="breadcrumb-item active">添加器材</li>
|
||||
</ol>
|
||||
|
||||
<div class="card mb-4">
|
||||
|
||||
<form th:action="@{/equipment/addEquipment}" method="post" name="addForm"
|
||||
onsubmit="return beforeSubmit(this)">
|
||||
<table class="table table-hover">
|
||||
<tr>
|
||||
<td text-align="center">器材名称:</td>
|
||||
<td><input type="text" class="form-control" placeholder="名称" name="equipmentName"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td text-align="center">器材位置:</td>
|
||||
<td><input type="text" class="form-control" placeholder="x号房间" name="equipmentLocation">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">器材状态:</td>
|
||||
<td><input type="text" class="form-control" placeholder="状态" name="equipmentStatus">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">备注信息:</td>
|
||||
<td><input type="text" class="form-control" placeholder="备注" name="equipmentMessage">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="text-align:center;margin-top:20px;margin-bottom:20px">
|
||||
<input type="submit" class="btn btn-outline-success" value="添加">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="adminCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="adminCommon::common-scripts"></div>
|
||||
<script type="text/javascript">
|
||||
function beforeSubmit(addForm) {
|
||||
if (addForm.equipmentName.value == "") {
|
||||
alert("请输入器材名称!")
|
||||
return false;
|
||||
}
|
||||
if (addForm.equipmentLocation.value == "") {
|
||||
alert("请输入器材位置!")
|
||||
return false;
|
||||
}
|
||||
if (addForm.equipmentStatus.value == "") {
|
||||
alert("请输入器材状态!")
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,112 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="adminCommon::common-header">
|
||||
|
||||
</head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="adminCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="adminCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">添加用户</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item"><a th:href="@{/toAdminMain}">主页</a></li>
|
||||
<li class="breadcrumb-item"><a th:href="@{/member/selMember}">用户管理</a></li>
|
||||
<li class="breadcrumb-item active">添加用户</li>
|
||||
</ol>
|
||||
|
||||
<div class="card mb-4">
|
||||
<form th:action="@{/member/addMember}" method="post" name="addForm"
|
||||
onsubmit="return beforeSubmit(this)">
|
||||
<table class="table table-hover">
|
||||
<tr>
|
||||
<td text-align="center">用户账号:</td>
|
||||
<td><input type="text" class="form-control" placeholder="卡号由系统自动生成" name="memberAccount"
|
||||
disabled="disabled">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">密码:</td>
|
||||
<td><input type="text" class="form-control" placeholder="输入8位包含字母以及数字的密码"
|
||||
name="memberPassword">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">姓名:</td>
|
||||
<td><input type="text" class="form-control" placeholder="姓名" name="memberName">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">性别:</td>
|
||||
<td><input type="text" class="form-control" placeholder="性别" name="memberGender">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">年龄:</td>
|
||||
<td><input type="text" class="form-control" placeholder="年龄" name="memberAge">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">身高:</td>
|
||||
<td><input type="text" class="form-control" placeholder="cm" name="memberHeight">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">体重:</td>
|
||||
<td><input type="text" class="form-control" placeholder="kg" name="memberWeight">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">联系方式:</td>
|
||||
<td><input type="text" class="form-control" placeholder="11位手机号" name="memberPhone">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="text-align:center;margin-top:20px;margin-bottom:20px">
|
||||
<input type="submit" class="btn btn-outline-success" value="添加">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="adminCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="adminCommon::common-scripts"></div>
|
||||
<script type="text/javascript">
|
||||
function beforeSubmit(addForm) {
|
||||
let phone = /^[1][3,4,5,7,8,9][0-9]{9}$/;//设置手机号正则表达式
|
||||
if (addForm.memberName.value == "") {
|
||||
alert("请输入姓名!")
|
||||
return false;
|
||||
}
|
||||
if (addForm.memberGender.value == "") {
|
||||
alert("请输入性别!")
|
||||
return false;
|
||||
}
|
||||
if (addForm.memberAge.value == "") {
|
||||
alert("请输入年龄!")
|
||||
return false;
|
||||
}
|
||||
if (!phone.test(addForm.memberPhone.value)) {
|
||||
alert("手机号码错误!");
|
||||
return false;
|
||||
}
|
||||
if (addForm.memberHeight.value == "") {
|
||||
alert("请输入身高!")
|
||||
return false;
|
||||
}
|
||||
if (addForm.memberWeight.value == "") {
|
||||
alert("请输入体重!")
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,97 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:fragment="common-header">
|
||||
|
||||
<meta charset="UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
<meta name="description" content="gym-management-system"/>
|
||||
<meta name="author" content=" "/>
|
||||
<title>健身房管理系统-管理员</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/simple-datatables@latest/dist/style.css" rel="stylesheet"/>
|
||||
<link href="/static/css/styles.css" th:href="@{/css/styles.css}" rel="stylesheet"/>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/js/all.min.js"
|
||||
crossorigin="anonymous"></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!--导航栏-->
|
||||
<nav class="sb-topnav navbar navbar-expand navbar-dark bg-dark" th:fragment="common-navbar">
|
||||
<!-- Navbar Brand-->
|
||||
<a class="navbar-brand ps-3">健身房管理系统</a>
|
||||
<!-- Sidebar Toggle-->
|
||||
<button class="btn btn-link btn-sm order-1 order-lg-0 me-4 me-lg-0" id="sidebarToggle" href="#!"><i
|
||||
class="fas fa-bars"></i></button>
|
||||
<!-- Navbar Search-->
|
||||
<form class="d-none d-md-inline-block form-inline ms-auto me-0 me-md-3 my-2 my-md-0">
|
||||
<div class="input-group">
|
||||
<input class="form-control" type="text" placeholder="搜索" aria-label="搜索"
|
||||
aria-describedby="btnNavbarSearch"/>
|
||||
<button class="btn btn-primary" id="btnNavbarSearch" type="button"><i class="fas fa-search"></i></button>
|
||||
</div>
|
||||
</form>
|
||||
<!-- Navbar-->
|
||||
<ul class="navbar-nav ms-auto ms-md-0 me-3 me-lg-4">
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" id="navbarDropdown" href="#" role="button" data-bs-toggle="dropdown"
|
||||
aria-expanded="false"><i class="fas fa-user fa-fw"></i></a>
|
||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
|
||||
<li><a class="dropdown-item" th:href="@{/}"><i class="fas fa-sign-out-alt"></i> 退出登录</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<!--侧边栏-->
|
||||
<div id="layoutSidenav_nav" th:fragment="common-sidenav">
|
||||
<nav class="sb-sidenav accordion sb-sidenav-light" id="sidenavAccordion">
|
||||
<div class="sb-sidenav-menu">
|
||||
<div class="nav">
|
||||
|
||||
<!--管理区域-->
|
||||
<div class="sb-sidenav-menu-heading">管理</div>
|
||||
<a class="nav-link" th:href="@{/member/selMember}">
|
||||
<div class="sb-nav-link-icon"><i class="fas fa-user"></i></div>
|
||||
用户管理
|
||||
</a>
|
||||
<a class="nav-link" th:href="@{/equipment/selEquipment}">
|
||||
<div class="sb-nav-link-icon"><i class="fas fa-table-tennis"></i></div>
|
||||
器材管理
|
||||
</a>
|
||||
<a class="nav-link" th:href="@{/class/selClass}">
|
||||
<div class="sb-nav-link-icon"><i class="fas fa-calendar-alt"></i></div>
|
||||
预约管理
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="sb-sidenav-footer">
|
||||
<div class="small">你好!</div>
|
||||
管理员
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<!--页脚-->
|
||||
<footer class="py-4 bg-light mt-auto" th:fragment="common-footer">
|
||||
<div class="container-fluid px-4">
|
||||
<div class="d-flex align-items-center justify-content-between small">
|
||||
<div class="text-muted"> </div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div th:fragment="common-scripts">
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="/static/js/scripts.js" th:src="@{/js/scripts.js}"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js" crossorigin="anonymous"></script>
|
||||
<script src="/static/assets/demo/chart-area-demo.js" th:src="@{/assets/demo/chart-area-demo.js}"></script>
|
||||
<script src="/static/assets/demo/chart-bar-demo.js" th:src="@{/assets/demo/chart-bar-demo.js}"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/simple-datatables@latest" crossorigin="anonymous"></script>
|
||||
<script src="/static/js/datatables-simple-demo.js" th:src="@{/js/datatables-simple-demo.js}"></script>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,77 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
<meta name="description" content="gym-management-system"/>
|
||||
<meta name="author" content=" "/>
|
||||
<title>健身房管理系统-管理员登录</title>
|
||||
<link href="/static/css/styles.css" th:href="@{css/styles.css}" rel="stylesheet"/>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/js/all.min.js"
|
||||
crossorigin="anonymous"></script>
|
||||
<script type="text/javascript">
|
||||
function checkSubmit(loginForm) {
|
||||
if (loginForm.adminAccount.value == '') {
|
||||
alert("请输入账号");
|
||||
loginForm.adminAccount.focus();
|
||||
return false;
|
||||
}
|
||||
if (loginForm.adminPassword.value == '') {
|
||||
alert("请输入密码");
|
||||
loginForm.adminPassword.focus();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="bg-primary" th:style="'background-image: url(/img/background.jpeg);background-size: 100%, 100%'">
|
||||
<div id="layoutAuthentication">
|
||||
<div id="layoutAuthentication_content">
|
||||
<main>
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-5">
|
||||
<div class="card shadow-lg border-0 rounded-lg mt-5">
|
||||
<div class="card-header"><h3 class="text-center font-weight-light my-4">管理员登录</h3></div>
|
||||
<div class="card-body">
|
||||
<form th:action="@{/adminLogin}" method="post" name="loginForm"
|
||||
onsubmit="return checkSubmit(this)">
|
||||
<div class="form-floating mb-3">
|
||||
<input class="form-control" id="inputAccount" name="adminAccount" type="account"
|
||||
placeholder="Account"
|
||||
onkeypress="return event.keyCode>=48&&event.keyCode<=57"/>
|
||||
<label for="inputAccount">账号</label>
|
||||
</div>
|
||||
<div class="form-floating mb-3">
|
||||
<input class="form-control" id="inputPassword" name="adminPassword"
|
||||
type="password"
|
||||
placeholder="Password"/>
|
||||
<label for="inputPassword">密码</label>
|
||||
</div>
|
||||
<div class="form-check mb-3">
|
||||
<input class="form-check-input" id="inputRememberPassword" type="checkbox"
|
||||
value=""/>
|
||||
<label class="form-check-label" for="inputRememberPassword">记住密码</label>
|
||||
</div>
|
||||
<div class="d-flex align-items-center justify-content-between mt-4 mb-0">
|
||||
<input type="submit" class="btn btn-success" value="登录">
|
||||
<a class="btn btn-primary" th:href="@{/toUserLogin}">用户登录</a>
|
||||
</div>
|
||||
</form>
|
||||
<div th:text="${msg}" style="margin-top: 20px;text-align: center;color: red"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="/static/js/scripts.js" th:src="@{js/scripts.js}"></script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,75 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="adminCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="adminCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="adminCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">管理员主页</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item active">主页</li>
|
||||
</ol>
|
||||
<div class="row">
|
||||
<div class="col-xl-3 col-md-6">
|
||||
<div class="card bg-primary text-white mb-4">
|
||||
<div class="card-body">健身房总人数</div>
|
||||
<div class="card-footer d-flex align-items-center justify-content-between">
|
||||
<span class="small text-white" th:text="${humanTotal} + '人'"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3 col-md-6">
|
||||
<div class="card bg-success text-white mb-4">
|
||||
<div class="card-body">用户人数</div>
|
||||
<div class="card-footer d-flex align-items-center justify-content-between">
|
||||
<span class="small text-white" th:text="${memberTotal} + '人'"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3 col-md-6">
|
||||
<div class="card bg-danger text-white mb-4">
|
||||
<div class="card-body">器材数量</div>
|
||||
<div class="card-footer d-flex align-items-center justify-content-between">
|
||||
<span class="small text-white" th:text="${equipmentTotal} + '件'"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xl-6">
|
||||
<div class="card mb-4">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-chart-area me-1"></i>
|
||||
Area Chart Example
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<canvas id="myAreaChart" width="100%" height="40"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-6">
|
||||
<div class="card mb-4">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-chart-bar me-1"></i>
|
||||
Bar Chart Example
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<canvas id="myBarChart" width="100%" height="40"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="adminCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="adminCommon::common-scripts"></div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,185 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>锻炼结束</title>
|
||||
<style>
|
||||
/* 基础样式 */
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
/* 表格样式 */
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid #ddd;
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
/* 建议区域样式 */
|
||||
.suggestions {
|
||||
background-color: #fff;
|
||||
padding: 20px;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
/* 响应式设计 */
|
||||
@media (max-width: 600px) {
|
||||
.container {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
#returnButton {
|
||||
padding: 10px 20px;
|
||||
font-size: 16px;
|
||||
background-color: #007BFF;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#returnButton:hover {
|
||||
background-color: #0056b3;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div style="position: absolute; top: 10px; right: 10px;">
|
||||
<a th:href="@{/toUserMain}"
|
||||
style="text-decoration: none">
|
||||
<input type="button" id="returnButton" value="返回主页">
|
||||
</a>
|
||||
</div>
|
||||
<!-- 左侧表格:预期锻炼目标 -->
|
||||
<div class="left-table">
|
||||
<h2>预期锻炼目标</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<th>项目</th>
|
||||
<th>器材</th>
|
||||
<th>地点</th>
|
||||
<th>时长</th>
|
||||
<th>时间</th>
|
||||
</tr>
|
||||
<!-- 添加 id 属性来标记时长数据 -->
|
||||
<tr th:each="target:${targetRecord}">
|
||||
<td th:text="${target.getTpName()}">项目</td>
|
||||
<td th:text="${target.getTepName()}">器材</td>
|
||||
<td th:text="${target.getTrLocation()}">地点</td>
|
||||
<td th:id="target-time" th:text="${target.getTTime()}">时长</td> <!-- 预期时长 -->
|
||||
<td th:text="${target.getTDate()}">时间</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- 右侧表格:真实锻炼记录 -->
|
||||
<div class="right-table">
|
||||
<h2>真实锻炼记录</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<th>项目</th>
|
||||
<th>器材</th>
|
||||
<th>地点</th>
|
||||
<th>时长</th>
|
||||
<th>时间</th>
|
||||
</tr>
|
||||
<!-- 添加 id 属性来标记时长数据 -->
|
||||
<tr th:each="real:${realRecord}">
|
||||
<td th:text="${real.getRpName()}">项目</td>
|
||||
<td th:text="${real.getRepName()}">器材</td>
|
||||
<td th:text="${real.getRrLocation()}">地点</td>
|
||||
<td th:id="real-time" th:text="${real.getRTime()}">时长</td> <!-- 真实时长 -->
|
||||
<td th:text="${real.getRDate()}">时间</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="suggestions">
|
||||
<h2>建议</h2>
|
||||
<p id="suggestionText">根据您的预期锻炼目标和真实锻炼记录,建议您:</p>
|
||||
<ul id="suggestionList">
|
||||
<!-- 动态建议会显示在这里 -->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// 解析时间字符串,将"X小时Y分钟Z秒"转为秒数
|
||||
function parseTimeToSeconds(timeStr) {
|
||||
let totalSeconds = 0;
|
||||
|
||||
// 正则表达式匹配小时、分钟、秒
|
||||
const hourMatch = timeStr.match(/(\d+)(小时)/);
|
||||
const minuteMatch = timeStr.match(/(\d+)(分钟)/);
|
||||
const secondMatch = timeStr.match(/(\d+)(秒)/);
|
||||
|
||||
if (hourMatch) {
|
||||
totalSeconds += parseInt(hourMatch[1]) * 3600; // 小时转换为秒
|
||||
}
|
||||
if (minuteMatch) {
|
||||
totalSeconds += parseInt(minuteMatch[1]) * 60; // 分钟转换为秒
|
||||
}
|
||||
if (secondMatch) {
|
||||
totalSeconds += parseInt(secondMatch[1]); // 秒
|
||||
}
|
||||
|
||||
return totalSeconds;
|
||||
}
|
||||
|
||||
// 比较预期和实际锻炼时长,并给出建议
|
||||
function generateSuggestions(expectedTimeStr, actualTimeStr) {
|
||||
const expectedTimeInSeconds = parseTimeToSeconds(expectedTimeStr);
|
||||
const actualTimeInSeconds = parseTimeToSeconds(actualTimeStr);
|
||||
|
||||
const suggestionList = document.getElementById('suggestionList');
|
||||
const suggestionText = document.getElementById('suggestionText');
|
||||
suggestionList.innerHTML = ''; // 清空当前建议内容
|
||||
|
||||
if (actualTimeInSeconds < expectedTimeInSeconds) {
|
||||
const timeDifference = expectedTimeInSeconds - actualTimeInSeconds;
|
||||
const minutesMissing = Math.floor(timeDifference / 60);
|
||||
const secondsMissing = timeDifference % 60;
|
||||
|
||||
suggestionText.textContent = '根据您的锻炼记录,您今天的锻炼时间不足预期噢!';
|
||||
suggestionList.innerHTML += `<li>建议增加锻炼时长,您还差 ${minutesMissing} 分 ${secondsMissing} 秒。</li>`;
|
||||
suggestionList.innerHTML += `<li>继续加油!争取完成目标,做更自律的自己噢!</li>`;
|
||||
} else if (actualTimeInSeconds === expectedTimeInSeconds) {
|
||||
suggestionText.textContent = '您的锻炼时长符合预期,请继续保持!';
|
||||
} else {
|
||||
const timeExcess = actualTimeInSeconds - expectedTimeInSeconds;
|
||||
const minutesExcess = Math.floor(timeExcess / 60);
|
||||
const secondsExcess = timeExcess % 60;
|
||||
|
||||
suggestionText.textContent = '根据您的锻炼记录,您今天的锻炼时间超出预期啦!';
|
||||
suggestionList.innerHTML += `<li>您的锻炼时长较长,超出预期 ${minutesExcess} 分 ${secondsExcess} 秒。</li>`;
|
||||
suggestionList.innerHTML += `<li>您需要好好休息啦!锻炼要适当!</li>`;
|
||||
}
|
||||
}
|
||||
|
||||
const targetTime = document.querySelector('#target-time').textContent;
|
||||
const realTime = document.querySelector('#real-time').textContent;
|
||||
|
||||
generateSuggestions(targetTime, realTime);
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,76 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="adminCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="adminCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="adminCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">预约管理</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item"><a th:href="@{/toAdminMain}">主页</a></li>
|
||||
</ol>
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-table me-1"></i>
|
||||
预约信息表
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table id="datatablesSimple">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>编号</th>
|
||||
<th>名称</th>
|
||||
<th>时间</th>
|
||||
<th>地点</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr th:each="class:${classList}">
|
||||
<td th:text="${class.classId}">编号</td>
|
||||
<td th:text="${class.className}">名称</td>
|
||||
<td th:text="${class.classBegin}">时间</td>
|
||||
<td th:text="${class.coach}">地点</td>
|
||||
<td>
|
||||
<a th:href="@{/class/delClass(classId=${class.classId})}"
|
||||
style="text-decoration: none">
|
||||
<input type="button" class="btn btn-sm btn-outline-danger"
|
||||
onclick="return del()" value="删除">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="text-align:center;margin-top:20px;margin-bottom:20px">
|
||||
<a th:href="@{/class/toAddClass}">
|
||||
<input type="button" class="btn btn-outline-success" value="添加预约信息">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="adminCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="adminCommon::common-scripts"></div>
|
||||
<script>
|
||||
function del() {
|
||||
let msg = "确定要删除吗?";
|
||||
if (confirm(msg) == true) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,83 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="adminCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="adminCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="adminCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">器材管理</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item"><a th:href="@{/toAdminMain}">主页</a></li>
|
||||
<li class="breadcrumb-item active">器材管理</li>
|
||||
</ol>
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-table me-1"></i>
|
||||
器材信息表
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table id="datatablesSimple">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>器材id</th>
|
||||
<th>名称</th>
|
||||
<th>位置</th>
|
||||
<th>状态</th>
|
||||
<th>备注信息</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr th:each="equ:${equipmentList}">
|
||||
<td th:text="${equ.equipmentId}">id</td>
|
||||
<td th:text="${equ.equipmentName}">name</td>
|
||||
<td th:text="${equ.equipmentLocation}">location</td>
|
||||
<td th:text="${equ.equipmentStatus}">status</td>
|
||||
<td th:text="${equ.equipmentMessage}">message</td>
|
||||
<td>
|
||||
<a th:href="@{/equipment/toUpdateEquipment(equipmentId=${equ.equipmentId})}"
|
||||
style="text-decoration: none">
|
||||
<input type="button" class="btn btn-sm btn-outline-primary" value="编辑">
|
||||
</a>
|
||||
<a th:href="@{/equipment/delEquipment(equipmentId=${equ.equipmentId})}"
|
||||
style="text-decoration: none">
|
||||
<input type="button" class="btn btn-sm btn-outline-danger"
|
||||
onclick="return del()" value="删除">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="text-align:center;margin-top:20px;margin-bottom:20px">
|
||||
<a th:href="@{/equipment/toAddEquipment}">
|
||||
<input type="button" class="btn btn-outline-success" value="添加器材信息">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="adminCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="adminCommon::common-scripts"></div>
|
||||
<script>
|
||||
function del() {
|
||||
let msg = "确定要删除吗?";
|
||||
if (confirm(msg) == true) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,89 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="adminCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="adminCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="adminCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">用户管理</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item"><a th:href="@{/toAdminMain}">主页</a></li>
|
||||
<li class="breadcrumb-item active">用户管理</li>
|
||||
</ol>
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-table me-1"></i>
|
||||
用户信息表
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table id="datatablesSimple">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>用户账号</th>
|
||||
<th>密码</th>
|
||||
<th>姓名</th>
|
||||
<th>性别</th>
|
||||
<th>年龄</th>
|
||||
<th>身高</th>
|
||||
<th>体重</th>
|
||||
<th>联系方式</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr th:each="mem:${memberList}">
|
||||
<td th:text="${mem.memberAccount}">用户账号</td>
|
||||
<td th:text="${mem.memberPassword}">密码</td>
|
||||
<td th:text="${mem.memberName}">姓名</td>
|
||||
<td th:text="${mem.memberGender}">性别</td>
|
||||
<td th:text="${mem.memberAge}">年龄</td>
|
||||
<td th:text="${mem.memberHeight}">身高</td>
|
||||
<td th:text="${mem.memberWeight}">体重</td>
|
||||
<td th:text="${mem.memberPhone}">联系方式</td>
|
||||
<td>
|
||||
<a th:href="@{/member/toUpdateMember(memberAccount=${mem.memberAccount})}"
|
||||
style="text-decoration: none">
|
||||
<input type="button" class="btn btn-sm btn-outline-primary" value="编辑">
|
||||
</a>
|
||||
<a th:href="@{/member/delMember(memberAccount=${mem.memberAccount})}"
|
||||
style="text-decoration: none">
|
||||
<input type="button" class="btn btn-sm btn-outline-danger"
|
||||
onclick="return del()" value="删除">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="text-align:center;margin-top:20px;margin-bottom:20px">
|
||||
<a th:href="@{/member/toAddMember}">
|
||||
<input type="button" class="btn btn-outline-success" value="添加用户信息">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="adminCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="adminCommon::common-scripts"></div>
|
||||
<script>
|
||||
function del() {
|
||||
let msg = "确定要删除吗?";
|
||||
if (confirm(msg) == true) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,98 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="adminCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="adminCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="adminCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">编辑用户</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item"><a th:href="@{/toAdminMain}">主页</a></li>
|
||||
<li class="breadcrumb-item"><a th:href="@{/member/selMember}">用户管理</a></li>
|
||||
<li class="breadcrumb-item active">编辑用户</li>
|
||||
</ol>
|
||||
|
||||
<div class="card mb-4">
|
||||
|
||||
<form th:action="@{/member/updateMember}" method="post" name="updateForm"
|
||||
onsubmit="return beforeSubmit(this)">
|
||||
<div th:each="mem:${memberList}">
|
||||
<table class="table table-hover">
|
||||
<tr>
|
||||
<td text-align="center">用户账号:</td>
|
||||
<td><input type="text" class="form-control" readonly="readonly"
|
||||
th:value="${mem.memberAccount}" name="memberAccount">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">姓名:</td>
|
||||
<td><input type="text" class="form-control" th:value="${mem.memberName}"
|
||||
name="memberName"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">密码:</td>
|
||||
<td><input type="text" class="form-control"
|
||||
th:value="${mem.memberPassword}" name="memberPassword">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">性别:</td>
|
||||
<td><input type="text" class="form-control" th:value="${mem.memberGender}"
|
||||
name="memberGender">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">年龄:</td>
|
||||
<td><input type="text" class="form-control" th:value="${mem.memberAge}"
|
||||
name="memberAge">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">联系方式:</td>
|
||||
<td><input type="text" class="form-control" th:value="${mem.memberPhone}"
|
||||
name="memberPhone">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">身高:</td>
|
||||
<td><input type="text" class="form-control" th:value="${mem.memberHeight}"
|
||||
name="memberHeight">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">体重:</td>
|
||||
<td><input type="text" class="form-control" th:value="${mem.memberWeight}"
|
||||
name="memberWeight">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="text-align:center;margin-bottom:15px">
|
||||
<input type="submit" class="btn btn-outline-success" value="确认修改">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="adminCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="adminCommon::common-scripts"></div>
|
||||
<script type="text/javascript">
|
||||
function beforeSubmit(updateForm) {
|
||||
let phone = /^[1][3,4,5,7,8,9][0-9]{9}$/;//设置手机号正则表达式
|
||||
if (!phone.test(updateForm.memberPhone.value)) {
|
||||
alert("手机号码错误!");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,78 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="userCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="userCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="userCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">预期目标填写</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item"><a th:href="@{/toUserMain}">主页</a></li>
|
||||
<li class="breadcrumb-item active">开始锻炼</li>
|
||||
</ol>
|
||||
|
||||
<div class="card mb-4">
|
||||
|
||||
<form th:action="@{/user/addTargetRecord}" method="post" name="addForm"
|
||||
onsubmit="return beforeSubmit(this)">
|
||||
<table class="table table-hover">
|
||||
<tr>
|
||||
<td text-align="center">项目名称:</td>
|
||||
<td><input type="text" class="form-control" placeholder="项目名称" name="tpName"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">器材名称:</td>
|
||||
<td><input type="text" class="form-control" placeholder="器材名称" name="tepName">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">器材位置:</td>
|
||||
<td><input type="text" class="form-control" placeholder="x号房间" name="trLocation">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">锻炼时长:</td>
|
||||
<td><input type="text" class="form-control" placeholder="时长" name="tTime">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="text-align:center;margin-top:20px;margin-bottom:20px">
|
||||
<input type="submit" class="btn btn-outline-success" value="开始锻炼">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="userCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="userCommon::common-scripts"></div>
|
||||
<script type="text/javascript">
|
||||
function beforeSubmit(addForm) {
|
||||
if (addForm.classId.value == "") {
|
||||
alert("请输入项目名称!")
|
||||
return false;
|
||||
}
|
||||
if (addForm.recordName.value == "") {
|
||||
alert("请输入器材!")
|
||||
return false;
|
||||
}
|
||||
if (addForm.recordBegin.value == "") {
|
||||
alert("请输入器材位置!")
|
||||
return false;
|
||||
}
|
||||
if (addForm.coach.value == "") {
|
||||
alert("请输入锻炼时长!")
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,75 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="userCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="userCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="userCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">预约信息</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item"><a th:href="@{/toUserMain}">主页</a></li>
|
||||
</ol>
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-table me-1"></i>
|
||||
预约信息表
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table id="datatablesSimple">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>编号</th>
|
||||
<th>预约号</th>
|
||||
<th>名称</th>
|
||||
<th>时间</th>
|
||||
<th>地点</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr th:each="class:${classList}">
|
||||
<td th:text="${class.cid}">编号</td>
|
||||
<td th:text="${class.classId}">预约号</td>
|
||||
<td th:text="${class.className}">名称</td>
|
||||
<td th:text="${class.classBegin}">时间</td>
|
||||
<td th:text="${class.coach}">地点</td>
|
||||
<td>
|
||||
<a th:href="@{/user/userBook(recordId=${class.classId},recordName=${class.className},recordBegin=${class.classBegin},Location=${class.coach})}"
|
||||
style="text-decoration: none">
|
||||
<input type="button" class="btn btn-sm btn-outline-primary" value="预约">
|
||||
</a>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="text-align:center;margin-top:20px;margin-bottom:20px">
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="userCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="userCommon::common-scripts"></div>
|
||||
<script>
|
||||
function del() {
|
||||
let msg = "确定要删除吗?";
|
||||
if (confirm(msg) == true) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,75 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="userCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="userCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="userCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">预约记录</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item"><a th:href="@{/toUserMain}">主页</a></li>
|
||||
<li class="breadcrumb-item"><a th:href="@{/user/toUserBook}">预约信息</a></li>
|
||||
<li class="breadcrumb-item active">预约记录</li>
|
||||
</ol>
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-table me-1"></i>
|
||||
预约记录
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table id="datatablesSimple">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>预约时间</th>
|
||||
<th>预约号</th>
|
||||
<th>器材</th>
|
||||
<th>时间</th>
|
||||
<th>地点</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr th:each="rec:${recordList}">
|
||||
<td th:text="${rec.date}">编号</td>
|
||||
<td th:text="${rec.recordId}">预约号</td>
|
||||
<td th:text="${rec.recordName}">器材</td>
|
||||
<td th:text="${rec.recordBegin}">时间</td>
|
||||
<td th:text="${rec.Location}">地点</td>
|
||||
<td>
|
||||
<a th:href="@{/user/delUserRecord(recordId=${rec.recordId})}"
|
||||
style="text-decoration: none">
|
||||
<input type="button" class="btn btn-sm btn-outline-danger"
|
||||
onclick="return del()" value="删除">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="userCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="userCommon::common-scripts"></div>
|
||||
<script>
|
||||
function del() {
|
||||
let msg = "确定要删除吗?";
|
||||
if (confirm(msg) == true) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,74 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="userCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="userCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="userCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">我的锻炼记录</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item"><a th:href="@{/toUserMain}">主页</a></li>
|
||||
<li class="breadcrumb-item active">历史记录</li>
|
||||
</ol>
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-table me-1"></i>
|
||||
锻炼历史记录
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table id="datatablesSimple">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>项目</th>
|
||||
<th>器材</th>
|
||||
<th>地点</th>
|
||||
<th>时长</th>
|
||||
<th>时间</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr th:each="rel:${RealRecord}">
|
||||
<td th:text="${rel.getRpName()}">项目</td>
|
||||
<td th:text="${rel.getRepName()}">器材</td>
|
||||
<td th:text="${rel.getRrLocation()}">地点</td>
|
||||
<td th:text="${rel.getRTime()}">时长</td>
|
||||
<td th:text="${rel.getRDate()}">时间</td>
|
||||
<td>
|
||||
<a th:href="@{/user/delRealRecord(rDate=${rel.getRDate()})}"
|
||||
style="text-decoration: none">
|
||||
<input type="button" class="btn btn-sm btn-outline-danger"
|
||||
onclick="return del()" value="删除">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="userCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="userCommon::common-scripts"></div>
|
||||
<script>
|
||||
function del() {
|
||||
let msg = "确定要删除吗?";
|
||||
if (confirm(msg) == true) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,115 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:fragment="common-header">
|
||||
|
||||
<meta charset="UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
<meta name="description" content="gym-management-system"/>
|
||||
<meta name="author" content=" "/>
|
||||
<title>健身房管理系统-用户</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/simple-datatables@latest/dist/style.css" rel="stylesheet"/>
|
||||
<link href="/static/css/styles.css" th:href="@{/css/styles.css}" rel="stylesheet"/>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/js/all.min.js"
|
||||
crossorigin="anonymous"></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!--导航栏-->
|
||||
<nav class="sb-topnav navbar navbar-expand navbar-dark bg-dark" th:fragment="common-navbar">
|
||||
<!-- Navbar Brand-->
|
||||
<a class="navbar-brand ps-3">健身房管理系统</a>
|
||||
<!-- Sidebar Toggle-->
|
||||
<button class="btn btn-link btn-sm order-1 order-lg-0 me-4 me-lg-0" id="sidebarToggle" href="#!"><i
|
||||
class="fas fa-bars"></i></button>
|
||||
<!-- Navbar Search-->
|
||||
<form class="d-none d-md-inline-block form-inline ms-auto me-0 me-md-3 my-2 my-md-0">
|
||||
<div class="input-group">
|
||||
<input class="form-control" type="text" placeholder="搜索" aria-label="搜索"
|
||||
aria-describedby="btnNavbarSearch"/>
|
||||
<button class="btn btn-primary" id="btnNavbarSearch" type="button"><i class="fas fa-search"></i></button>
|
||||
</div>
|
||||
</form>
|
||||
<!-- Navbar-->
|
||||
<ul class="navbar-nav ms-auto ms-md-0 me-3 me-lg-4">
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" id="navbarDropdown" href="#" role="button" data-bs-toggle="dropdown"
|
||||
aria-expanded="false"><i class="fas fa-user fa-fw"></i></a>
|
||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
|
||||
<li><a class="dropdown-item" th:href="@{/toUserLogin}"><i class="fas fa-sign-out-alt"></i> 退出登录</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<!--侧边栏-->
|
||||
<div id="layoutSidenav_nav" th:fragment="common-sidenav">
|
||||
<nav class="sb-sidenav accordion sb-sidenav-light" id="sidenavAccordion">
|
||||
<div class="sb-sidenav-menu">
|
||||
<div class="nav">
|
||||
|
||||
<!--管理区域-->
|
||||
<div class="sb-sidenav-menu-heading">管理</div>
|
||||
<a class="nav-link" th:href="@{/user/toUserInfo}">
|
||||
<div class="sb-nav-link-icon"><i class="fas fa-user"></i></div>
|
||||
个人信息
|
||||
</a>
|
||||
<!-- 记录锻炼 -->
|
||||
<a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#exerciseCollapse" aria-expanded="false" aria-controls="exerciseCollapse">
|
||||
<div class="sb-nav-link-icon"><i class="fas fa-dumbbell"></i></div>
|
||||
记录锻炼
|
||||
<div class="sb-sidenav-collapse-arrow"><i class="fas fa-angle-down"></i></div>
|
||||
</a>
|
||||
<div class="collapse exercise-collapse" id="exerciseCollapse" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordion">
|
||||
<nav class="sb-sidenav-menu-nested nav">
|
||||
<a class="nav-link" th:href="@{/user/toApplyClass}">预期目标</a>
|
||||
<a class="nav-link" th:href="@{/user/toUserRealRecord}">锻炼记录</a>
|
||||
</nav>
|
||||
</div>
|
||||
<!-- 预约 -->
|
||||
<a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#appointmentCollapse" aria-expanded="false" aria-controls="appointmentCollapse">
|
||||
<div class="sb-nav-link-icon"><i class="fas fa-calendar-check"></i></div>
|
||||
预约
|
||||
<div class="sb-sidenav-collapse-arrow"><i class="fas fa-angle-down"></i></div>
|
||||
</a>
|
||||
<div class="collapse appointment-collapse" id="appointmentCollapse" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordion">
|
||||
<nav class="sb-sidenav-menu-nested nav">
|
||||
<a class="nav-link" th:href="@{/user/toUserBook}">预约信息</a>
|
||||
<a class="nav-link" th:href="@{/user/toUserBookRecord}">预约记录</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="sb-sidenav-footer">
|
||||
<div class="small">你好!</div>
|
||||
尊敬的用户
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
|
||||
<!--页脚-->
|
||||
<footer class="py-4 bg-light mt-auto" th:fragment="common-footer">
|
||||
<div class="container-fluid px-4">
|
||||
<div class="d-flex align-items-center justify-content-between small">
|
||||
<div class="text-muted"> </div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div th:fragment="common-scripts">
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="/static/js/scripts.js" th:src="@{/js/scripts.js}"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js" crossorigin="anonymous"></script>
|
||||
<script src="/static/assets/demo/chart-area-demo.js" th:src="@{/assets/demo/chart-area-demo.js}"></script>
|
||||
<script src="/static/assets/demo/chart-bar-demo.js" th:src="@{/assets/demo/chart-bar-demo.js}"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/simple-datatables@latest" crossorigin="anonymous"></script>
|
||||
<script src="/static/js/datatables-simple-demo.js" th:src="@{/js/datatables-simple-demo.js}"></script>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,64 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="userCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav th:replace="userCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="userCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">个人信息</h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item"><a th:href="@{/toUserMain}">主页</a></li>
|
||||
<li class="breadcrumb-item active">个人信息</li>
|
||||
</ol>
|
||||
|
||||
<div class="card mb-4">
|
||||
<table class="table table-hover">
|
||||
<tr>
|
||||
<td text-align="center">用户账号:</td>
|
||||
<td th:text="${member.memberAccount}"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">姓名:</td>
|
||||
<td th:text="${member.memberName}"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">性别:</td>
|
||||
<td th:text="${member.memberGender}"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">年龄:</td>
|
||||
<td th:text="${member.memberAge}"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">联系方式:</td>
|
||||
<td th:text="${member.memberPhone}"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">身高:</td>
|
||||
<td th:text="${member.memberHeight}"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td text-align="center">体重:</td>
|
||||
<td th:text="${member.memberWeight}"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="text-align:center;margin-bottom:15px">
|
||||
<a th:href="@{/user/toUpdateInfo}">
|
||||
<input type="button" class="btn btn-outline-primary" value="编辑个人信息">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="userCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="userCommon::common-scripts"></div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,84 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
||||
<meta name="description" content="gym-management-system"/>
|
||||
<meta name="author" content=" "/>
|
||||
<title>健身房管理系统-用户登录</title>
|
||||
<link href="/static/css/styles.css" th:href="@{css/styles.css}" rel="stylesheet"/>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/js/all.min.js"
|
||||
crossorigin="anonymous"></script>
|
||||
<script type="text/javascript">
|
||||
function checkSubmit(loginForm) {
|
||||
if (loginForm.memberAccount.value == '' && loginForm.memberPhone.value =='') {
|
||||
alert("请输入账号或手机号");
|
||||
loginForm.memberAccount.focus();
|
||||
return false;
|
||||
}
|
||||
if (loginForm.memberPassword.value == '') {
|
||||
alert("请输入密码");
|
||||
loginForm.memberPassword.focus();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="bg-primary" th:style="'background-image: url(/img/background.jpeg);background-size: 100%, 100%'">
|
||||
<div id="layoutAuthentication">
|
||||
<div id="layoutAuthentication_content">
|
||||
<main>
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-5">
|
||||
<div class="card shadow-lg border-0 rounded-lg mt-5">
|
||||
<div class="card-header"><h3 class="text-center font-weight-light my-4">用户登录</h3></div>
|
||||
<div class="card-body">
|
||||
<form th:action="@{/userLogin}" method="post" name="loginForm"
|
||||
onsubmit="return checkSubmit(this)">
|
||||
<div class="form-floating mb-3">
|
||||
<input class="form-control" id="inputAccount" name="memberAccount" type="account"
|
||||
placeholder="Account"
|
||||
onkeypress="return event.keyCode>=48&&event.keyCode<=57"/>
|
||||
<label for="inputAccount">账号</label>
|
||||
</div>
|
||||
<div class="form-floating mb-3">
|
||||
<input class="form-control" id="inputPhone" name="memberPhone"
|
||||
type="phone"
|
||||
placeholder="Phone"/>
|
||||
<label for="inputPhone">手机号</label>
|
||||
</div>
|
||||
<div class="form-floating mb-3">
|
||||
<input class="form-control" id="inputPassword" name="memberPassword"
|
||||
type="password"
|
||||
placeholder="Password"/>
|
||||
<label for="inputPassword">密码</label>
|
||||
</div>
|
||||
<div class="form-check mb-3">
|
||||
<input class="form-check-input" id="inputRememberPassword" type="checkbox"
|
||||
value=""/>
|
||||
<label class="form-check-label" for="inputRememberPassword">记住密码</label>
|
||||
</div>
|
||||
<div class="d-flex align-items-center justify-content-between mt-4 mb-0">
|
||||
<input type="submit" class="btn btn-success" value="登录">
|
||||
<a class="btn btn-primary" th:href="@{/toUserRegist}">注册</a>
|
||||
<a class="btn btn-primary" th:href="@{/}">管理员登录</a>
|
||||
</div>
|
||||
</form>
|
||||
<div th:text="${msg}" style="margin-top: 20px;text-align: center;color: red"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="/static/js/scripts.js" th:src="@{js/scripts.js}"></script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="userCommon::common-header"></head>
|
||||
<body class="sb-nav-fixed bg-primary" th:style="'background-image: url(/img/个人主题.webp);background-size: 100%, 100%'">
|
||||
<nav th:replace="userCommon::common-navbar"></nav>
|
||||
<div id="layoutSidenav">
|
||||
<div th:replace="userCommon::common-sidenav"></div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4" th:text="${member.memberName} + '您好!'"></h1>
|
||||
|
||||
<ol class="breadcrumb mb-4">
|
||||
<li class="breadcrumb-item active">主页</li>
|
||||
</ol>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
<footer th:replace="userCommon::common-footer"></footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="userCommon::common-scripts"></div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,40 @@
|
||||
package com.milotnt;
|
||||
|
||||
import com.milotnt.mapper.MemberMapper;
|
||||
import com.milotnt.pojo.Member;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@SpringBootTest
|
||||
class GymManagementSystemApplicationTests {
|
||||
|
||||
@Autowired
|
||||
JdbcTemplate jdbcTemplate;
|
||||
|
||||
@Autowired
|
||||
MemberMapper memberMapper;
|
||||
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
Long aLong = jdbcTemplate.queryForObject("select count(*) from admin", Long.class);
|
||||
System.out.println("记录总数" + aLong);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void run() throws Exception {
|
||||
List<Member> list = memberMapper.findAll();
|
||||
for (Member member : list) {
|
||||
System.out.println(member);
|
||||
}
|
||||
|
||||
Integer total = memberMapper.selectTotalCount();
|
||||
System.out.println(total);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in new issue