Compare commits

..

1 Commits
main ... xqr

Author SHA1 Message Date
pjxtpl2cb 5293eb3e78 Add MovieMapper
1 year ago

@ -0,0 +1,647 @@
/*
Navicat Premium Data Transfer
Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 80012
Source Host : localhost:3306
Source Schema : movie
Target Server Type : MySQL
Target Server Version : 80012
File Encoding : 65001
Date: 06/08/2019 14:40:26
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for cinema
-- ----------------------------
DROP TABLE IF EXISTS `cinema`;
CREATE TABLE `cinema` (
`cinema_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '影院编号',
`cinema_name` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '影院名称',
`cinema_address` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '影院地址',
PRIMARY KEY (`cinema_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of cinema
-- ----------------------------
INSERT INTO `cinema` VALUES (1, '中山奇幻电影院', '石岐区岐头新村龙凤街4号大信溢彩荟二期8楼');
INSERT INTO `cinema` VALUES (2, '金逸影城中山石歧店', '石岐区大信南路2路大信新都汇5楼');
INSERT INTO `cinema` VALUES (3, '博纳国际影城中山IMAX店', '古镇区同兴路98号利和广场购物中心四楼4009号');
INSERT INTO `cinema` VALUES (4, 'UME影城中山古镇店', '古镇区中兴大道南一号花艺广场11层A区');
INSERT INTO `cinema` VALUES (5, '中影100影城石歧店', '石岐区康华路15号恒基大厦3楼');
INSERT INTO `cinema` VALUES (6, '橙天嘉禾影城(利和店)', '石岐区中山三路16号利和广场五层');
INSERT INTO `cinema` VALUES (7, '珠影GCC影城中山杜比全景声店', '火炬高技术产业开发区火炬开发区港城路7号明珠广场二期');
INSERT INTO `cinema` VALUES (8, '期遇·翼影城(东凤店)', '东凤镇东富路81号大顺时尚荟广场B座四楼原君信大厦');
INSERT INTO `cinema` VALUES (9, '中山IM电影城南朗壹加壹店', '南朗镇岭南路62号新壹加壹4楼');
INSERT INTO `cinema` VALUES (10, '艺达国际影城(小榄杜比全景声店)', '小榄镇新华中路118号大信新都汇118广场4楼');
INSERT INTO `cinema` VALUES (11, '中影天乐电影城(海州汇海城店)', '古镇镇古镇海州市场汇海城北门电梯5楼星海湾对面');
INSERT INTO `cinema` VALUES (12, '比高电影城(中山店)', '坦洲镇坦神北路118号皇爵假日广场4楼');
INSERT INTO `cinema` VALUES (13, '大地影院(星宝时代店)', '沙溪镇乐群坎溪村星宝路6号星宝时代广场');
INSERT INTO `cinema` VALUES (14, '中影星艺影城(南朗车站店)', '南朗镇南朗车站2楼');
INSERT INTO `cinema` VALUES (15, '中影太阳城影院(张家边店)', '火炬高技术产业开发区东镇东一路23号太阳城购物中心4楼近群英华庭');
INSERT INTO `cinema` VALUES (16, '五月花电影城(棕榈彩虹商业中心店)', '西区街道棕榈彩虹商业中心1座三楼近新中医院');
INSERT INTO `cinema` VALUES (17, '高菲影城(中山万益广场店)', '板芙镇迎宾大道8号万益广场店');
INSERT INTO `cinema` VALUES (18, '金逸影城中山远洋城IMAX店', '东区街道博爱六路28号远洋广场3幢大信新都汇4楼');
-- ----------------------------
-- Table structure for comment
-- ----------------------------
DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment` (
`comment_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '评论编号',
`user_id` bigint(10) NOT NULL COMMENT '所属用户编号',
`comment_content` varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '评论内容',
`movie_id` bigint(10) NOT NULL COMMENT '所属电影编号',
`comment_time` datetime(0) NOT NULL COMMENT '评论时间',
PRIMARY KEY (`comment_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 58 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of comment
-- ----------------------------
INSERT INTO `comment` VALUES (3, 1, '不容错过', 3, '2019-07-18 15:15:22');
INSERT INTO `comment` VALUES (4, 1, '车开电车侧壁如履平地,足踢卫星返回舱一脚拯救东京,我看柯南跟吴京此生必有一战吧', 4, '2019-07-13 11:15:01');
INSERT INTO `comment` VALUES (5, 1, '看到最后一直在想真正的主角【皮球】怎么还不登场,结果果然没有让我失望。哦对,主役是皮球的话,二番就是安室的车了吧。', 5, '2019-07-13 11:15:14');
INSERT INTO `comment` VALUES (7, 1, '东南亚电影院的观众们同时发出了杠铃般的笑声4536346', 7, '2019-07-24 02:37:36');
INSERT INTO `comment` VALUES (8, 1, '谁要看你们检察院公安撕逼 我操 还我黑衣人组织', 8, '2019-07-13 11:15:51');
INSERT INTO `comment` VALUES (10, 1, '还行,没吹得那么好,有点像强化娱乐性的海底版《黑豹》...故事线极其简单打戏遍布扩成了143分钟的篇幅对路人非常友好不过这类过度炫目眼花缭乱的特效已经越看越麻木什么海底《阿凡达》吹太过了坐等《阿凡达2》的潘多拉海底世界吊打吧', 10, '2019-07-13 11:16:34');
INSERT INTO `comment` VALUES (11, 2, '我是admin欢迎大家评论哦', 1, '2019-07-17 16:59:56');
INSERT INTO `comment` VALUES (12, 2, '女王维科这是我大儿子剩下的话不用我多说了吧以后该怎么办你自己招子放亮一点好处不会少了你的。维科晓得了。zz4124', 2, '2019-07-24 02:34:15');
INSERT INTO `comment` VALUES (13, 2, '东有沉香劈山救母,西有海娃寻叉救母。绿色秋裤哲学变身,刺身放题海底大战。同母异父兄弟相残,弟妹大伯不伦之恋。温子仁携手徐锦江,亚裔之光拯救好莱坞!', 3, '2019-07-13 11:28:40');
INSERT INTO `comment` VALUES (14, 2, '2.5 “我的恋人,就是这个国家啊!”———————好久没有听到这么烂的话了', 4, '2019-07-13 11:33:21');
INSERT INTO `comment` VALUES (15, 2, '今年的柯南剧场版好无聊啊。。后面那段飙车简直夸张到无法理解故事最后的反转也很让人无语完全是多此一举没有好的剧本就别拍了好吗估计上映了也捞不到太多票房。ps:韩语版的柯南真的让人看得别扭不舒服..', 5, '2019-07-13 11:35:46');
INSERT INTO `comment` VALUES (16, 2, '渔夫和灯塔守护多数是鳏夫私下里经常养一些人鱼交欢。海洋远比陆地深远得多人们赞美阳光下的海洋却不知深夜降临海面上会冒出可怕的妖怪海底也会藏着嘲笑人类的高级文明。所以温子仁同样是一个借大热系列ip来讲自己故事的导演', 6, '2019-07-13 11:36:08');
INSERT INTO `comment` VALUES (17, 2, '海王可能要被微博营销号给奶死了。。。', 7, '2019-07-13 11:36:14');
INSERT INTO `comment` VALUES (18, 2, '当陆地人为自己的文明沾沾自喜时,亚特兰蒂斯的服装设计已经领先我们几百年。', 8, '2019-07-13 11:36:41');
INSERT INTO `comment` VALUES (19, 2, '温子仁就像一个从没拍过特效大片的暴发户。两星半,降降火。', 9, '2019-07-13 11:36:50');
INSERT INTO `comment` VALUES (20, 2, '剧本导演都有问题很多片段都似曾相识硬是凑了两个半小时真是辛苦了我的膀胱。然而剧情不够美工来凑海底阿凡达温子仁难担大任DC要超越漫威还有很长的路要走。', 10, '2019-07-13 11:36:58');
INSERT INTO `comment` VALUES (22, 3, '前面的小男孩突然问起诉是什么意思,我就在想这个故事小孩看得懂吗?动作场景依然需要帮忙按住牛顿的棺材板。', 4, '2019-07-13 11:37:43');
INSERT INTO `comment` VALUES (23, 3, '7分。温子仁确实很厉害原以为这该是系列中最无趣的一部尤其各种水下戏份。结果却难得拍的很好看。影片节奏感和大场面掌控上确实很见功力。以及温子仁还融入了很多他自己的趣味也算很有趣的细节了。整体可看性还不错就是略长了海底的光怪陆离看久了也会有些视觉疲劳。', 5, '2019-07-13 11:38:06');
INSERT INTO `comment` VALUES (24, 3, '渔夫和灯塔守护多数是鳏夫私下里经常养一些人鱼交欢。海洋远比陆地深远得多人们赞美阳光下的海洋却不知深夜降临海面上会冒出可怕的妖怪海底也会藏着嘲笑人类的高级文明。所以温子仁同样是一个借大热系列ip来讲自己故事的导演', 3, '2019-07-13 11:38:35');
INSERT INTO `comment` VALUES (25, 3, '故事老套了一点 但是昨晚我的主要任务是努力让自己不要在影院里发大水…Jason太尼玛适合这个角色了就算他能轻而易举的把我操坏我也心甘情愿地承受这份痛苦', 9, '2019-07-13 11:39:10');
INSERT INTO `comment` VALUES (26, 4, '飞机里的那一段是纪念,也是传承。钢铁侠说过,我们做的一切其实并不重要,重要的是我们选择给后代留下什么。而蜘蛛侠是托尼留给我们最好的遗产。', 10, '2019-07-13 11:39:30');
INSERT INTO `comment` VALUES (27, 4, '多年以后,面对敌人,蜘蛛侠彼得·帕克将会回想起,托尼·斯塔克带他见识超级英雄们的那个遥远的下午。 两个彩蛋比正片有意思', 7, '2019-07-13 11:39:41');
INSERT INTO `comment` VALUES (28, 4, '轻轻松松、啪啪砰砰这样的超级英雄电影不挺好温子仁真DC良心大管家——从头到尾堆特效经费才烧1.6亿欣赏不来海王徐锦江51岁的妮可真的美炸了~~~~~', 6, '2019-07-13 11:39:57');
INSERT INTO `comment` VALUES (29, 4, '天空属于卢卡斯 陆地属于杰克逊 海洋属于温子仁!!!', 2, '2019-07-13 11:40:13');
INSERT INTO `comment` VALUES (30, 4, '特效和场景都非常不错,但是剧情和主角都非常不真实,唯一的真实人类就是那个收到新衣服以后改颜色镶铆钉的生命力很旺盛的青蛙反派。', 8, '2019-07-13 11:40:20');
INSERT INTO `comment` VALUES (32, 5, '3.5失落的亚特兰蒂斯之国古远传说提供与一般超英片迥异的丰富背景DC另辟蹊径开启美妙神秘的水下世界星站兵密集温子仁不负众望且适时塞私货海沟一战jump scare其乐无穷。视效惊人音效震人抛却鸡汤亲情大场面调度甚是过瘾。妮可基德曼真·女神形象太契合。', 2, '2019-07-13 11:41:14');
INSERT INTO `comment` VALUES (33, 5, '我宣布2018就是骨科文艺复兴之年', 9, '2019-07-13 11:41:29');
INSERT INTO `comment` VALUES (38, 2, '毒液好丑啊', 1, '2019-07-21 06:40:43');
INSERT INTO `comment` VALUES (39, 4, '哇,这个毒液真的丑,但是女主真的好看!', 1, '2019-07-21 08:59:44');
INSERT INTO `comment` VALUES (40, 6, '以为是R级片结果是儿童片。汤老湿毫无邪气只有痞气把一个反派英雄演得正气凛然到闷而且毒液跟《寄生兽》一样竟然养着养着就变宠物了77', 1, '2019-07-21 09:04:27');
INSERT INTO `comment` VALUES (41, 5, '无名之辈@@', 3, '2019-07-21 09:05:03');
INSERT INTO `comment` VALUES (42, 5, '你好之华', 5, '2019-07-21 09:05:46');
INSERT INTO `comment` VALUES (43, 6, '你的眼睛像火蜥蜴是我笨拙的情话,疯子离开懦夫是她最凶的咒骂,交换亲人让我的愧疚在博格特前显形,歃血为盟使我的爱在厄里斯镜里再现。点金石可以长生,纳吉尼终会成兽,爱心咒语不能保证天长地久,万咒皆终无法阻止核爆之灾。听说魔法世界也有很多爱恨与无奈,麻瓜世界里今年我的入学信还是被寄丢。', 2, '2019-07-21 09:06:34');
INSERT INTO `comment` VALUES (44, 6, '活人办了葬礼,死人偏剩一口气。手机那头她是暗夜里绽放的花,天台边缘她是绝路尽头的桥。两个抢手机模型的憨皮,却无比清醒地看到对方的痴,何惧陷阱,哪管嫌疑。有的人是还没剥开的蛋壳,有的人是胸口夹带的铁板,有的人是虚张声势的水枪,有的人是无法愈合的伤口。几分痴憨皆是勇,几句咒骂都是爱。', 3, '2019-07-21 09:07:47');
INSERT INTO `comment` VALUES (45, 3, '毒液好恶心,快看吐了。', 1, '2019-07-21 09:08:33');
INSERT INTO `comment` VALUES (46, 6, '在岩井俊二的作品里算不上好,但也不差。里面的“时空信息传递”、“替身与错位”,看似是《情书》的反面,实则挖掘的是家庭代际的空间,引出稍显过满的群戏——每个角色都有互文关系。演员方面重点夸下金马提名的张子枫,没想到她竟是戏眼,两次落泪都是因为她。', 5, '2019-07-21 09:08:54');
INSERT INTO `comment` VALUES (47, 3, '允儿来了zz', 1, '2019-07-21 09:09:21');
INSERT INTO `comment` VALUES (48, 6, '顶顶顶', 4, '2019-07-21 09:09:23');
INSERT INTO `comment` VALUES (49, 6, '别想着拍给年轻人看,拍给人看行不行。', 15, '2019-07-21 09:10:12');
INSERT INTO `comment` VALUES (50, 6, '古天乐又缺钱建学校了', 16, '2019-07-21 09:10:38');
INSERT INTO `comment` VALUES (51, 6, '以为玩三就完结甚至不敢期待怕失望然而完全是惊喜。新元素加入很出彩Woody找到归属我的玩具系列完美结局。', 17, '2019-07-21 09:11:04');
INSERT INTO `comment` VALUES (52, 6, '有点泰国惊悚片的味道了,说实话我好几次被吓的冷汗都出来了;虽然有一些场景还是感觉逻辑不通,但至少画面和节奏不渣。本来我都不知道这部电影,但是我对象说要看,那就看了这部,现在的问题是,他不在家的时候我怎么办?', 18, '2019-07-21 09:11:39');
INSERT INTO `comment` VALUES (53, 6, '一个悲伤的故事:太阳都要毁灭,地球都要流浪了,我国的校服还是这么丑......', 20, '2019-07-21 09:12:06');
INSERT INTO `comment` VALUES (54, 6, '不拍妓女三部曲的陈果就不是陈果了。电影拍得跟开玩笑一样。就像故事的走向,演员的演法,都带着些玩世不恭。而这不是诙谐是轻佻。观众并不想看你们在大银幕开玩笑。', 21, '2019-07-21 09:12:31');
INSERT INTO `comment` VALUES (55, 3, '我的青春也全都是你呀', 26, '2019-07-21 09:19:26');
INSERT INTO `comment` VALUES (56, 1, '观后影片111', 1, '2019-07-22 11:15:03');
INSERT INTO `comment` VALUES (57, 1, '神奇个锤子', 2, '2019-07-22 11:46:01');
-- ----------------------------
-- Table structure for hall
-- ----------------------------
DROP TABLE IF EXISTS `hall`;
CREATE TABLE `hall` (
`hall_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '放映厅编号',
`hall_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '放映厅名称',
`hall_capacity` int(10) NOT NULL DEFAULT 144 COMMENT '放映厅容量 默认为144 12 x 12 ',
`cinema_id` bigint(10) NOT NULL COMMENT '所属影院编号',
PRIMARY KEY (`hall_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 52 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of hall
-- ----------------------------
INSERT INTO `hall` VALUES (1, '1号厅', 144, 1);
INSERT INTO `hall` VALUES (2, '1号厅', 144, 2);
INSERT INTO `hall` VALUES (3, '1号厅', 144, 3);
INSERT INTO `hall` VALUES (4, '1号厅', 144, 4);
INSERT INTO `hall` VALUES (5, '1号厅', 144, 5);
INSERT INTO `hall` VALUES (6, '1号厅', 144, 6);
INSERT INTO `hall` VALUES (7, '2号厅', 144, 1);
INSERT INTO `hall` VALUES (8, '2号厅', 144, 2);
INSERT INTO `hall` VALUES (9, '2号厅', 144, 3);
INSERT INTO `hall` VALUES (10, '2号厅', 144, 4);
INSERT INTO `hall` VALUES (11, '2号厅', 144, 5);
INSERT INTO `hall` VALUES (12, '2号厅', 144, 6);
INSERT INTO `hall` VALUES (13, '3号厅', 144, 1);
INSERT INTO `hall` VALUES (14, '1号厅', 144, 7);
INSERT INTO `hall` VALUES (15, '1号厅', 144, 8);
INSERT INTO `hall` VALUES (16, '1号厅', 144, 9);
INSERT INTO `hall` VALUES (17, '1号厅', 144, 10);
INSERT INTO `hall` VALUES (18, '1号厅', 144, 11);
INSERT INTO `hall` VALUES (19, '1号厅', 144, 12);
INSERT INTO `hall` VALUES (20, '1号厅', 144, 13);
INSERT INTO `hall` VALUES (21, '1号厅', 144, 14);
INSERT INTO `hall` VALUES (22, '1号厅', 144, 15);
INSERT INTO `hall` VALUES (23, '1号厅', 144, 16);
INSERT INTO `hall` VALUES (24, '1号厅', 144, 17);
INSERT INTO `hall` VALUES (25, '1号厅', 144, 18);
INSERT INTO `hall` VALUES (26, '2号厅', 144, 7);
INSERT INTO `hall` VALUES (27, '2号厅', 144, 8);
INSERT INTO `hall` VALUES (28, '2号厅', 144, 9);
INSERT INTO `hall` VALUES (29, '2号厅', 144, 10);
INSERT INTO `hall` VALUES (30, '2号厅', 144, 11);
INSERT INTO `hall` VALUES (31, '2号厅', 144, 12);
INSERT INTO `hall` VALUES (32, '2号厅', 144, 13);
INSERT INTO `hall` VALUES (33, '2号厅', 144, 14);
INSERT INTO `hall` VALUES (34, '2号厅', 144, 15);
INSERT INTO `hall` VALUES (35, '2号厅', 144, 16);
INSERT INTO `hall` VALUES (36, '2号厅', 144, 17);
INSERT INTO `hall` VALUES (37, '2号厅', 144, 18);
INSERT INTO `hall` VALUES (38, '3号厅', 144, 3);
INSERT INTO `hall` VALUES (39, '3号厅', 144, 5);
INSERT INTO `hall` VALUES (40, '3号厅', 144, 7);
INSERT INTO `hall` VALUES (41, '3号厅', 144, 10);
INSERT INTO `hall` VALUES (42, '3号厅', 144, 11);
INSERT INTO `hall` VALUES (43, '3号厅', 144, 15);
INSERT INTO `hall` VALUES (44, '3号厅', 144, 18);
INSERT INTO `hall` VALUES (45, 'IMAX厅', 144, 1);
INSERT INTO `hall` VALUES (46, 'IMAX厅', 144, 3);
INSERT INTO `hall` VALUES (47, 'IMAX厅', 144, 8);
INSERT INTO `hall` VALUES (48, 'IMAX厅', 144, 12);
INSERT INTO `hall` VALUES (49, 'IMAX厅', 144, 14);
INSERT INTO `hall` VALUES (50, 'IMAX厅', 144, 16);
INSERT INTO `hall` VALUES (51, 'IMAX厅', 144, 17);
-- ----------------------------
-- Table structure for movie
-- ----------------------------
DROP TABLE IF EXISTS `movie`;
CREATE TABLE `movie` (
`movie_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '电影编号',
`movie_cn_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '电影名称(中文)',
`movie_fg_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '电影名称(外语)',
`movie_actor` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '电影演职人员',
`movie_director` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '电影导演',
`movie_detail` varchar(350) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '电影详情',
`movie_duration` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '电影时长',
`movie_type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '电影类型',
`movie_score` float(10, 1) NULL DEFAULT 0.0 COMMENT '电影评分 默认为0',
`movie_boxOffice` float(10, 4) NULL DEFAULT 0.0000 COMMENT '电影票房 默认为0',
`movie_commentCount` bigint(10) NULL DEFAULT 0 COMMENT '电影参评人数 默认为0',
`movie_releaseDate` date NOT NULL COMMENT '电影上映时间',
`movie_country` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '电影制片地区',
`movie_picture` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '电影海报',
`movie_state` int(3) NOT NULL DEFAULT 1 COMMENT '电影状态 默认为1 1在线 0下架',
PRIMARY KEY (`movie_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 29 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of movie
-- ----------------------------
INSERT INTO `movie` VALUES (1, '毒液:致命守护者', 'Venom', '汤姆·哈迪:埃迪·布洛克/毒液,米歇尔·威廉姆斯:安妮·韦英', '鲁本·弗雷斯彻', '身为记者的埃迪·布洛克(汤姆·哈迪饰)在调查生命基金会老板卡尔顿·德雷克(里兹·阿迈德饰)的过程中,事业遭受重创,与未婚妻安妮·韦英(米歇尔·威廉姆斯饰)的关系岌岌可危,并意外被外星共生体控制,他历经挣扎对抗,最终成为拥有强大超能力,无人可挡的“毒液“', '107分钟', '动作,科幻', 7.2, 1.0209, 7, '2019-06-24', '美国', '../upload/movies/c91fef2f9e2b4d5295cd12e9abf507d9.jpg', 1);
INSERT INTO `movie` VALUES (2, '神奇动物:格林德沃之罪', 'Fantastic Beasts: The Crimes of Grindelwald', '埃迪·雷德梅恩:纽特·斯卡曼德,凯瑟琳·沃特斯顿:蒂娜‧戈德斯坦,约翰尼·德普:盖勒·格林德沃', '大卫·叶茨', '在《神奇动物在那里》第一部的结尾,纽特·斯卡曼德(埃迪·雷德梅恩 饰)协助美国魔法国会,将强大的黑巫师盖勒特·格林德沃(约翰尼·德普 饰)抓捕归案。但格林德沃不久便兑现狂言成功越狱,并开始纠集信徒,着手实现他们的邪恶目的:让纯血统的巫师成为统治阶层,镇压一切非魔法生物。为挫败格林德沃的阴谋,阿不思·邓布利多(裘德·洛 饰)向昔日的学生纽特·斯卡曼德寻求帮助。纽特欣然允诺,却没有意识到,他将踏上的会是一段充满艰险的未来征途。此时的魔法世界面临空前的分裂乱局,阶层鸿沟日益加深,爱与忠诚备受考验,至亲好友也可能反目成仇……', '134分钟', '奇幻,冒险', 7.7, 1.0339, 5, '2019-06-25', '美国', '../upload/movies/Fantastic Beasts.jpg', 1);
INSERT INTO `movie` VALUES (3, '无名之辈', 'A Cool Fish', '陈建斌:马先勇,任素汐:马嘉旗,潘斌龙:李海根', '饶晓志', '在一座山间小城中,一对低配劫匪、一个落魄的泼皮保安、一个身体残疾却性格彪悍的残毒舌女以及一系列生活在社会不同轨迹上的小人物,在一个貌似平常的日子里,因为一把丢失的老枪和一桩当天发生在城中的乌龙劫案,从而被阴差阳错地拧到一起,发生的一幕幕令人啼笑皆非的荒诞喜剧', '108分钟', '荒诞,喜剧', 9.2, 1.0315, 5, '2019-07-05', '中国大陆', '../upload/movies/A Cool Fish.jpg', 1);
INSERT INTO `movie` VALUES (4, '名侦探柯南:零的执行人', '名探偵コナン ゼロの執行人', '高山南:江户川柯南,山崎和佳奈:毛利兰,林原惠美:灰原哀', '立川让', '5月1日东京湾边的新建筑“海洋边缘”将举办首脑云集的东京峰会。然而峰会开办前一周会场发生超大规模的爆炸事件并出现了安室透的身影。疑似恐怖袭击的事件引起了警察部门的严肃调查。在警察局大型搜查会议上公安部门提交证物却发现疑犯指纹与毛利小五郎小山力也 配音)指纹吻合。作为律师的妃英理努力收集证据证明丈夫的无辜,却无力阻止毛利小五郎被收监。看到毛利兰(山崎和佳奈 配音)绝望哭泣的样子,柯南(高山南 配音)决定调查事件真相,还毛利小五郎清白。另一方面,少年侦探团的孩子们正紧密关注着无人探测器“天鹅”的回航任务。行踪诡异的安室透、惨遭陷害的毛利小五郎、错综复杂的警察部门、即将着陆的无人探测器;随着“机密任务”进入倒计时,关乎整个东京的可怕计划拉开帷幕…', '111分钟', '悬疑,冒险,动画', 8.5, 1.0256, 4, '2019-07-13', '日本', '../upload/movies/名探偵.jpg', 1);
INSERT INTO `movie` VALUES (5, '你好,之华', 'Last Letter', '周迅:袁之华,秦昊:尹川,杜江:周文涛', '岩井俊二', '有人慌张得见面,有人简单地告别。姐姐袁之南离世的那个清晨,只匆匆留下一封信和一张同学会邀请函。妹妹之华(周迅 饰)代替姐姐参加,却意外遇见年少时的倾慕对象尹川(秦昊 饰)。往日的记忆在苏醒,但再次相见,已物是人非', '114分钟', '爱情', 7.9, 1.0108, 5, '2019-07-20', '中国大陆、日本', '../upload/movies/Last Letter.jpg', 1);
INSERT INTO `movie` VALUES (6, '恐龙王', 'DINO KING', '吕佩玉:钢妈,王衡:斑大师,孙晔:八百度', '施雅雅', '陆地霸主特暴龙“斑大师”和自己的小儿子“小疙瘩”生活在一起。“小疙瘩”自幼失去了母亲,生性懦弱,严厉的“斑大师”虽然心底十分疼爱自己的孩子,但是急于让“小疙瘩”成长为新的陆地霸主,常常忍不住责骂“小疙瘩”,父子俩虽然相依为命,却始终有一些隔阂。 一天“小疙瘩”被几只邪恶的恐爪龙抓走,“斑大师”踏上漫漫的寻子之路,路途中他结识了有高度近视眼的美甲龙“八百度”,两人穿过“巨蝎峡”、走出“长颈龙绿洲”、踏上火山峡谷,经历了重重难关。而身处险境的“小疙瘩”也结识了一些新的朋友,并且开始和邪恶的恐爪龙斗智斗勇。最终父子两人终于相见,但是却不得不一起面对一个更加凶恶的史前怪物……', '95分钟', '喜剧,动画,冒险', 8.9, 1.0000, 2, '2018-12-10', '中国大陆', '../upload/movies/DINO KING.jpg', 0);
INSERT INTO `movie` VALUES (7, '冰封侠:时空行者', 'Bing Feng Xia II', '甄子丹:贺英,黄圣依:小美,王宝强:萨獒', '叶伟民', '明朝大将军贺英(甄子丹 饰)利用时空金球终于重返明朝,与锦衣卫兄弟萨獒(王宝强 饰获悉了倭寇和朝廷奸党之间足以倾覆皇权的密谋绵延400年的惊天危机一触即发。贺英也在红颜知己小美黄圣依 饰)的帮助下开始了抗倭锄奸和保护族人的战斗', '87分钟', '剧情,动作', 4.1, 1.0000, 3, '2018-09-02', '中国大陆', '../upload/movies/Bing Feng Xia II.jpg', 0);
INSERT INTO `movie` VALUES (8, '梦境之源', 'Source of Dreams', '陈志朋:徐朗,颜丹晨:李雪,方中信:梁文道', '柳珂', '货车司机李昂由于童年时代内向懦弱,颓废度日,频频做噩梦,严重影响了正常的生活,并因此不得不接受心理医生曹井润的催眠治疗,却在梦境中意外卷入一场凶杀案。睿智破案的警探成为凶手,而真正的幕后黑手仍在逍遥法外……', '90分钟', '悬疑,推理', 5.9, 1.0000, 3, '2018-11-16', '中国大陆', '../upload/movies/Source of Dreams.jpg', 0);
INSERT INTO `movie` VALUES (9, '摘金奇缘', 'Crazy Rich Asians', '吴恬敏:朱瑞秋,亨利·戈尔丁:杨尼克,杨紫琼:杨爱莉', '朱浩伟', '新加坡富二代王子杨尼克(亨利·戈尔丁饰)自豪地带着美丽大方、学识傲人的女友朱瑞秋(吴恬敏饰)回家见亲友。而这个巨富大家族对朱瑞秋的态度,与她的想像相差十万八千里远,朱瑞秋一开始以为只是跟深爱的男人轻松浪漫地度假,不料却面对排山倒海般的压力,她必须坚强应对一群有心机的情敌和反对者,但更难搞的竟然是她的准婆婆杨爱莉(杨紫琼饰),因为埃莉诺认为朱瑞秋这个现代美国女孩永远都高攀不上她们家', '120分钟', '喜剧,爱情', 6.1, 1.0000, 3, '2018-11-30', '美国', '../upload/movies/Crazy Rich Asians.jpg', 0);
INSERT INTO `movie` VALUES (10, '海王', 'Aquaman', '杰森·莫玛:海王/亚瑟·库瑞,艾梅柏·希尔德:海后/湄拉,威廉·达福:努迪斯·维科', '温子仁', '在一场狂风暴雨的海边灯塔看守人汤姆·库瑞(特穆拉·莫里森饰)救了受伤的亚特兰蒂斯女王亚特兰娜(妮可·基德曼饰)之后,他们相爱了,生下了拥有半人类、半亚特兰蒂斯人的血统亚瑟·库瑞(杰森·莫玛饰)。为了救自己的爱人和儿子亚特兰娜选择了离开。\r\n几年之后亚特兰娜被迫回到海底国家缔结政治婚姻生下儿子奥姆帕特里克·威尔森饰。奥姆长大后当上国王对陆地人类充满憎恨开始吞并海底中发展中的国家的兵力一举消灭陆地人。奥姆的未婚妻海底王国泽贝尔公主湄拉艾梅柏·希尔德饰打算阻止这场战争她到陆地找回亚瑟让他以亚特兰娜女王长子身份回亚特兰蒂斯把王位争回来而且湄拉要协助亚瑟找回能统治大海的失落的三叉戟', '143分钟', '动作,科幻', 7.6, 1.0000, 3, '2018-12-07', '美国、澳大利亚', '../upload/movies/Aquaman.jpg', 0);
INSERT INTO `movie` VALUES (15, '素人特工', 'The Rookies', '王大陆:赵风,张榕容:淼淼', '袁锦麟', '极限运动达人赵风(王大陆 饰),误打误撞闯入了一场国际犯罪交易,不得不跟随国际特工(米拉·乔沃维奇 饰)一起前往布达佩斯。在这里他与废柴刑警淼淼(张榕容 饰)、民间科学家丁山(许魏洲 饰与待业医生LV刘美彤 饰)组成一支素人特工小队。这四个特工小白和高级国际特攻米拉一起,与恐怖分子开启了一场又惊又喜的斗争。', '113分钟', '喜剧,动作,冒险', 7.2, 1.0000, 1, '2019-07-12', '中国大陆', '../upload/movies/素人特工.jpg', 1);
INSERT INTO `movie` VALUES (16, '追龙Ⅱ', 'Chasing the Dragon Ⅱ', '梁家辉:龙志强,古天乐:何天', '王晶', '悍匪龙志强(梁家辉 饰),在香港回归前,趁香港英政府不作为,而屡犯巨案,先后绑架富豪利家及雷家之长子,勒索超过二十亿元,事主怕被报复, 交赎款后都不敢报警。中国公安部极为关注,与香港警方合力,派香港警员何天(古天乐 饰)卧底潜入龙志强犯罪团伙,发现他正策划绑架澳门富豪贺不凡,最终陆港警察合力勇擒龙志强,救出贺不凡', '103分钟', '犯罪,剧情,动作', 7.9, 1.0120, 1, '2019-06-06', '中国大陆、中国香港', '../upload/movies/追龙Ⅱ.jpg', 1);
INSERT INTO `movie` VALUES (17, '玩具总动员4', 'Toy Story 4', '汤姆·汉克斯:胡迪,蒂姆·艾伦:巴斯光年', '乔什·库雷', '当邦妮将所有玩具带上房车家庭旅行时,胡迪(汤姆·汉克斯 配音)与伙伴们将共同踏上全新的冒险之旅,领略房间外面的世界有多广阔,甚至偶遇老朋友牧羊女(安妮·波茨 配音)。在多年的独自闯荡中,牧羊女已经变得热爱冒险,不再只是一个精致的洋娃娃。正当胡迪和牧羊女发现彼此对玩具的使命的意义大相径庭时,他们很快意识到更大的威胁即将到来。', '100分钟', '喜剧,动画,奇幻', 9.1, 1.0000, 1, '2019-06-21', '美国', '../upload/movies/玩具总动员4.jpg', 1);
INSERT INTO `movie` VALUES (18, '碟仙', 'Mortal Ouija', '黄奕:梦瑶,范逸臣:项天', '廉涛', '以网络直播为业的单亲妈妈梦瑶(黄奕 饰)带着上幼儿园的女儿雯雯住进了一栋便宜的学区房,然而,屋里的诡异氛围,与不时散发的奇怪恶臭,令梦瑶感到不安。某夜,雯雯竟然在梦游中,玩了前租客遗留的“碟仙”游戏。传说只要玩过的人,七日内必会被碟仙夺命!紧接着,屋内接连发生令人毛骨悚然的怪事。七日大限将至,眼看爱女危在旦夕,为了解开碟仙诅咒,夺回女儿,绝望的妈妈不惜做出了惊人的举动……', '83分钟', '恐怖,惊悚', 7.9, 1.0056, 1, '2019-06-21', '中国大陆', '../upload/movies/碟仙.jpg', 1);
INSERT INTO `movie` VALUES (19, '扫毒', 'The White Storm', '古天乐:苏建秋,刘青云:马昊天', '陈木胜', '以马昊天(刘青云 饰)为首的毒品调查科,与手下张子伟(张家辉 饰)和卧底苏建秋(古天乐 饰)在执行一次跨国的大型扫毒行动中,被毒犯巨头八面佛(卢海鹏 饰)暗中揭发反埋伏,最终全军覆没。面对生死关头,三位主角为求活存,被迫命运扭转,展开一场残酷的人生战役。', '134分钟', '剧情,犯罪', 8.9, 1.0000, 0, '2018-11-21', '中国大陆、中国香港', '../upload/movies/扫毒.jpg', 0);
INSERT INTO `movie` VALUES (20, '流浪地球', 'The Wandering Earth', '吴京:刘培强,屈楚萧:刘启', '郭帆', '近未来科学家们发现太阳急速衰老膨胀短时间内包括地球在内的整个太阳系都将被太阳所吞没。为了自救人类提出一个名为“流浪地球”的大胆计划即倾全球之力在地球表面建造上万座发动机和转向发动机推动地球离开太阳系用2500年的时间奔往另外一个栖息之地。中国航天员刘培强在儿子刘启四岁那年前往国际空间站和国际同侪肩负起领航者的重任。转眼刘启长大他带着妹妹朵朵偷偷跑到地表偷开外公韩子昂的运输车结果不仅遭到逮捕还遭遇了全球发动机停摆的事件。为了修好发动机阻止地球坠入木星全球开始展开饱和式营救连刘启他们的车也被强征加入。在与时间赛跑的过程中无数的人前仆后继奋不顾身只为延续百代子孙生存的希望…… 本片根据刘慈欣的同名小说改编。', '125分钟', '剧情,冒险,科幻', 9.2, 1.0000, 1, '2019-07-05', '中国大陆、中国香港', '../upload/movies/流浪地球.jpg', 1);
INSERT INTO `movie` VALUES (21, '九龙不败', 'The Invincible Dragon', '张晋:九龙', '陈果', '警探九龙(张晋 饰),查案方式奇异狠辣却屡建奇功,是叱咤香港警界的精英干探, 但他处事独断爆裂,又被警队视为“偏执狂人”。九龙奉命调查一桩妙龄女警连环被凶杀 案,用尽手段后不仅毫无线索, 他的警花未婚妻方宁(邓丽欣 饰)竟然也在这场抓捕行动中意外失踪。在爱与痛的边缘挣扎的九龙,突然发现女警连环遇害只是第一步,凶手还有着更加血腥的阴谋,自己和未婚妻竟然也被算计其中。此时澳门再度发生女警被杀案,这次的作案手法更加令人发指,但凶手好像故意留下了线索,是危险陷阱还是复仇曙光?九龙义无反顾出发,在好友王梦奇(刘心悠 饰)及国际拳王冼力山(安德森·席尔瓦 饰)的协助下, 与澳门警司曹志德(郑嘉颖 饰)联手展开调查。魔高一丈,道高几何!血债血偿之前,就算流干最后一滴血,也要誓不罢休。', '100分钟', '剧情,动作,犯罪', 5.7, 1.0000, 1, '2019-07-02', '中国大陆、中国香港', '../upload/movies/九龙不败.jpg', 1);
INSERT INTO `movie` VALUES (22, '阿丽塔:战斗天使', 'Alita: Battle Angel', '罗莎·萨拉查:阿丽塔,克里斯托弗·沃尔兹:戴森·艾德博士', '罗伯特·罗德里格兹', '未来26世纪科技发展人类与机械改造人共存弱肉强食是钢铁城唯一的生存法则。依德克里斯托夫·沃尔兹 饰)是钢铁城著名的改造人医生,他在垃圾场发现了一个半机械少女残躯,依德医生将其拯救后为她取名阿丽塔(罗莎·萨拉扎尔 饰)。阿丽塔虽然重获生命却失去了记忆,如一个新生儿一样对这个世界充满新鲜感。在依德医生与好友雨果(基恩·约翰逊 饰)的帮助下,她逐步适应着新生活和街头险恶。一次偶然的机会,阿丽塔发现自己竟有着惊人的战斗天赋。 一次次猎杀激发着她的觉醒,阿丽塔逐渐明白自己注定为战斗而生,为正义而战。一场揭开自己身世之谜,并打破宇宙旧秩序的史诗级冒险之旅就这样展开。', '122分钟', '动作,冒险,科幻', 9.0, 1.0000, 0, '2019-07-11', '美国', '../upload/movies/阿丽塔:战斗天使.jpg', 1);
INSERT INTO `movie` VALUES (23, 'X战警黑凤凰', 'X-Men: Dark Phoenix', '苏菲·特纳:琴·格雷/黑凤凰,詹姆斯·麦卡沃伊:查尔斯·泽维尔/X教授', '西蒙·金伯格', '在一次危及生命的太空营救行动中,琴·葛蕾(苏菲·特纳 饰被神秘的宇宙力量击中成为最强大的变种人。此后琴不仅要设法掌控日益增长、极不稳定的力量更要与自己内心的恶魔抗争她的失控让整个X战警大家庭分崩离析也让整个星球陷入毁灭的威胁之中……', '114分钟', '动作,冒险,科幻', 7.8, 1.0000, 0, '2019-06-06', '美国', '../upload/movies/X战警黑凤凰.jpg', 1);
INSERT INTO `movie` VALUES (24, '疯狂的外星人', 'Crazy Alien', '黄渤:耿浩,沈腾:大飞,马修·莫里森:扎克,汤姆·派福瑞:约翰', '宁浩', '耿浩(黄渤 饰)与一心想发大财的好兄弟大飞(沈腾 饰),经营着各自惨淡的“事业”,然而“天外来客”(徐峥 饰)的意外降临,打破了二人平静又拮据的生活。神秘的西方力量也派出“哼哈二将”在全球搜查外星人行踪。啼笑皆非的跨物种对决,别开生面的“星战”,在中国某海边城市激情上演。', '116分钟', '剧情,喜剧,科幻', 8.5, 1.0000, 0, '2019-07-10', '中国大陆、美国', '../upload/movies/疯狂的外星人.jpg', 1);
INSERT INTO `movie` VALUES (25, '八子', 'ADVANCE WAVE UPON WAVE', '刘端端:满崽,邵兵:大牛', '高希希', '上世纪30年代的赣南地区在这个被称为中国革命“红色摇篮”的地方曾经有这样一位母亲她将八个儿子先后送入红军奔赴战场前线。但战火无情兄弟中的六人陆续牺牲只剩下大哥杨大牛和最小的孩子满崽。满崽找到了大牛的部队成了哥哥麾下的普通一兵经过一场场战役的淬炼新兵满崽迅速成长为一个真正的战士。最后的战斗打响了为了掩护大部队安全撤离杨大牛带领弟弟满崽和全体战友浴血肉搏直至弹尽粮绝…… 英雄的身前,是枪林弹雨的沙场,而在英雄的身后,家乡的村庄依然宁静安详,微风吹过金黄的稻浪簌簌作响,一位年迈的母亲正在村头的小路旁孤独的守望……', '121分钟', '战争,历史,动作', 8.4, 1.0118, 0, '2019-06-30', '中国大陆', '../upload/movies/bazi.jpg', 1);
INSERT INTO `movie` VALUES (26, '我的青春都是你', 'Love The Way You Are', '宋威龙:方予可,宋芸桦:周林林,林妍柔:茹婷,黄俊捷:谢端西,金士杰:畜牧系老师', '周彤', '周林林(宋芸桦 饰)高考发挥超常进入东方大学,与同校理科状元方予可(宋威龙 饰)一同进入了最高学府。郎有情妾无意,方予可其实从幼儿园时期就心系周林林,人生若只如初见,儿时的初遇相见便立下了日久的暗恋情愫!但万人瞩目的帅哥方予可身边有天之骄女茹庭(林妍柔 饰),从小暗恋状元对周林林看不顺眼,周林林则对方予可身边的同为校园风云人物的小西学长(黄俊捷 饰)心存爱慕,修习大学恋爱秘籍,苦练恋爱通关技巧,十八般武艺七十二变法轮番上阵!四人之间情感纠葛,在校园里上演了一幕青春爱情喜剧!', '92分钟', '爱情,青春', 7.3, 1.0000, 1, '2019-06-21', '中国大陆、中国台湾', '../upload/movies/我的青春都是你.jpg', 1);
INSERT INTO `movie` VALUES (27, '银河补习班', 'Looking up', '邓超:马皓文,白宇:成年马飞', '俞白眉', '浩瀚太空,航天员意外失联,生命最大的绝境中,他回忆起自己那个最了不起的爸爸。一对父子跨越漫长的时光,守护爱和亲情,故事充满了欢乐、温暖、泪水与奇观。', '147分钟', '剧情,家庭', 9.1, 1.0200, 0, '2019-07-18', '中国大陆', '../upload/movies/银河补习班.jpg', 1);
INSERT INTO `movie` VALUES (28, '1', '2', '4:4,52:54235', '3', '5', '6', '7', 8.9, 0.0000, 0, '2019-07-02', '9', '../upload/movies/9a9351332a5149c895b57b4564dbe667.jpg', 1);
-- ----------------------------
-- Table structure for orderinfo
-- ----------------------------
DROP TABLE IF EXISTS `orderinfo`;
CREATE TABLE `orderinfo` (
`order_id` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '订单编号',
`user_id` bigint(10) NOT NULL COMMENT '所属用户编号',
`schedule_id` bigint(10) NOT NULL COMMENT '所属场次编号',
`order_position` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '电影票座位 x排x座',
`order_state` int(10) NOT NULL DEFAULT 1 COMMENT '订单状态 0:退票中 1:已支付 2:退票成功',
`order_price` int(10) NOT NULL COMMENT '订单价格',
`order_time` datetime(0) NOT NULL COMMENT '订单支付时间',
PRIMARY KEY (`order_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of orderinfo
-- ----------------------------
INSERT INTO `orderinfo` VALUES ('2019072100030210', 3, 25, '2排10座', 1, 38, '2019-07-21 07:01:36');
INSERT INTO `orderinfo` VALUES ('2019072100030306', 3, 310, '3排6座', 1, 40, '2019-07-21 14:44:34');
INSERT INTO `orderinfo` VALUES ('2019072100030307', 3, 26, '3排7座', 0, 40, '2019-07-21 07:07:09');
INSERT INTO `orderinfo` VALUES ('2019072100030409', 3, 26, '4排9座', 1, 40, '2019-07-21 07:14:37');
INSERT INTO `orderinfo` VALUES ('2019072100030508', 3, 310, '5排8座', 2, 40, '2019-07-21 14:44:35');
INSERT INTO `orderinfo` VALUES ('2019072100030603', 3, 310, '6排3座', 1, 40, '2019-07-21 14:44:35');
INSERT INTO `orderinfo` VALUES ('2019072100030606', 3, 310, '6排6座', 1, 40, '2019-07-21 14:44:35');
INSERT INTO `orderinfo` VALUES ('2019072100040606', 4, 27, '6排6座', 1, 55, '2019-07-21 08:55:39');
INSERT INTO `orderinfo` VALUES ('2019072100050506', 5, 65, '5排6座', 2, 45, '2019-07-21 08:52:01');
INSERT INTO `orderinfo` VALUES ('2019072100050507', 5, 65, '5排7座', 0, 45, '2019-07-21 08:52:01');
INSERT INTO `orderinfo` VALUES ('2019072100050509', 5, 135, '5排9座', 1, 32, '2019-07-21 08:50:26');
INSERT INTO `orderinfo` VALUES ('2019072100050510', 5, 135, '5排10座', 1, 32, '2019-07-21 08:50:27');
INSERT INTO `orderinfo` VALUES ('2019072100060502', 6, 136, '5排2座', 1, 34, '2019-07-21 08:50:23');
INSERT INTO `orderinfo` VALUES ('2019072100060503', 6, 136, '5排3座', 1, 34, '2019-07-21 08:50:23');
INSERT INTO `orderinfo` VALUES ('2019072100060504', 6, 136, '5排4座', 1, 34, '2019-07-21 08:50:23');
INSERT INTO `orderinfo` VALUES ('2019072100060509', 6, 122, '5排9座', 1, 28, '2019-07-21 08:52:24');
INSERT INTO `orderinfo` VALUES ('2019072100060602', 6, 153, '6排2座', 0, 32, '2019-07-21 08:52:16');
INSERT INTO `orderinfo` VALUES ('2019072100060603', 6, 153, '6排3座', 1, 32, '2019-07-21 08:52:16');
INSERT INTO `orderinfo` VALUES ('2019072100060604', 6, 103, '6排4座', 0, 35, '2019-07-21 08:53:12');
INSERT INTO `orderinfo` VALUES ('2019072100060605', 6, 103, '6排5座', 1, 35, '2019-07-21 08:53:12');
INSERT INTO `orderinfo` VALUES ('2019072100060606', 6, 103, '6排6座', 1, 35, '2019-07-21 08:53:12');
INSERT INTO `orderinfo` VALUES ('2019072100060703', 6, 65, '7排3座', 1, 45, '2019-07-21 08:50:45');
INSERT INTO `orderinfo` VALUES ('2019072100060704', 6, 65, '7排4座', 1, 45, '2019-07-21 08:50:45');
INSERT INTO `orderinfo` VALUES ('2019072100060705', 6, 65, '7排5座', 1, 45, '2019-07-21 08:50:45');
INSERT INTO `orderinfo` VALUES ('2019072100060706', 6, 65, '7排6座', 1, 45, '2019-07-21 08:50:45');
INSERT INTO `orderinfo` VALUES ('2019072100060709', 6, 122, '7排9座', 0, 28, '2019-07-21 08:52:25');
INSERT INTO `orderinfo` VALUES ('2019072100060803', 6, 158, '8排3座', 0, 35, '2019-07-21 08:51:30');
INSERT INTO `orderinfo` VALUES ('2019072100060804', 6, 158, '8排4座', 0, 35, '2019-07-21 08:51:31');
INSERT INTO `orderinfo` VALUES ('2019072200010507', 1, 232, '5排7座', 1, 30, '2019-07-22 11:09:46');
INSERT INTO `orderinfo` VALUES ('2019072200010608', 1, 232, '6排8座', 1, 30, '2019-07-22 11:09:46');
INSERT INTO `orderinfo` VALUES ('2019072200010707', 1, 232, '7排7座', 1, 30, '2019-07-22 11:09:46');
INSERT INTO `orderinfo` VALUES ('2019072200010808', 1, 232, '8排8座', 1, 30, '2019-07-22 11:09:46');
INSERT INTO `orderinfo` VALUES ('2019072200010910', 1, 136, '9排10座', 0, 34, '2019-07-21 17:00:56');
INSERT INTO `orderinfo` VALUES ('2019072200010911', 1, 136, '9排11座', 1, 34, '2019-07-21 17:00:56');
INSERT INTO `orderinfo` VALUES ('2019072200010912', 1, 160, '9排12座', 1, 35, '2019-07-22 11:46:52');
INSERT INTO `orderinfo` VALUES ('2019072200020508', 2, 83, '5排8座', 0, 44, '2019-07-22 11:32:49');
INSERT INTO `orderinfo` VALUES ('2019072200040106', 4, 94, '1排6座', 1, 54, '2019-07-22 01:10:02');
INSERT INTO `orderinfo` VALUES ('2019072200040107', 4, 94, '1排7座', 1, 54, '2019-07-22 01:10:02');
INSERT INTO `orderinfo` VALUES ('2019072200040408', 4, 39, '4排8座', 1, 48, '2019-07-22 03:51:27');
INSERT INTO `orderinfo` VALUES ('2019072200040409', 4, 135, '4排9座', 1, 32, '2019-07-22 01:11:16');
INSERT INTO `orderinfo` VALUES ('2019072200040410', 4, 135, '4排10座', 1, 32, '2019-07-22 01:11:16');
INSERT INTO `orderinfo` VALUES ('2019072200040508', 4, 135, '5排8座', 1, 32, '2019-07-22 01:11:16');
INSERT INTO `orderinfo` VALUES ('2019072200040511', 4, 135, '5排11座', 1, 32, '2019-07-22 01:11:16');
INSERT INTO `orderinfo` VALUES ('2019072200040609', 4, 135, '6排9座', 1, 32, '2019-07-22 01:11:45');
INSERT INTO `orderinfo` VALUES ('2019072200040610', 4, 135, '6排10座', 1, 32, '2019-07-22 01:11:45');
INSERT INTO `orderinfo` VALUES ('2019072400010310', 1, 27, '3排10座', 1, 55, '2019-07-24 02:30:42');
INSERT INTO `orderinfo` VALUES ('2019072400010311', 1, 27, '3排11座', 1, 55, '2019-07-24 02:30:43');
-- ----------------------------
-- Table structure for schedule
-- ----------------------------
DROP TABLE IF EXISTS `schedule`;
CREATE TABLE `schedule` (
`schedule_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '场次编号',
`hall_id` bigint(10) NOT NULL COMMENT '所属放映厅编号',
`movie_id` bigint(10) NOT NULL COMMENT '所属电影编号',
`schedule_startTime` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '电影放映时间',
`schedule_price` int(10) NOT NULL COMMENT '场次价格',
`schedule_remain` int(10) NOT NULL COMMENT '剩余座位数 默认=hall_capacity',
`schedule_state` int(10) NOT NULL DEFAULT 1 COMMENT '场次状态 默认1 1上映中 0下架',
PRIMARY KEY (`schedule_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 315 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of schedule
-- ----------------------------
INSERT INTO `schedule` VALUES (25, 1, 25, '2019-07-21 17:30', 38, 144, 1);
INSERT INTO `schedule` VALUES (26, 7, 25, '2019-07-22 20:00', 40, 143, 1);
INSERT INTO `schedule` VALUES (27, 7, 1, '2019-07-21 19:10', 55, 141, 0);
INSERT INTO `schedule` VALUES (28, 8, 25, '2019-07-23 17:00', 48, 144, 1);
INSERT INTO `schedule` VALUES (29, 1, 20, '2019-07-21 00:00', 38, 144, 1);
INSERT INTO `schedule` VALUES (30, 13, 1, '2019-07-22 19:20', 55, 144, 1);
INSERT INTO `schedule` VALUES (31, 7, 20, '2019-07-21 00:00', 38, 144, 1);
INSERT INTO `schedule` VALUES (32, 13, 20, '2019-07-21 00:00', 38, 144, 1);
INSERT INTO `schedule` VALUES (33, 1, 1, '2019-07-23 20:00', 55, 144, 1);
INSERT INTO `schedule` VALUES (34, 45, 20, '2019-07-22 20:30', 58, 144, 1);
INSERT INTO `schedule` VALUES (35, 8, 25, '2019-07-24 00:00', 39, 144, 1);
INSERT INTO `schedule` VALUES (36, 7, 1, '2019-07-24 20:10', 55, 144, 1);
INSERT INTO `schedule` VALUES (37, 7, 20, '2019-07-22 15:30', 38, 144, 1);
INSERT INTO `schedule` VALUES (38, 8, 20, '2019-07-23 14:20', 39, 144, 1);
INSERT INTO `schedule` VALUES (39, 2, 1, '2019-07-21 10:10', 48, 143, 1);
INSERT INTO `schedule` VALUES (40, 2, 1, '2019-07-22 10:10', 45, 144, 1);
INSERT INTO `schedule` VALUES (41, 8, 20, '2019-07-23 21:45', 39, 144, 1);
INSERT INTO `schedule` VALUES (42, 11, 25, '2019-07-23 12:30', 28, 144, 1);
INSERT INTO `schedule` VALUES (43, 8, 20, '2019-07-23 10:40', 39, 144, 1);
INSERT INTO `schedule` VALUES (44, 29, 25, '2019-07-25 00:00', 40, 144, 1);
INSERT INTO `schedule` VALUES (45, 8, 1, '2019-07-23 10:20', 45, 144, 1);
INSERT INTO `schedule` VALUES (46, 2, 20, '2019-07-22 19:30', 39, 144, 1);
INSERT INTO `schedule` VALUES (47, 8, 1, '2019-07-24 10:20', 45, 144, 1);
INSERT INTO `schedule` VALUES (48, 37, 25, '2019-07-23 20:00', 38, 144, 0);
INSERT INTO `schedule` VALUES (49, 45, 20, '2019-07-23 20:20', 58, 144, 1);
INSERT INTO `schedule` VALUES (50, 7, 20, '2019-07-23 16:20', 38, 144, 1);
INSERT INTO `schedule` VALUES (51, 46, 20, '2019-07-23 15:15', 68, 144, 1);
INSERT INTO `schedule` VALUES (52, 3, 1, '2019-07-23 10:00', 45, 144, 1);
INSERT INTO `schedule` VALUES (53, 14, 20, '2019-07-24 13:00', 39, 144, 1);
INSERT INTO `schedule` VALUES (54, 46, 1, '2019-07-23 19:20', 67, 144, 1);
INSERT INTO `schedule` VALUES (55, 29, 20, '2019-07-24 17:10', 38, 144, 1);
INSERT INTO `schedule` VALUES (56, 9, 1, '2019-07-24 09:40', 45, 144, 1);
INSERT INTO `schedule` VALUES (57, 46, 1, '2019-07-24 19:30', 66, 144, 1);
INSERT INTO `schedule` VALUES (58, 32, 20, '2019-07-23 09:30', 36, 144, 1);
INSERT INTO `schedule` VALUES (59, 24, 3, '2019-07-25 13:35', 45, 144, 1);
INSERT INTO `schedule` VALUES (60, 49, 25, '2019-07-24 10:00', 50, 144, 1);
INSERT INTO `schedule` VALUES (61, 37, 20, '2019-07-23 22:00', 38, 144, 1);
INSERT INTO `schedule` VALUES (62, 5, 1, '2019-07-23 10:15', 43, 144, 1);
INSERT INTO `schedule` VALUES (63, 51, 3, '2019-07-23 17:05', 35, 144, 1);
INSERT INTO `schedule` VALUES (64, 36, 25, '2019-07-23 19:30', 38, 144, 1);
INSERT INTO `schedule` VALUES (65, 35, 3, '2019-07-24 19:05', 45, 138, 1);
INSERT INTO `schedule` VALUES (66, 29, 20, '2019-07-24 07:15', 38, 144, 1);
INSERT INTO `schedule` VALUES (67, 4, 26, '2019-07-23 20:00', 28, 144, 1);
INSERT INTO `schedule` VALUES (68, 16, 3, '2019-07-23 18:05', 40, 144, 1);
INSERT INTO `schedule` VALUES (69, 10, 20, '2019-07-24 13:35', 38, 144, 1);
INSERT INTO `schedule` VALUES (70, 33, 26, '2019-07-24 21:00', 22, 144, 1);
INSERT INTO `schedule` VALUES (71, 4, 1, '2019-07-23 09:45', 43, 144, 1);
INSERT INTO `schedule` VALUES (72, 10, 1, '2019-07-23 19:20', 43, 144, 1);
INSERT INTO `schedule` VALUES (73, 24, 3, '2019-07-25 21:00', 45, 144, 1);
INSERT INTO `schedule` VALUES (74, 11, 21, '2019-07-23 14:15', 36, 144, 1);
INSERT INTO `schedule` VALUES (75, 23, 26, '2019-07-24 13:00', 25, 144, 1);
INSERT INTO `schedule` VALUES (76, 4, 1, '2019-07-24 09:50', 43, 144, 1);
INSERT INTO `schedule` VALUES (77, 31, 3, '2019-07-26 12:45', 35, 144, 1);
INSERT INTO `schedule` VALUES (78, 37, 26, '2019-07-24 19:05', 38, 144, 1);
INSERT INTO `schedule` VALUES (79, 11, 21, '2019-07-23 15:25', 36, 144, 1);
INSERT INTO `schedule` VALUES (80, 10, 1, '2019-07-24 20:00', 43, 144, 1);
INSERT INTO `schedule` VALUES (81, 10, 26, '2019-07-23 22:05', 28, 144, 1);
INSERT INTO `schedule` VALUES (82, 39, 21, '2019-07-23 20:05', 36, 144, 1);
INSERT INTO `schedule` VALUES (83, 11, 1, '2019-07-23 21:10', 44, 143, 1);
INSERT INTO `schedule` VALUES (84, 5, 21, '2019-07-24 10:20', 36, 144, 1);
INSERT INTO `schedule` VALUES (85, 24, 26, '2019-07-24 17:30', 25, 144, 1);
INSERT INTO `schedule` VALUES (86, 31, 26, '2019-07-22 19:00', 28, 144, 1);
INSERT INTO `schedule` VALUES (87, 5, 1, '2019-07-24 09:30', 43, 144, 1);
INSERT INTO `schedule` VALUES (88, 11, 21, '2019-07-24 22:15', 36, 144, 1);
INSERT INTO `schedule` VALUES (89, 17, 26, '2019-07-22 00:00', 29, 144, 1);
INSERT INTO `schedule` VALUES (90, 35, 3, '2019-07-24 18:40', 34, 144, 1);
INSERT INTO `schedule` VALUES (91, 39, 1, '2019-07-24 20:25', 44, 144, 1);
INSERT INTO `schedule` VALUES (92, 12, 21, '2019-07-23 14:10', 29, 144, 1);
INSERT INTO `schedule` VALUES (93, 12, 26, '2019-07-23 22:00', 29, 144, 1);
INSERT INTO `schedule` VALUES (94, 24, 5, '2019-07-21 19:55', 54, 142, 1);
INSERT INTO `schedule` VALUES (95, 12, 21, '2019-07-23 16:05', 29, 144, 1);
INSERT INTO `schedule` VALUES (96, 6, 1, '2019-07-23 10:20', 46, 144, 1);
INSERT INTO `schedule` VALUES (97, 8, 26, '2019-07-23 10:00', 25, 144, 1);
INSERT INTO `schedule` VALUES (98, 47, 24, '2019-07-28 14:45', 33, 144, 1);
INSERT INTO `schedule` VALUES (99, 12, 21, '2019-07-24 10:00', 29, 144, 1);
INSERT INTO `schedule` VALUES (100, 6, 1, '2019-07-23 21:10', 46, 144, 1);
INSERT INTO `schedule` VALUES (101, 29, 26, '2019-07-23 20:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (102, 12, 1, '2019-07-24 10:10', 46, 144, 1);
INSERT INTO `schedule` VALUES (103, 30, 21, '2019-07-23 13:10', 35, 141, 1);
INSERT INTO `schedule` VALUES (104, 12, 1, '2019-07-24 20:40', 46, 144, 1);
INSERT INTO `schedule` VALUES (105, 30, 21, '2019-07-23 21:05', 35, 144, 1);
INSERT INTO `schedule` VALUES (106, 25, 26, '2019-07-24 23:00', 39, 144, 1);
INSERT INTO `schedule` VALUES (107, 28, 21, '2019-07-24 16:05', 38, 144, 1);
INSERT INTO `schedule` VALUES (108, 14, 1, '2019-07-23 19:20', 44, 144, 1);
INSERT INTO `schedule` VALUES (109, 1, 15, '2019-07-23 16:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (110, 26, 1, '2019-07-24 10:20', 44, 144, 1);
INSERT INTO `schedule` VALUES (111, 51, 22, '2019-07-21 00:00', 59, 144, 1);
INSERT INTO `schedule` VALUES (112, 40, 1, '2019-07-24 22:00', 44, 144, 1);
INSERT INTO `schedule` VALUES (113, 4, 18, '2019-07-25 08:05', 65, 144, 1);
INSERT INTO `schedule` VALUES (114, 36, 22, '2019-07-21 00:00', 58, 144, 1);
INSERT INTO `schedule` VALUES (115, 34, 22, '2019-07-23 13:15', 49, 144, 1);
INSERT INTO `schedule` VALUES (116, 31, 22, '2019-07-23 13:20', 49, 144, 1);
INSERT INTO `schedule` VALUES (117, 16, 17, '2019-07-24 09:10', 35, 144, 1);
INSERT INTO `schedule` VALUES (118, 15, 1, '2019-07-23 20:30', 43, 144, 1);
INSERT INTO `schedule` VALUES (119, 27, 1, '2019-07-24 09:50', 43, 144, 1);
INSERT INTO `schedule` VALUES (120, 47, 18, '2019-07-25 16:30', 54, 144, 1);
INSERT INTO `schedule` VALUES (121, 47, 1, '2019-07-24 20:40', 56, 144, 1);
INSERT INTO `schedule` VALUES (122, 43, 18, '2019-07-24 04:25', 28, 142, 1);
INSERT INTO `schedule` VALUES (123, 1, 15, '2019-07-21 15:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (124, 16, 1, '2019-07-23 21:20', 41, 144, 1);
INSERT INTO `schedule` VALUES (125, 34, 18, '2019-07-21 17:15', 34, 144, 1);
INSERT INTO `schedule` VALUES (126, 7, 15, '2019-07-22 16:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (127, 28, 1, '2019-07-24 20:30', 41, 144, 1);
INSERT INTO `schedule` VALUES (128, 17, 1, '2019-07-23 14:15', 42, 144, 1);
INSERT INTO `schedule` VALUES (129, 1, 15, '2019-07-21 20:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (130, 29, 1, '2019-07-24 09:00', 42, 144, 1);
INSERT INTO `schedule` VALUES (131, 7, 15, '2019-07-22 10:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (132, 36, 22, '2019-07-24 16:20', 48, 144, 1);
INSERT INTO `schedule` VALUES (133, 3, 16, '2019-07-24 10:10', 45, 144, 1);
INSERT INTO `schedule` VALUES (134, 13, 15, '2019-07-23 10:30', 30, 144, 1);
INSERT INTO `schedule` VALUES (135, 25, 4, '2019-07-21 05:25', 32, 136, 1);
INSERT INTO `schedule` VALUES (136, 1, 2, '2019-07-23 10:05', 34, 139, 1);
INSERT INTO `schedule` VALUES (137, 13, 15, '2019-07-23 15:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (138, 7, 2, '2019-07-23 22:15', 34, 144, 1);
INSERT INTO `schedule` VALUES (139, 48, 22, '2019-07-24 15:25', 58, 144, 1);
INSERT INTO `schedule` VALUES (140, 49, 23, '2019-07-21 15:15', 42, 144, 1);
INSERT INTO `schedule` VALUES (141, 13, 15, '2019-07-24 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (142, 30, 22, '2019-07-23 16:15', 48, 144, 1);
INSERT INTO `schedule` VALUES (143, 7, 15, '2019-07-24 18:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (144, 13, 2, '2019-07-24 17:10', 34, 144, 1);
INSERT INTO `schedule` VALUES (145, 7, 15, '2019-07-24 15:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (146, 25, 2, '2019-07-23 19:30', 33, 144, 1);
INSERT INTO `schedule` VALUES (147, 40, 23, '2019-07-23 10:30', 39, 144, 1);
INSERT INTO `schedule` VALUES (148, 37, 2, '2019-07-24 10:05', 34, 144, 1);
INSERT INTO `schedule` VALUES (149, 26, 23, '2019-07-23 20:15', 39, 144, 1);
INSERT INTO `schedule` VALUES (150, 44, 2, '2019-07-24 19:10', 34, 144, 1);
INSERT INTO `schedule` VALUES (151, 24, 2, '2019-07-22 00:00', 32, 144, 1);
INSERT INTO `schedule` VALUES (152, 32, 23, '2019-07-23 13:30', 40, 144, 1);
INSERT INTO `schedule` VALUES (153, 36, 2, '2019-07-23 00:00', 32, 142, 1);
INSERT INTO `schedule` VALUES (154, 51, 2, '2019-07-24 00:00', 32, 144, 1);
INSERT INTO `schedule` VALUES (155, 10, 23, '2019-07-23 13:20', 39, 144, 1);
INSERT INTO `schedule` VALUES (156, 2, 15, '2019-07-21 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (157, 33, 23, '2019-07-23 19:15', 38, 144, 1);
INSERT INTO `schedule` VALUES (158, 23, 2, '2019-07-23 09:00', 35, 142, 1);
INSERT INTO `schedule` VALUES (159, 2, 15, '2019-07-21 16:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (160, 35, 2, '2019-07-24 21:00', 35, 143, 1);
INSERT INTO `schedule` VALUES (161, 8, 15, '2019-07-21 10:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (162, 50, 2, '2019-07-25 20:05', 45, 144, 1);
INSERT INTO `schedule` VALUES (163, 8, 15, '2019-07-21 17:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (164, 22, 2, '2019-07-22 00:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (165, 27, 23, '2019-07-23 16:15', 38, 144, 1);
INSERT INTO `schedule` VALUES (166, 2, 15, '2019-07-21 20:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (167, 34, 2, '2019-07-23 00:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (168, 43, 2, '2019-07-24 00:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (169, 47, 24, '2019-07-23 16:10', 48, 144, 1);
INSERT INTO `schedule` VALUES (170, 2, 15, '2019-07-23 17:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (171, 28, 24, '2019-07-23 15:05', 38, 144, 1);
INSERT INTO `schedule` VALUES (172, 8, 15, '2019-07-23 10:30', 30, 144, 1);
INSERT INTO `schedule` VALUES (173, 29, 24, '2019-07-21 15:20', 38, 144, 1);
INSERT INTO `schedule` VALUES (174, 20, 3, '2019-07-23 09:00', 27, 144, 1);
INSERT INTO `schedule` VALUES (175, 8, 15, '2019-07-24 15:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (176, 32, 3, '2019-07-24 12:15', 27, 144, 1);
INSERT INTO `schedule` VALUES (177, 34, 24, '2019-07-24 10:20', 38, 144, 1);
INSERT INTO `schedule` VALUES (178, 8, 15, '2019-07-24 13:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (179, 4, 3, '2019-07-23 15:00', 27, 144, 1);
INSERT INTO `schedule` VALUES (180, 8, 15, '2019-07-24 10:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (181, 10, 3, '2019-07-24 17:00', 27, 144, 1);
INSERT INTO `schedule` VALUES (182, 3, 15, '2019-07-22 09:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (183, 42, 24, '2019-07-24 13:35', 38, 144, 1);
INSERT INTO `schedule` VALUES (184, 25, 3, '2019-07-22 08:00', 26, 144, 1);
INSERT INTO `schedule` VALUES (185, 3, 15, '2019-07-22 17:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (186, 9, 15, '2019-07-22 16:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (187, 38, 15, '2019-07-24 15:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (188, 37, 3, '2019-07-24 14:05', 26, 144, 1);
INSERT INTO `schedule` VALUES (189, 35, 24, '2019-07-24 16:15', 38, 144, 1);
INSERT INTO `schedule` VALUES (190, 38, 15, '2019-07-25 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (191, 44, 3, '2019-07-25 09:00', 26, 144, 1);
INSERT INTO `schedule` VALUES (192, 3, 15, '2019-07-25 14:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (193, 1, 4, '2019-07-22 23:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (194, 7, 4, '2019-07-23 23:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (195, 35, 24, '2019-07-24 16:20', 38, 144, 1);
INSERT INTO `schedule` VALUES (196, 4, 15, '2019-07-23 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (197, 13, 4, '2019-07-24 23:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (198, 10, 15, '2019-07-23 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (199, 45, 4, '2019-07-25 23:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (200, 10, 15, '2019-07-24 17:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (201, 20, 4, '2019-07-23 23:00', 32, 144, 1);
INSERT INTO `schedule` VALUES (202, 10, 15, '2019-07-24 10:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (203, 20, 4, '2019-07-24 23:00', 32, 144, 1);
INSERT INTO `schedule` VALUES (204, 5, 15, '2019-07-23 11:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (205, 4, 4, '2019-07-23 00:00', 32, 144, 1);
INSERT INTO `schedule` VALUES (206, 10, 4, '2019-07-24 00:00', 32, 144, 1);
INSERT INTO `schedule` VALUES (207, 11, 15, '2019-07-23 14:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (208, 16, 21, '2019-07-23 13:25', 38, 144, 1);
INSERT INTO `schedule` VALUES (209, 39, 15, '2019-07-23 16:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (210, 5, 15, '2019-07-24 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (211, 11, 15, '2019-07-24 10:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (212, 37, 4, '2019-07-23 15:05', 32, 144, 1);
INSERT INTO `schedule` VALUES (213, 22, 22, '2019-07-23 16:05', 49, 144, 1);
INSERT INTO `schedule` VALUES (214, 44, 4, '2019-07-24 14:10', 32, 144, 1);
INSERT INTO `schedule` VALUES (215, 6, 15, '2019-07-23 10:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (216, 24, 5, '2019-07-23 04:00', 34, 144, 1);
INSERT INTO `schedule` VALUES (217, 12, 15, '2019-07-23 15:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (218, 12, 15, '2019-07-24 09:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (219, 42, 22, '2019-07-24 17:00', 48, 144, 1);
INSERT INTO `schedule` VALUES (220, 6, 15, '2019-07-24 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (221, 1, 16, '2019-07-23 10:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (222, 36, 5, '2019-07-21 14:54', 34, 144, 1);
INSERT INTO `schedule` VALUES (223, 13, 16, '2019-07-23 14:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (224, 20, 23, '2019-07-24 18:45', 40, 144, 1);
INSERT INTO `schedule` VALUES (225, 15, 5, '2019-07-23 04:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (226, 7, 16, '2019-07-24 10:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (227, 42, 5, '2019-07-24 04:00', 34, 144, 1);
INSERT INTO `schedule` VALUES (228, 7, 16, '2019-07-24 15:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (229, 4, 23, '2019-07-24 14:15', 39, 144, 1);
INSERT INTO `schedule` VALUES (230, 27, 5, '2019-07-23 05:05', 33, 144, 1);
INSERT INTO `schedule` VALUES (231, 13, 15, '2019-07-24 18:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (232, 2, 16, '2019-07-23 11:00', 30, 140, 1);
INSERT INTO `schedule` VALUES (233, 47, 23, '2019-07-23 20:15', 58, 144, 1);
INSERT INTO `schedule` VALUES (234, 2, 16, '2019-07-23 16:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (235, 2, 16, '2019-07-24 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (236, 15, 23, '2019-07-24 20:15', 38, 144, 1);
INSERT INTO `schedule` VALUES (237, 8, 16, '2019-07-24 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (238, 11, 5, '2019-07-24 14:57', 32, 144, 1);
INSERT INTO `schedule` VALUES (239, 2, 16, '2019-07-24 17:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (240, 27, 5, '2019-07-21 14:58', 33, 144, 1);
INSERT INTO `schedule` VALUES (241, 41, 5, '2019-07-24 07:00', 32, 144, 1);
INSERT INTO `schedule` VALUES (242, 16, 24, '2019-07-23 20:05', 38, 144, 1);
INSERT INTO `schedule` VALUES (243, 3, 16, '2019-07-23 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (244, 22, 5, '2019-07-22 05:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (245, 38, 16, '2019-07-23 19:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (246, 34, 5, '2019-07-23 05:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (247, 9, 15, '2019-07-24 10:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (248, 41, 24, '2019-07-23 12:00', 38, 144, 1);
INSERT INTO `schedule` VALUES (249, 43, 5, '2019-07-24 05:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (250, 9, 16, '2019-07-24 14:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (251, 17, 24, '2019-07-24 20:15', 38, 144, 1);
INSERT INTO `schedule` VALUES (252, 4, 16, '2019-07-23 11:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (253, 10, 16, '2019-07-24 14:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (254, 30, 24, '2019-07-23 14:20', 38, 144, 1);
INSERT INTO `schedule` VALUES (255, 5, 16, '2019-07-23 10:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (256, 22, 24, '2019-07-23 14:20', 38, 144, 1);
INSERT INTO `schedule` VALUES (257, 5, 16, '2019-07-23 19:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (258, 5, 16, '2019-07-24 13:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (259, 39, 16, '2019-07-24 15:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (260, 6, 16, '2019-07-23 00:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (261, 12, 16, '2019-07-24 16:00', 20, 144, 1);
INSERT INTO `schedule` VALUES (262, 1, 17, '2019-07-23 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (263, 7, 17, '2019-07-23 11:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (264, 13, 17, '2019-07-24 07:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (265, 7, 17, '2019-07-24 17:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (266, 2, 17, '2019-07-23 10:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (267, 8, 17, '2019-07-23 15:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (268, 2, 17, '2019-07-24 09:20', 30, 144, 1);
INSERT INTO `schedule` VALUES (269, 8, 17, '2019-07-24 15:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (270, 3, 17, '2019-07-23 17:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (271, 9, 17, '2019-07-23 17:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (272, 38, 17, '2019-07-24 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (273, 4, 17, '2019-07-23 14:00', 20, 144, 1);
INSERT INTO `schedule` VALUES (274, 10, 17, '2019-07-24 14:05', 20, 144, 1);
INSERT INTO `schedule` VALUES (275, 11, 17, '2019-07-23 10:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (276, 11, 17, '2019-07-24 17:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (277, 12, 17, '2019-07-23 14:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (278, 12, 17, '2019-07-24 11:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (279, 6, 17, '2019-07-23 09:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (280, 39, 17, '2019-07-23 21:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (281, 39, 17, '2019-07-24 00:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (282, 38, 17, '2019-07-24 08:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (283, 1, 18, '2019-07-23 08:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (284, 7, 18, '2019-07-23 12:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (285, 13, 18, '2019-07-24 14:00', 30, 144, 1);
INSERT INTO `schedule` VALUES (286, 1, 18, '2019-07-24 16:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (287, 2, 18, '2019-07-23 17:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (288, 2, 18, '2019-07-23 09:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (289, 2, 18, '2019-07-23 14:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (290, 2, 18, '2019-07-24 10:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (291, 2, 18, '2019-07-24 13:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (292, 3, 18, '2019-07-23 12:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (293, 9, 18, '2019-07-23 20:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (294, 3, 18, '2019-07-23 15:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (295, 9, 18, '2019-07-24 10:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (296, 9, 18, '2019-07-24 11:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (297, 38, 18, '2019-07-24 21:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (298, 10, 18, '2019-07-23 08:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (299, 4, 18, '2019-07-23 11:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (300, 4, 18, '2019-07-24 14:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (301, 10, 18, '2019-07-24 21:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (302, 5, 18, '2019-07-23 08:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (303, 11, 18, '2019-07-24 11:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (304, 39, 18, '2019-07-24 15:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (305, 6, 18, '2019-07-23 10:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (306, 12, 18, '2019-07-24 12:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (307, 12, 18, '2019-07-24 18:00', 33, 144, 1);
INSERT INTO `schedule` VALUES (308, 1, 27, '2019-07-23 00:00', 45, 144, 1);
INSERT INTO `schedule` VALUES (309, 7, 27, '2019-07-24 19:00', 45, 144, 1);
INSERT INTO `schedule` VALUES (310, 8, 27, '2019-07-23 20:00', 40, 140, 1);
INSERT INTO `schedule` VALUES (311, 4, 27, '2019-07-23 16:00', 49, 144, 1);
INSERT INTO `schedule` VALUES (312, 11, 27, '2019-07-24 19:15', 45, 144, 1);
INSERT INTO `schedule` VALUES (313, 8, 27, '2019-07-24 15:00', 35, 144, 1);
INSERT INTO `schedule` VALUES (314, 8, 20, '2019-07-18 04:04', 45, 144, 1);
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`user_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '会员编号',
`user_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '会员账号',
`user_pwd` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '会员密码',
`user_email` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '会员邮箱',
`user_role` int(10) NOT NULL DEFAULT 0 COMMENT '会员权限默认为0\r\n0普通会员 1管理员',
`user_headImg` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '会员头像',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 29 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'user', 'user', '33734872621@qq.com', 0, '../upload/head/f6337987771546f9a143fc5206f047f4.jpg');
INSERT INTO `user` VALUES (2, 'admin', 'admin', '3456872621@qq.com', 1, '../upload/head/dc56255b1e4f4ad4b0a76a8eb0fc7f45.jpg');
INSERT INTO `user` VALUES (3, 'wxj', 'wxj', '937872111@126.com', 1, '../upload/head/de9d930c96e240bc9f4f91b914e5dddb.jpg');
INSERT INTO `user` VALUES (4, 'lpf', 'lpf', '23546211543@qq.com', 0, '../upload/head/85c888cf36d649d6aaea58f19cc8c143.jpg');
INSERT INTO `user` VALUES (5, 'wzw', 'wzw', '2154698421@126.com', 0, '../upload/head/bdc1cf2d9b9d4d5ca5d7a34f2ebfc5b3.jpg');
INSERT INTO `user` VALUES (6, 'hzw', 'hzw', 'a487953215@163.com', 0, '../upload/head/demo.jpg');
INSERT INTO `user` VALUES (7, 'lsw', 'lsw', '3215644123@qq.com', 0, '../upload/head/84c69b60d91e4c079e249a6cd09ef91c.jpg');
INSERT INTO `user` VALUES (8, 'bg12356484', '6484', '910050724@qq.com', 0, '../upload/head/demo.jpg');
INSERT INTO `user` VALUES (9, 'ao13546954', '6954', 'hsw236413512@163.com', 0, NULL);
INSERT INTO `user` VALUES (19, 'jd15154478', '4478', '5648132142@163.com', 0, '../upload/head/dc56255b1e4f4ad4b0a76a8eb0fc7f45.jpg');
INSERT INTO `user` VALUES (20, 'sn46845411', '5411', 'gs15648231@126.com', 0, '../upload/head/84c69b60d91e4c079e249a6cd09ef91c.jpg');
INSERT INTO `user` VALUES (21, 'gs12314864', '4864', '2154678122@qq.com', 0, '../upload/head/84c69b60d91e4c079e249a6cd09ef91c.jpg');
INSERT INTO `user` VALUES (22, 'jd12315164', '5164', '211215484@qq.com', 0, '../upload/head/dc56255b1e4f4ad4b0a76a8eb0fc7f45.jpg');
INSERT INTO `user` VALUES (23, 'kl15645641', '5641', 'g123456412@163.com', 0, '../upload/head/dd7cf74e264247ffbe888c4e163fb9ed.jpg');
INSERT INTO `user` VALUES (24, 'kd1231854', '1854', '123484547@qq.com', 0, NULL);
INSERT INTO `user` VALUES (25, 'tw1123484', '3484', '988744641@qq.com', 0, '../upload/head/dc56255b1e4f4ad4b0a76a8eb0fc7f45.jpg');
INSERT INTO `user` VALUES (26, 'if48648411', '8411', 'u365484741@163.com', 0, '../upload/head/dd7cf74e264247ffbe888c4e163fb9ed.jpg');
INSERT INTO `user` VALUES (27, 'od1561487', '1487', '1564562314@qq.com', 0, NULL);
INSERT INTO `user` VALUES (28, 'jd54687233', '7233', '165484754@qq.com', 0, NULL);
SET FOREIGN_KEY_CHECKS = 1;

@ -19,210 +19,132 @@ import com.service.IMovieService;
import com.service.IUserService;
/**
*
* JSON
*
*
* @author Wxj
*/
@Controller
@RequestMapping("/comment") // 设置该Controller的基础路径为/comment意味着该控制器下的所有请求路径都以此为前缀
@RequestMapping("/comment")
public class CommentController {
// 自动装配ICommentService用于调用评论相关的业务逻辑方法如查询、添加、更新、删除评论等操作。
@Resource
private ICommentService commentService;
// 自动装配IUserService用于获取用户相关信息例如根据用户ID查找用户详细信息等操作辅助评论业务逻辑处理比如补充评论中的用户信息。
@Resource
private IUserService userService;
// 自动装配IMovieService用于处理电影相关业务比如更新电影的评论数量等操作与评论业务存在关联关系因为评论是针对电影发表的。
@Resource
private IMovieService movieService;
/**
*
* ID
* JSON
*
* @return JSON
*/
@RequestMapping("findAllComments")
@ResponseBody
public JSONObject findAllComments() {
JSONObject obj = new JSONObject();
// 调用评论服务的方法获取所有评论列表
List<Comment> list = commentService.findAllComments();
for (Comment comment : list) {
// 通过用户服务根据评论中记录的用户ID查找对应的用户对象并设置到评论对象中补充用户信息。
comment.setComment_user(userService.findUserById(comment.getUser_id()));
}
obj.put("code", 0); // 设置成功状态码,表示查询操作成功执行。
obj.put("msg", ""); // 无额外消息,此处可根据实际业务需求在有特殊情况时设置相应提示消息。
obj.put("count", list.size()); // 设置评论总数,即获取到的评论列表的大小。
obj.put("data", list); // 将包含完整用户信息的评论列表数据放入 "data" 字段返回给前端。
return obj;
}
/**
*
*
* JSON 便
*
* @param page 1使
* @param limit 10使
* @param keyword
* @return JSON
*/
@RequestMapping("findAllCommentsPage")
@ResponseBody
public JSONObject findAllCommentsPage(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit", defaultValue = "10") Integer limit, String keyword) {
// 调用评论服务的分页查询方法,传入页码、每页显示数量以及关键词,获取符合条件的评论信息分页结果。
PageInfo<Comment> info = commentService.findAllCommentsBySplitPage(page, limit, keyword);
for (Comment comment : info.getList()) {
// 通过用户服务根据评论中记录的用户ID查找对应的用户对象并设置到评论对象中补充用户信息。
comment.setComment_user(userService.findUserById(comment.getUser_id()));
}
JSONObject obj = new JSONObject();
obj.put("code", 0); // 设置成功状态码,表示分页查询操作成功执行。
obj.put("msg", ""); // 无额外消息,此处可根据实际业务需求在有特殊情况时设置相应提示消息。
obj.put("count", info.getTotal()); // 设置总记录数,即符合条件的评论总条数,从分页信息对象中获取。
obj.put("data", info.getList()); // 将包含完整用户信息的分页评论列表数据放入 "data" 字段返回给前端。
return obj;
}
/**
*
*
* IDID
*
*
*
* @param movie_id ID
* @param comment_content
* @param request
* @return JSON
*/
@RequestMapping("addCommentByUser")
@ResponseBody
public JSONObject addCommentByUser(@RequestParam("movie_id") long movie_id,
@RequestParam("comment_content") String comment_content, HttpServletRequest request) {
User user = (User) request.getSession().getAttribute("user");
JSONObject obj = new JSONObject();
if (user == null) {
// 用户未登录时设置状态码为200并返回相应提示消息给前端告知用户需登录后才可评论。
obj.put("code", 200);
obj.put("msg", "您未登录,登录之后才可评论~");
} else {
Comment comment = new Comment();
comment.setComment_content(comment_content);
comment.setMovie_id(movie_id);
comment.setUser_id(user.getUser_id());
comment.setComment_time(new Date());
// 调用评论服务的添加评论方法,将构建好的评论对象保存到数据库中,返回受影响的行数(通常大于 0 表示添加成功)。
Integer rs = commentService.addComemnt(comment);
if (rs > 0) {
// 如果评论添加成功调用电影服务的方法更新对应电影通过评论中的电影ID获取的评论数量返回受影响的行数通常大于 0 表示更新成功)。
Integer rs2 = movieService.addCommentCount(comment.getMovie_id());
if (rs2 > 0) {
obj.put("code", 0); // 设置成功状态码,表示评论发表及电影评论数更新均成功。
obj.put("msg", "评论成功~");
} else {
// 如果电影评论数更新失败,设置相应状态码和提示消息,告知前端评论发表部分成功,但电影评论数更新失败。
obj.put("code", 200);
obj.put("msg", "评论失败2~");
}
} else {
// 如果评论添加失败,设置相应状态码和提示消息,告知前端评论发表失败。
obj.put("code", 200);
obj.put("msg", "评论失败~");
}
}
return obj;
}
/**
*
* ID
*
*
* @param comment_id ID
* @param comment_content
* @return JSON
*/
@RequestMapping("updateComment")
@ResponseBody
public JSONObject updateComment(@RequestParam("comment_id") long comment_id,
@RequestParam("comment_content") String comment_content) {
JSONObject obj = new JSONObject();
// 根据评论ID调用评论服务的方法查找对应的评论对象。
Comment comment = this.commentService.findCommentById(comment_id);
comment.setComment_time(new Date());
comment.setComment_content(comment_content);
// 调用评论服务的更新评论方法,将修改后的评论对象保存到数据库中,返回受影响的行数(通常大于 0 表示更新成功)。
Integer rs = commentService.updateComment(comment);
if (rs > 0) {
obj.put("code", 0); // 设置成功状态码,表示评论内容更新成功。
obj.put("msg", "修改成功~");
} else {
// 如果更新失败,设置相应状态码和提示消息,告知前端评论内容更新失败。
obj.put("code", 200);
obj.put("msg", "修改失败~");
}
return obj;
}
/**
*
* IDID
*
*
* @param comment_id ID
* @return JSON
*/
@RequestMapping("deleteComemnt")
@ResponseBody
public JSONObject deleteComment(@RequestParam("comment_id") long comment_id) {
JSONObject obj = new JSONObject();
// 先获取评论关联的电影ID通过评论服务根据评论ID查找评论对象再获取其中的电影ID。
Integer rs2 = movieService.delCommentCount(commentService.findCommentById(comment_id).getMovie_id());
// 调用评论服务的删除评论方法根据评论ID将评论从数据库中删除返回受影响的行数通常大于 0 表示删除成功)。
Integer rs = commentService.deleteComment(comment_id);
if (rs > 0) {
obj.put("code", 0); // 设置成功状态码,表示评论删除成功。
obj.put("msg", "删除成功~");
} else {
// 如果删除失败,设置相应状态码和提示消息,告知前端评论删除失败。
obj.put("code", 200);
obj.put("msg", "删除失败~");
}
return obj;
}
/**
*
*
* JSON 便
*
* @param page 1使
* @param limit 10使
* @param user_name
* @return JSON
*/
@RequestMapping("findCommentsByUserName")
@ResponseBody
public JSONObject findCommentsByUserName(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit", defaultValue = "10") Integer limit, @RequestParam("user_name") String user_name) {
// 调用评论服务的分页查询方法,传入页码、每页显示数量以及用户名,获取符合条件的评论信息分页结果。
PageInfo<Comment> info = commentService.findCommentsByUserName(page, limit, user_name);
for (Comment comment : info.getList()) {
// 通过用户服务根据评论中记录的用户ID查找对应的用户对象并设置到评论对象中补充用户信息。
comment.setComment_user(userService.findUserById(comment.getUser_id()));
}
JSONObject obj = new JSONObject();
obj.put("code", 0); // 设置成功状态码,表示按用户名分页查询操作成功执行。
obj.put("msg", ""); // 无额外消息,此处可根据实际业务需求在有特殊情况时设置相应提示消息。
obj.put("count", info.getTotal()); // 设置总记录数,即符合用户名筛选条件的评论总条数,从分页信息对象中获取。
obj.put("data", info.getList()); // 将包含完整用户信息的分页评论列表数据放入 "data" 字段返回给前端。
return obj;
}
}
@Resource
private ICommentService commentService;
@Resource
private IUserService userService;
@Resource
private IMovieService movieService;
//用户: 修改评论、增加评论
//管理员x 删除评论、 修改评论
//x查询用户的评论
@RequestMapping("findAllComments")
@ResponseBody
public JSONObject findAllComments() {
JSONObject obj = new JSONObject();
List<Comment> list = commentService.findAllComments();
for(Comment comment: list) {
comment.setComment_user(userService.findUserById(comment.getUser_id()));
}
obj.put("code", 0);
obj.put("msg","");
obj.put("count", list.size());
obj.put("data", list);
return obj;
}
//测试 info.getTotal
@RequestMapping("findAllCommentsPage")
@ResponseBody
public JSONObject findAllCommentsPage(@RequestParam(value="page",defaultValue="1")Integer page,@RequestParam(value="limit",defaultValue="10")Integer limit,String keyword) {
PageInfo<Comment> info = commentService.findAllCommentsBySplitPage(page, limit, keyword);
//System.out.println(info);
for(Comment comment : info.getList()) {
comment.setComment_user(userService.findUserById(comment.getUser_id()));
}
JSONObject obj = new JSONObject();
obj.put("code", 0);
obj.put("msg", "");
obj.put("count", info.getTotal());
obj.put("data", info.getList());
return obj;
}
@RequestMapping("addCommentByUser")
@ResponseBody
public JSONObject addCommentByUser(@RequestParam("movie_id")long movie_id,@RequestParam("comment_content")String comment_content,HttpServletRequest request) {
User user = (User)request.getSession().getAttribute("user");
JSONObject obj = new JSONObject();
if(user == null) {
obj.put("code",200);
obj.put("msg", "您未登录,登录之后才可评论~");
}else {
Comment comment = new Comment();
comment.setComment_content(comment_content);
comment.setMovie_id(movie_id);
comment.setUser_id(user.getUser_id());
comment.setComment_time(new Date());
Integer rs = commentService.addComemnt(comment);
if(rs > 0) {
Integer rs2 = movieService.addCommentCount(comment.getMovie_id());
if(rs2 > 0) {
obj.put("code", 0);
obj.put("msg", "评论成功~");
}else {
obj.put("code",200);
obj.put("msg", "评论失败2~");
}
}else {
obj.put("code",200);
obj.put("msg", "评论失败~");
}
}
return obj;
}
@RequestMapping("updateComment")
@ResponseBody
public JSONObject updateComment(@RequestParam("comment_id")long comment_id,@RequestParam("comment_content")String comment_content) {
JSONObject obj = new JSONObject();
Comment comment = this.commentService.findCommentById(comment_id);
comment.setComment_time(new Date());
comment.setComment_content(comment_content);
Integer rs = commentService.updateComment(comment);
if(rs > 0) {
obj.put("code", 0);
obj.put("msg", "修改成功~");
}else {
obj.put("code",200);
obj.put("msg", "修改失败~");
}
return obj;
}
@RequestMapping("deleteComemnt")
@ResponseBody
public JSONObject deleteComment(@RequestParam("comment_id")long comment_id) {
JSONObject obj = new JSONObject();
Integer rs2 = movieService.delCommentCount(commentService.findCommentById(comment_id).getMovie_id());
Integer rs = commentService.deleteComment(comment_id);
if(rs > 0) {
obj.put("code", 0);
obj.put("msg", "删除成功~");
}else {
obj.put("code", 200);
obj.put("msg", "删除失败~");
}
return obj;
}
@RequestMapping("findCommentsByUserName")
@ResponseBody
public JSONObject findCommentsByUserName(@RequestParam(value="page",defaultValue="1")Integer page,@RequestParam(value="limit",defaultValue="10")Integer limit,@RequestParam("user_name")String user_name) {
PageInfo<Comment> info = commentService.findCommentsByUserName(page, limit, user_name);
//System.out.println(info);
for(Comment comment : info.getList()) {
comment.setComment_user(userService.findUserById(comment.getUser_id()));
}
JSONObject obj = new JSONObject();
obj.put("code", 0);
obj.put("msg", "");
obj.put("count", info.getTotal());
obj.put("data", info.getList());
return obj;
}
}

@ -21,215 +21,186 @@ import org.springframework.web.multipart.MultipartFile;
import com.alibaba.fastjson.JSONObject;
import com.entity.Cinema;
import com.entity.Movie;
import com.service.ICinemaService; // 注入电影院服务接口,用于获取电影院相关信息,辅助电影管理业务逻辑
import com.service.IMovieService; // 注入电影服务接口,用于处理电影的各种业务操作,如查询、添加、删除、排序等
import com.util.UUIDUtil; // 用于生成唯一文件名的工具类,在文件上传场景中确保文件名的唯一性
import com.service.ICinemaService;
import com.service.IMovieService;
import com.util.UUIDUtil;
/**
*
*
* @author Wxj
*/
@Controller
@RequestMapping("/movie")
public class MovieController {
// 注入电影服务接口的实现类,通过该接口可以调用电影服务层提供的各种业务方法,实现对电影数据的操作。
@Resource
private IMovieService movieService;
// 注入电影院服务接口的实现类,用于获取电影院相关信息,例如查找放映某部电影的电影院列表等操作,与电影业务存在关联关系。
@Resource
private ICinemaService cinemaService;
// 1.电影详情页通过电影ID查找电影详情和对应的电影院列表用于前端展示电影的详细信息以及该电影在哪些电影院上映等情况。
@RequestMapping("findMovieById")
@ResponseBody
public JSONObject findMovieById(@RequestParam("movie_id") long movie_id) {
JSONObject obj = new JSONObject();
// 调用电影服务的方法根据传入的电影ID查找对应的电影对象获取电影详情信息。
Movie movie = movieService.findMovieById(movie_id);
// 调用电影院服务的方法查找放映该电影通过传入电影ID的电影院列表。
List<Cinema> list = this.cinemaService.findCinemasByMovieId(movie_id);
obj.put("code", 0);
// 将电影详情数据放入 "data" 字段返回给前端。
obj.put("data", movie);
// 将电影院列表数据放入 "cinemaList" 字段返回给前端,方便前端展示该电影的上映影院信息。
obj.put("cinemaList", list);
// 将电影院列表的大小(即放映该电影的影院数量)放入 "cinemaCount" 字段返回给前端。
obj.put("cinemaCount", list.size());
return obj;
}
// 2.首页电影列表,支持按名称搜索、按类型搜索,以及按时间、参评人数、评分排序,用于前端展示多种条件筛选和排序后的电影列表信息,满足不同用户查找电影的需求。
@RequestMapping("findAllMovies")
@ResponseBody
public JSONObject findAllMovies() {
JSONObject obj = new JSONObject();
// 获取正在上映的电影列表,这里参数 1 可能表示正在上映的筛选条件(具体由服务层方法定义)。
List<Movie> list = movieService.findAllMovies(1);
// 获取即将上映的电影列表,这里参数 0 可能表示即将上映的筛选条件(具体由服务层方法定义)。
List<Movie> upcomingList = movieService.findAllMovies(0);
// 获取按票房排序的电影列表,调用服务层按票房排序电影的方法。
List<Movie> offList = movieService.sortMovieByBoxOffice();
String type[] = {"喜剧", "动作", "爱情", "动画", "科幻", "惊悚", "冒险", "犯罪", "悬疑"};
ArrayList<Object> typeArr = new ArrayList<Object>();
for (int i = 0; i < type.length; i++) {
// 根据电影类型查找对应的电影列表,遍历各种类型进行查询。
List<Movie> movieList = this.movieService.findMoviesLikeType(type[i]);
float boxOffice = 0;
for (int j = 0; j < movieList.size(); j++) {
// 累加该类型电影的票房,用于统计各类型电影的总票房情况。
boxOffice += movieList.get(j).getMovie_boxOffice();
}
JSONObject typeJson = new JSONObject();
// 将电影类型作为键,该类型电影的总票房作为值,放入 JSON 对象中,方便前端按类型展示票房情况。
typeJson.put(type[i], boxOffice);
typeArr.add(typeJson);
}
obj.put("code", 0);
// 设置正在上映电影列表的数量,放入 "count" 字段返回给前端。
obj.put("count", list.size());
// 设置即将上映电影列表的数量,放入 "upcomingCount" 字段返回给前端。
obj.put("upcomingCount", upcomingList.size());
// 将正在上映的电影列表数据放入 "data" 字段返回给前端。
obj.put("data", list);
// 将即将上映的电影列表数据放入 "data1" 字段返回给前端。
obj.put("data1", upcomingList);
// 将按票房排序的电影列表数据放入 "sort" 字段返回给前端。
obj.put("sort", offList);
// 将按类型统计票房的信息列表放入 "type" 字段返回给前端,方便前端展示各类型电影票房情况。
obj.put("type", typeArr);
return obj;
}
// 3.按名称搜索电影,根据用户输入的电影名称查找匹配的电影列表,返回给前端展示搜索结果。
@RequestMapping("findMoviesByName")
@ResponseBody
public JSONObject findMoviesByName(@RequestParam("name") String name) {
JSONObject obj = new JSONObject();
// 调用电影服务的方法,根据传入的电影名称进行模糊查询,获取匹配的电影列表。
List<Movie> list = movieService.findMoviesLikeName(name);
obj.put("code", 0);
// 设置查询到的电影列表的数量,放入 "count" 字段返回给前端。
obj.put("count", list.size());
// 将查询到的电影列表数据放入 "data" 字段返回给前端。
obj.put("data", list);
return obj;
}
// 4.按类型搜索电影,根据用户指定的电影类型查找相应的电影列表,并返回给前端展示搜索结果。
@RequestMapping("findMoviesByType")
@ResponseBody
public JSONObject findMoviesByType(@RequestParam("type") String type) {
JSONObject obj = new JSONObject();
// 调用电影服务的方法,根据传入的电影类型进行模糊查询,获取匹配的电影列表。
List<Movie> list = movieService.findMoviesLikeType(type);
obj.put("code", 0);
// 设置查询到的电影列表的数量,放入 "count" 字段返回给前端。
obj.put("count", list.size());
// 将查询到的电影列表数据放入 "data" 字段返回给前端。
obj.put("data", list);
return obj;
}
// 5.按时间、评价人数、评分排序电影,根据用户选择的排序方式(如热门、时间、评价)对电影列表进行相应排序,并返回给前端展示排序后的结果。
@RequestMapping("sortAllMovies")
@ResponseBody
public JSONObject sortAllMovies(@RequestParam("order") String order) {
JSONObject obj = new JSONObject();
List<Movie> list = new ArrayList<Movie>();
switch (order) {
case "热门":
// 调用电影服务的按评价人数排序电影的方法,获取排序后的电影列表,这里 "热门" 可能对应按评价人数排序(具体由服务层定义)。
list = movieService.sortMovieByCount();
break;
case "时间":
// 调用电影服务的按时间排序电影的方法,获取排序后的电影列表,按照时间先后顺序进行排序。
list = movieService.sortMovieByDate();
break;
case "评价":
// 调用电影服务的按评分排序电影的方法,获取排序后的电影列表,按照电影评分高低进行排序。
list = movieService.sortMovieByScore();
break;
}
obj.put("code", 0);
// 设置排序后电影列表的数量,放入 "count" 字段返回给前端。
obj.put("count", list.size());
// 将排序后的电影列表数据放入 "data" 字段返回给前端。
obj.put("data", list);
return obj;
}
// 6.删除电影根据传入的电影ID执行删除电影的操作并根据删除结果返回相应提示信息给前端告知用户下架是否成功。
@RequestMapping("deleteMovie")
@ResponseBody
public JSONObject deleteMovie(@RequestParam("movie_id") long movie_id) {
JSONObject obj = new JSONObject();
// 调用电影服务的删除电影方法传入电影ID进行删除操作返回受影响的行数通常大于 0 表示删除成功)。
Integer rs = movieService.deleteMovie(movie_id);
if (rs > 0) {
obj.put("code", 0);
obj.put("msg", "下架成功~");
} else {
obj.put("code", 200);
obj.put("msg", "下架失败~");
}
return obj;
}
// 7.添加电影,包括上传电影海报和设置电影信息,处理添加新电影的请求,涉及文件上传、电影基本信息设置以及保存到数据库等操作,根据结果返回相应提示信息给前端。
@RequestMapping("addMovie")
@ResponseBody
public JSONObject addMovie(@RequestParam(value = "file", required = false) MultipartFile file, Movie movie,
HttpServletRequest request) throws IOException {
// 获取上传文件(电影海报)的原始名称,用于记录和后续处理(如生成唯一文件名等操作)。
String str = file.getOriginalFilename();
System.out.println("file:" + str);
// 使用 UUIDUtil 工具类生成唯一文件名,结合原始文件名的后缀,确保文件名在服务器上的唯一性,方便文件管理。
String name = UUIDUtil.getUUID() + str.substring(str.lastIndexOf("."));
System.out.println("name:" + name);
// 获取文件存储在服务器上的完整路径,结合服务器上下文路径和生成的唯一文件名,确定文件最终存储位置。
String path = request.getServletContext().getRealPath("/upload/movies") + "/" + name;
System.out.println("path:" + path);
// 生成存储在数据库中的相对路径,方便在数据库中记录文件位置,后续可根据此路径查找和展示海报图片。
String filePath = "../upload/movies/" + name;
// 设置电影对象的海报路径属性,将生成的相对路径赋值给电影对象,以便后续保存电影信息时一起存入数据库。
movie.setMovie_picture(filePath);
Date date = new Date();
// 修复获取年份和月份的bug将 Java 的 Date 类型转换为 java.sql.Date 类型,用于设置电影的上映日期,确保日期格式符合数据库要求。
java.sql.Date releaseDate = new java.sql.Date(date.getYear() + 1900, date.getMonth() + 1, date.getDay());
//SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
// 随机生成一个 5 - 9 之间的评分,通过 Random 类生成随机数,并结合一定的计算来控制评分范围。
float random = 5 + (new Random().nextFloat() * 4);
// 使用 DecimalFormat 格式化评分数字,使其保留一位小数,符合常见的评分展示格式要求。
DecimalFormat fnum = new DecimalFormat("##0.0");
String score = fnum.format(random);
// 将格式化后的评分设置为电影对象的评分属性,更新电影的评分信息。
movie.setMovie_score(Float.parseFloat(score));
// 设置电影对象的上映日期属性,将前面生成的符合数据库要求的日期赋值给电影对象,完善电影信息。
movie.setReleaseDate(releaseDate);
// 调用电影服务的添加电影方法,将包含完整信息(包括海报路径、评分、上映日期等)的电影对象保存到数据库中,返回受影响的行数(通常大于 0 表示添加成功)。
Integer rs = movieService.addMovie(movie);
JSONObject obj = new JSONObject();
if (rs > 0) {
// 如果添加电影成功,将上传的文件保存到指定路径,即将电影海报文件存储到服务器相应位置。
file.transferTo(new File(path));
System.out.println("文件写入成功,Path:" + path);
obj.put("code", 0);
obj.put("msg", "添加成功~");
} else {
obj.put("code", 200);
obj.put("msg", "添加失败~");
}
return obj;
}
// 8.更新电影,这里可能后续需要补充具体的更新电影逻辑代码,目前只是一个方法定义的占位,比如接收更新后的电影信息,调用服务层的更新方法等操作。
@RequestMapping("updateMovie")
@ResponseBody
public JSONObject updateMovie() {
// 此处代码暂未实现具体逻辑,后续可根据业务需求添加更新电影信息的相关代码,例如接收前端传入的更新后的电影对象,
// 调用 movieService 的相应更新方法进行数据库更新操作,并根据更新结果返回合适的提示信息给前端等操作。
JSONObject obj = new JSONObject();
return obj;
}
}
@Resource
private IMovieService movieService;
@Resource
private ICinemaService cinemaService;
//1.电影详情页 findid
//2.首页电影列表 + name搜索 + type搜素 + 时间、参评人数、评分排序
//3.增加、删除、修改
@RequestMapping("findMovieById")
@ResponseBody
public JSONObject findMovieById(@RequestParam("movie_id")long movie_id) {
JSONObject obj = new JSONObject();
Movie movie = movieService.findMovieById(movie_id);
List<Cinema> list = this.cinemaService.findCinemasByMovieId(movie_id);
obj.put("code", 0);
obj.put("data", movie);
obj.put("cinemaList",list);
obj.put("cinemaCount",list.size());
return obj;
}
@RequestMapping("findAllMovies")
@ResponseBody
public JSONObject findAllMovies() {
JSONObject obj = new JSONObject();
List<Movie> list = movieService.findAllMovies(1);
List<Movie> upcomingList = movieService.findAllMovies(0);
List<Movie> offList = movieService.sortMovieByBoxOffice();
String type[] = {"喜剧","动作","爱情","动画","科幻","惊悚","冒险","犯罪","悬疑"};
ArrayList<Object> typeArr = new ArrayList<Object>();
for(int i = 0;i < type.length;i++) {
List<Movie> movieList = this.movieService.findMoviesLikeType(type[i]);
float boxOffice = 0;
for(int j = 0; j < movieList.size();j++) {
boxOffice += movieList.get(j).getMovie_boxOffice();
}
JSONObject typeJson = new JSONObject();
typeJson.put(type[i], boxOffice);
typeArr.add(typeJson);
}
obj.put("code", 0);
obj.put("count", list.size());
obj.put("upcomingCount",upcomingList.size());
obj.put("data", list);
obj.put("data1", upcomingList);
obj.put("sort", offList);
obj.put("type", typeArr);
return obj;
}
@RequestMapping("findMoviesByName")
@ResponseBody
public JSONObject findMoviesByName(@RequestParam("name") String name) {
JSONObject obj = new JSONObject();
List<Movie> list = movieService.findMoviesLikeName(name);
obj.put("code", 0);
obj.put("count", list.size());
obj.put("data", list);
return obj;
}
@RequestMapping("findMoviesByType")
@ResponseBody
public JSONObject findMoviesByType(@RequestParam("type") String type) {
JSONObject obj = new JSONObject();
List<Movie> list = movieService.findMoviesLikeType(type);
obj.put("code", 0);
obj.put("count", list.size());
obj.put("data", list);
return obj;
}
@RequestMapping("sortAllMovies")
@ResponseBody
public JSONObject sortAllMovies(@RequestParam("order") String order) {
JSONObject obj = new JSONObject();
List<Movie> list = new ArrayList<Movie>();
switch (order) {
case "热门":
list = movieService.sortMovieByCount();
break;
case "时间":
list = movieService.sortMovieByDate();
break;
case "评价":
list = movieService.sortMovieByScore();
break;
}
obj.put("code",0);
obj.put("count", list.size());
obj.put("data", list);
return obj;
}
@RequestMapping("deleteMovie")
@ResponseBody
public JSONObject deleteMovie(@RequestParam("movie_id") long movie_id) {
JSONObject obj = new JSONObject();
Integer rs = movieService.deleteMovie(movie_id);
if(rs > 0) {
obj.put("code",0);
obj.put("msg","下架成功~");
}else {
obj.put("code", 200);
obj.put("msg", "下架失败~");
}
return obj;
}
@RequestMapping("addMovie")
@ResponseBody
public JSONObject addMovie(@RequestParam(value="file",required=false) MultipartFile file,Movie movie,HttpServletRequest request) throws IOException {
String str = file.getOriginalFilename();
System.out.println("file:" + str);
String name = UUIDUtil.getUUID() + str.substring(str.lastIndexOf("."));
System.out.println("name:" + name);
String path = request.getServletContext().getRealPath("/upload/movies") + "/" + name;
System.out.println("path:" + path);
String filePath = "../upload/movies/" + name;
movie.setMovie_picture(filePath);
Date date = new Date();
java.sql.Date releaseDate = new java.sql.Date(date.getYear(), date.getMonth(), date.getDay());
//SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
float random = 5 + (new Random().nextFloat() * 4);
DecimalFormat fnum = new DecimalFormat("##0.0");
String score = fnum.format(random);
movie.setMovie_score(Float.parseFloat(score));
movie.setReleaseDate(releaseDate);
Integer rs = movieService.addMovie(movie);
JSONObject obj = new JSONObject();
if(rs > 0) {
file.transferTo(new File(path));
System.out.println("文件写入成功,Path:" + path);
obj.put("code", 0);
obj.put("msg", "添加成功~");
}else {
obj.put("code", 200);
obj.put("msg", "添加失败~");
}
return obj;
}
@RequestMapping("updateMovie")
@ResponseBody
public JSONObject updateMovie(@RequestParam(value="file",required=false)MultipartFile file,Movie movie,HttpServletRequest request) throws IOException{
JSONObject obj = new JSONObject();
if(file != null) {
String str = file.getOriginalFilename();
System.out.println("file:" + str);
String name = UUIDUtil.getUUID() + str.substring(str.lastIndexOf("."));
System.out.println("name:" + name);
String path = request.getServletContext().getRealPath("/upload/movies") + "/" + name;
System.out.println("path:" + path);
String filePath = "../upload/movies/" + name;
file.transferTo(new File(path));
System.out.println("文件写入成功,Path:" + path);
movie.setMovie_picture(filePath);
}else {
Movie oldMovie = this.movieService.findMovieById(movie.getMovie_id());
movie.setMovie_picture(oldMovie.getMovie_picture());
}
Integer rs = movieService.updateMovie(movie);
if(rs > 0) {
obj.put("code", 0);
obj.put("msg", "修改成功~");
}else {
obj.put("code", 200);
obj.put("msg", "修改失败~");
}
return obj;
}
}

@ -21,206 +21,191 @@ import com.service.IMovieService;
import com.service.IOrderService;
import com.service.IScheduleService;
// 声明这是一个Spring MVC控制器处理与订单相关的请求RequestMapping注解指定了该控制器处理请求的基础路径为 "/order"
@Controller
@RequestMapping("/order")
public class OrderController {
// 注入订单服务,用于处理订单相关的业务逻辑,例如订单的查询、添加、修改等操作
@Resource
private IOrderService orderService;
// 注入排期服务,用于处理排期(如座位状态)的更新,比如在支付、退票成功等操作时对相应场次座位数进行增减操作
@Resource
private IScheduleService scheduleService;
// 支付、退票成功时座位数的增减相关操作会调用此服务提供的方法来实现
// 注入电影服务,用于处理电影票房的更新,在支付、退票成功等场景下对电影票房数据进行相应的增减操作
@Resource
private IMovieService movieService;
// 根据订单ID查找订单详情并返回给前端前端可根据返回结果展示订单的详细信息
@RequestMapping("findOrderById")
@ResponseBody
public JSONObject findOrderById(@RequestParam("order_id") String order_id) {
JSONObject obj = new JSONObject();
// 调用订单服务的方法根据传入的订单ID查找对应的订单对象
Order order = orderService.findOrderById(order_id);
List<Order> list = new ArrayList<>();
list.add(order);
// 设置返回的状态码为0表示查找成功
obj.put("code", 0);
obj.put("msg", "");
// 设置返回数据的数量这里因为只查找了一个订单所以数量为1即list的大小
obj.put("count", list.size());
// 将查找到的订单数据放入 "data" 字段返回给前端
obj.put("data", list);
return obj;
}
// 根据用户名分页查找订单,并返回给前端,方便前端按照分页形式展示该用户的订单信息
@RequestMapping("findOrderByUserName")
@ResponseBody
public JSONObject findOrderByUserName(
@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit", defaultValue = "10") Integer limit,
@RequestParam("user_name") String user_name) {
// 调用订单服务的分页查询方法,根据传入的页码、每页显示数量以及用户名查找对应的订单信息分页结果
PageInfo<Order> info = orderService.findOrdersByUserName(page, limit, user_name);
JSONObject obj = new JSONObject();
obj.put("code", 0);
obj.put("msg", "");
// 设置总记录数,即符合条件的订单总数,从分页信息对象中获取
obj.put("count", info.getTotal());
// 将分页后的订单列表数据放入 "data" 字段返回给前端
obj.put("data", info.getList());
return obj;
}
// 根据用户名查找用户的退票订单,并返回给前端,用于前端展示该用户的退票相关订单信息
@RequestMapping("findRefundOrderByUser")
@ResponseBody
public JSONObject findRefundOrderByUser(@RequestParam("user_name") String user_name) {
JSONObject obj = new JSONObject();
// 调用订单服务的方法,根据用户名查找该用户的退票订单列表
List<Order> list = this.orderService.findRefundOrderByUserName(user_name);
obj.put("code", 0);
obj.put("msg", "");
// 设置退票订单的数量,即列表的大小
obj.put("count", list.size());
// 将查找到的退票订单列表数据放入 "data" 字段返回给前端
obj.put("data", list);
return obj;
}
// 查找所有订单,并返回给前端,可用于前端展示系统中所有的订单信息(可能用于管理后台等场景)
@RequestMapping("findAllOrders")
@ResponseBody
public JSONObject findAllOrders() {
JSONObject obj = new JSONObject();
// 调用订单服务的方法获取所有订单列表
List<Order> list = orderService.findAllOrders();
obj.put("code", 0);
obj.put("msg", "");
// 设置所有订单的数量,即列表的大小
obj.put("count", list.size());
// 将所有订单列表数据放入 "data" 字段返回给前端
obj.put("data", list);
return obj;
}
// 根据关键词分页查找所有订单,并返回给前端,方便前端按照分页形式展示经过关键词筛选后的订单信息
@RequestMapping("findAllOrdersPage")
@ResponseBody
public JSONObject findAllOrdersPage(
@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit", defaultValue = "10") Integer limit,
String keyword) {
// 调用订单服务的分页查询方法,根据传入的页码、每页显示数量以及关键词查找对应的订单信息分页结果
PageInfo<Order> info = orderService.findAllOrdersBySplitPage(page, limit, keyword);
JSONObject obj = new JSONObject();
obj.put("code", 0);
obj.put("msg", "");
// 设置总记录数,即符合关键词筛选条件的订单总数,从分页信息对象中获取
obj.put("count", info.getTotal());
// 将分页后的订单列表数据放入 "data" 字段返回给前端
obj.put("data", info.getList());
return obj;
}
// 查找所有退票订单,并返回给前端(分页),用于前端分页展示系统中的所有退票订单信息(可能用于统计、管理等场景)
@RequestMapping("findAllRefundOrder")
@ResponseBody
public JSONObject findAllRefundOrder(
@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit", defaultValue = "10") Integer limit) {
JSONObject obj = new JSONObject();
// 调用订单服务的方法根据页码和每页显示数量查找处于退票状态这里0可能表示退票状态的订单信息分页结果
PageInfo<Order> info = orderService.findOrdersByState(page, limit, 0);
obj.put("code", 0);
obj.put("msg", "");
// 设置总记录数,即符合退票状态筛选条件的订单总数,从分页信息对象中获取
obj.put("count", info.getTotal());
// 将分页后的退票订单列表数据放入 "data" 字段返回给前端
obj.put("data", info.getList());
return obj;
}
// 购买电影票的逻辑处理接收排期ID、座位信息、票价以及HttpServletRequest对象等参数完成订单创建、座位数更新等操作
@RequestMapping("buyTickets")
@ResponseBody
public JSONObject buyTickets(
@RequestParam("schedule_id") long schedule_id,
@RequestParam("position[]") String[] position,
@RequestParam("price") int price,
HttpServletRequest request) {
// 从会话中获取当前用户,用于确定购票的用户信息,若未登录则无法购票
User user = (User) request.getSession().getAttribute("user");
JSONObject obj = new JSONObject();
if (user == null) {
// 用户未登录时设置状态码为200并返回相应提示消息给前端告知用户需登录后才可购票
obj.put("code", 200);
obj.put("msg", "您未登录,登录之后才可购票~");
} else {
int done = 0; // 记录成功购买的座位数初始化为0
// 计算每个座位的单价,用总票价除以购买的座位数量
int order_price = price / position.length;
String user_id = ""; // 格式化后的用户ID初始化为空字符串后续根据用户ID长度进行格式化处理
// 根据用户ID的长度进行格式化确保用户ID格式统一可能用于生成订单ID等逻辑需要
switch (String.valueOf(user.getUser_id()).length()) {
case 1: user_id = "000" + String.valueOf(user.getUser_id()); break;
case 2: user_id = "00" + String.valueOf(user.getUser_id()); break;
case 3: user_id = "0" + String.valueOf(user.getUser_id()); break;
case 4: user_id = String.valueOf(user.getUser_id()); break;
}
// 遍历要购买的座位数组,为每个座位创建订单并进行相关业务逻辑处理
for (int i = 0; i < position.length; i++) {
Order order = new Order();
String order_id = "";
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYYMMdd");
// 生成订单ID格式为日期+用户ID+座位索引),先添加日期部分
order_id += dateFormat.format(date);
order_id += user_id;
String index = "";
// 根据座位字符串的长度进行不同的格式化处理提取出座位索引部分用于生成订单ID
switch (position[i].length()) {
case 4:
index = "0" + position[i].replaceAll("排", "0");
index = index.replaceAll("座", "");
break;
case 5:
if (position[i].charAt(2) >= 48 && position[i].charAt(2) <= 57) {
index = "0" + position[i].replaceAll("排", "");
index = index.replaceAll("座", "");
} else {
index = position[i].replaceAll("排", "0");
index = index.replaceAll("座", "");
}
break;
case 6:
index = position[i].replaceAll("排", "");
index = index.replaceAll("座", "");
break;
}
order_id += index;
// 设置订单对象的各项属性如订单ID、座位位置、对应的排期ID、用户ID、单价以及下单时间等
order.setOrder_id(order_id);
order.setOrder_position(position[i]);
order.setSchedule_id(schedule_id);
order.setUser_id(user.getUser_id());
order.setOrder_price(order_price);
order.setOrder_time(new Date());
// 添加订单到数据库,调用订单服务的添加订单方法
Integer rs = this.orderService.addOrder(order);
// 更新排期的剩余座位数,调用排期服务的相应方法减少剩余座位数,每成功添加一个订单就减少一个座位
Integer rs1 = this.scheduleService.delScheduleRemain(schedule_id);
done++;
}
// 此处代码可能还需要处理一些后续逻辑比如判断所有座位是否都购买成功根据done与position.length对比
// 以及是否需要更新电影票房调用movieService相关方法等操作目前代码似乎未完整展示这些逻辑。
}
return obj;
}
}
@Resource
private IOrderService orderService;
@Resource
private IScheduleService scheduleService; //支付、退票成功 座位+-
@Resource
private IMovieService movieService; //支付、退票成功 票房+-
//查看订单是否 是支付的(返回给前端的数据)
@RequestMapping("findOrderById")
@ResponseBody
public JSONObject findOrderById(@RequestParam("order_id")String order_id) {
JSONObject obj = new JSONObject();
Order order = orderService.findOrderById(order_id);
List<Order> list = new ArrayList<Order>();
list.add(order);
obj.put("code", 0);
obj.put("msg", "");
obj.put("count", list.size());
obj.put("data",list);
return obj;
}
@RequestMapping("findOrderByUserName")
@ResponseBody
public JSONObject findOrderByUserName(@RequestParam(value="page",defaultValue="1")Integer page,@RequestParam(value="limit",defaultValue="10")Integer limit,@RequestParam("user_name")String user_name) {
PageInfo<Order> info = orderService.findOrdersByUserName(page, limit, user_name);
JSONObject obj = new JSONObject();
obj.put("code", 0);
obj.put("msg", "");
obj.put("count", info.getTotal());
obj.put("data", info.getList());
return obj;
}
@RequestMapping("findRefundOrderByUser")
@ResponseBody
public JSONObject findRefundOrderByUser(@RequestParam("user_name")String user_name) {
JSONObject obj = new JSONObject();
List<Order> list = this.orderService.findRefundOrderByUserName(user_name);
obj.put("code", 0);
obj.put("msg", "");
obj.put("count", list.size());
obj.put("data", list);
return obj;
}
@RequestMapping("findAllOrders")
@ResponseBody
public JSONObject findAllOrders() {
JSONObject obj = new JSONObject();
List<Order> list = orderService.findAllOrders();
obj.put("code", 0);
obj.put("msg", "");
obj.put("count", list.size());
obj.put("data", list);
return obj;
}
@RequestMapping("findAllOrdersPage")
@ResponseBody
public JSONObject findAllOrdersPage(@RequestParam(value="page",defaultValue="1")Integer page,@RequestParam(value="limit",defaultValue="10")Integer limit,String keyword) {
PageInfo<Order> info = orderService.findAllOrdersBySplitPage(page, limit, keyword);
JSONObject obj = new JSONObject();
obj.put("code", 0);
obj.put("msg", "");
obj.put("count", info.getTotal());
obj.put("data", info.getList());
return obj;
}
@RequestMapping("findAllRefundOrder")
@ResponseBody
public JSONObject findAllRefundOrder(@RequestParam(value="page",defaultValue="1")Integer page,@RequestParam(value="limit",defaultValue="10")Integer limit) {
JSONObject obj = new JSONObject();
PageInfo<Order> info = orderService.findOrdersByState(page, limit, 0);
obj.put("code", 0);
obj.put("msg", "");
obj.put("count", info.getTotal());
obj.put("data", info.getList());
return obj;
}
@RequestMapping("buyTickets")
@ResponseBody
public JSONObject buyTickets(@RequestParam("schedule_id")long schedule_id,@RequestParam("position[]")String[] position,@RequestParam("price")int price,HttpServletRequest request) {
User user = (User)request.getSession().getAttribute("user");
JSONObject obj = new JSONObject();
if(user == null) {
obj.put("code",200);
obj.put("msg", "您未登录,登录之后才可购票~");
}else {
int done = 0;
int order_price = price / position.length;
String user_id = "";
switch(String.valueOf(user.getUser_id()).length()) {
case 1: user_id = "000" + String.valueOf(user.getUser_id()); break;
case 2: user_id = "00" + String.valueOf(user.getUser_id()); break;
case 3: user_id = "0" + String.valueOf(user.getUser_id()); break;
case 4: user_id = String.valueOf(user.getUser_id()); break;
}
for(int i = 0;i < position.length;i++) {
Order order = new Order();
String order_id = "";
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYYMMdd");
order_id += dateFormat.format(date);
order_id += user_id;
String index = "";
switch(position[i].length()) {
case 4:
index = "0" + position[i].replaceAll("排", "0");
index = index.replaceAll("座", "");
break;
case 5:
if(position[i].charAt(2) >= 48 && position[i].charAt(2) <= 57) {
index = "0" + position[i].replaceAll("排", "");
index = index.replaceAll("座", "");
}else {
index = position[i].replaceAll("排", "0");
index = index.replaceAll("座", "");
}
break;
case 6:
index = position[i].replaceAll("排", "");
index = index.replaceAll("座", "");
break;
}
order_id += index;
order.setOrder_id(order_id);
order.setOrder_position(position[i]);
order.setSchedule_id(schedule_id);
order.setUser_id(user.getUser_id());
order.setOrder_price(order_price);
order.setOrder_time(new Date());
Integer rs = this.orderService.addOrder(order);
Integer rs1 = this.scheduleService.delScheduleRemain(schedule_id);
done++;
}
if(done == position.length) {
float sum = (float)price/10000;
Integer rs2 = this.movieService.changeMovieBoxOffice(sum, this.scheduleService.findScheduleById(schedule_id).getMovie_id());
obj.put("code",0);
obj.put("msg", "购票成功~");
}else {
obj.put("code",200);
obj.put("msg", "购票失败~");
}
}
return obj;
}
@RequestMapping("applyForRefund")
@ResponseBody
public JSONObject applyForRefund(@RequestParam("order_id")String order_id) {
JSONObject obj = new JSONObject();
Integer rs = orderService.updateOrderStateToRefund(order_id);
if(rs > 0) {
obj.put("code", 0);
obj.put("msg", "退票申请已发送~");
}else {
obj.put("code", 200);
obj.put("msg", "操作失败~");
}
return obj;
}
@RequestMapping("agreeForRefund")
@ResponseBody
public JSONObject agreeForRefund(@RequestParam("order_id")String order_id) {
JSONObject obj = new JSONObject();
Integer rs = this.orderService.updateOrderStateToRefunded(order_id);
if(rs > 0) {
Order order = this.orderService.findOrderById(order_id);
int price = order.getOrder_price();
long movie_id = order.getOrder_schedule().getMovie_id();
Integer rs2 = this.movieService.changeMovieBoxOffice((float)price/10000, movie_id);
obj.put("code", 0);
obj.put("msg", "退票成功");
}else {
obj.put("code", 200);
obj.put("msg", "退票失败");
}
return obj;
}
}

@ -23,282 +23,225 @@ import com.service.IHallService;
import com.service.IMovieService;
import com.service.IScheduleService;
/**
* Schedule
*
*
* JSON
*/
@Controller
@RequestMapping("/schedule")
public class ScheduleController {
// 注入场次服务层接口,用于调用场次相关的业务逻辑方法,如查询、添加、修改、删除场次等操作。
@Resource
private IScheduleService scheduleService;
// 注入电影服务层接口,用于获取电影相关信息,例如根据电影名查找电影编号等操作,辅助场次相关业务逻辑处理。
@Resource
private IMovieService movieService;
// 注入影院服务层接口,用于获取影院相关信息,可能在查询场次与影院关联等业务场景中使用。
@Resource
private ICinemaService cinemaService;
// 注入放映厅服务层接口,用于获取放映厅相关信息,比如根据影院和放映厅名称查找放映厅等操作,与场次的关联查询等业务有关。
@Resource
private IHallService hallService;
/**
*
* scheduleService
* JSONObject 0 "data"
*
* @param schedule_id
* @return JSONObject JSON "code" "data"
*/
@RequestMapping("findScheduleById")
@ResponseBody
public JSONObject findScheduleById(@RequestParam("schedule_id") long schedule_id) {
JSONObject obj = new JSONObject();
Schedule schedule = scheduleService.findScheduleById(schedule_id);
obj.put("code", 0);
obj.put("data", schedule);
return obj;
}
/**
*
* scheduleService
* incomeArr
* JSONObject
*
* @param page 1使
* @param limit 10使
* @param schedule_state 1 0
* @return JSONObject JSON "code""count""data""income"
*/
@RequestMapping("findAllScheduleByState")
@ResponseBody
public JSONObject findAllScheduleByState(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit", defaultValue = "10") Integer limit,
@RequestParam("schedule_state") int schedule_state) {
JSONObject obj = new JSONObject();
PageInfo<Schedule> info = scheduleService.findAllScheduleByState(page, limit, schedule_state);
ArrayList<Integer> incomeArr = new ArrayList<Integer>();
for (int j = 0; j < info.getList().size(); j++) {
List<Order> orderList = info.getList().get(j).getOrderList();
int income = 0;
for (int i = 0; i < orderList.size(); i++) {
income += orderList.get(i).getOrder_price();
}
incomeArr.add(income);
}
obj.put("code", 0);
obj.put("count", info.getTotal());
obj.put("data", info.getList());
obj.put("income", incomeArr);
return obj;
}
/**
*
* scheduleService
*
* JSONObject
*
* @param page 1使
* @param limit 10使
* @return JSONObject JSON "code""count""data""movieName""cinema""income"
*/
@RequestMapping("findAllSchedule")
@ResponseBody
public JSONObject findAllSchedule(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit", defaultValue = "10") Integer limit) {
JSONObject obj = new JSONObject();
PageInfo<Schedule> info = scheduleService.findAllSchedule(page, limit);
List<Movie> movieList = movieService.findAllMovies(1);
List<Cinema> cinemaList = cinemaService.findAllCinemas();
ArrayList<String> movieArr = new ArrayList<String>();
ArrayList<Integer> incomeArr = new ArrayList<Integer>();
for (int j = 0; j < info.getList().size(); j++) {
List<Order> orderList = info.getList().get(j).getOrderList();
int income = 0;
for (int i = 0; i < orderList.size(); i++) {
income += orderList.get(i).getOrder_price();
}
incomeArr.add(income);
}
for (int i = 0; i < movieList.size(); i++) {
movieArr.add(movieList.get(i).getMovie_cn_name());
}
ArrayList<Object> cinema = new ArrayList<>();
for (int i = 0; i < cinemaList.size(); i++) {
JSONObject cinemaObj = new JSONObject();
List<Hall> hallList = hallService.findHallByCinemaId(cinemaList.get(i).getCinema_id());
ArrayList<String> hallArr = new ArrayList<String>();
for (int j = 0; j < hallList.size(); j++) {
hallArr.add(hallList.get(j).getHall_name());
}
cinemaObj.put(cinemaList.get(i).getCinema_name(), hallList);
cinema.add(cinemaObj);
}
obj.put("code", 0);
obj.put("count", info.getTotal());
obj.put("data", info.getList());
obj.put("movieName", movieArr);
obj.put("cinema", cinema);
obj.put("income", incomeArr);
return obj;
}
/**
*
* scheduleService
* incomeArr JSONObject
*
* @param page 1使
* @param limit 10使
* @param movie_name
* @return JSONObject JSON "code""count""data""income"
*/
@RequestMapping("findScheduleByMovieName")
@ResponseBody
public JSONObject findScheduleByMovieName(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit", defaultValue = "10") Integer limit,
@RequestParam("movie_name") String movie_name) {
JSONObject obj = new JSONObject();
PageInfo<Schedule> info = scheduleService.findScheduleByMovieName(page, limit, movie_name);
ArrayList<Integer> incomeArr = new ArrayList<Integer>();
for (int j = 0; j < info.getList().size(); j++) {
List<Order> orderList = info.getList().get(j).getOrderList();
int income = 0;
for (int i = 0; i < orderList.size(); i++) {
income += orderList.get(i).getOrder_price();
}
incomeArr.add(income);
}
obj.put("code", 0);
obj.put("count", info.getTotal());
obj.put("data", info.getList());
obj.put("income", incomeArr);
return obj;
}
/**
*
* findScheduleByMovieName scheduleService
* incomeArr JSONObject
*
* @param page 1使
* @param limit 10使
* @param movie_name
* @return JSONObject JSON "code""count""data""income"
*/
@RequestMapping("findOffScheduleByMovieName")
@ResponseBody
public JSONObject findOffScheduleByMovieName(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit", defaultValue = "10") Integer limit,
@RequestParam("movie_name") String movie_name) {
JSONObject obj = new JSONObject();
PageInfo<Schedule> info = scheduleService.findOffScheduleByMovieName(page, limit, movie_name);
ArrayList<Integer> incomeArr = new ArrayList<Integer>();
for (int j = 0; j < info.getList().size(); j++) {
List<Order> orderList = info.getList().get(j).getOrderList();
int income = 0;
for (int i = 0; i < orderList.size(); i++) {
income += orderList.get(i).getOrder_price();
}
incomeArr.add(income);
}
obj.put("code", 0);
obj.put("count", info.getTotal());
obj.put("data", info.getList());
obj.put("income", incomeArr);
return obj;
}
/**
*
* scheduleService
* JSONObject
*
* @param cinema_id
* @param movie_id
* @return JSONObject JSON "code""count""data"
*/
@RequestMapping("findScheduleByCinemaAndMovie")
@ResponseBody
public JSONObject findScheduleByCinemaAndMovie(@RequestParam("cinema_id") long cinema_id,
@RequestParam("movie_id") long movie_id) {
JSONObject obj = new JSONObject();
List<Schedule> list = scheduleService.findScheduleByCineamIdAndMovieId(cinema_id, movie_id);
obj.put("code", 0);
obj.put("count", list.size());
obj.put("data", list);
return obj;
}
/**
*
*
* scheduleService
* JSONObject
*
* @param movie_name
* @param hall_name
* @param cinema_name
* @param schedule_price
* @param schedule_startTime
* @return JSONObject JSON "code" "mgs"
*/
@RequestMapping("addSchedule")
@ResponseBody
public JSONObject addSchedule(@RequestParam("movie_name") String movie_name,
@RequestParam("hall_name") String hall_name,
@RequestParam("cinema_name") String cinema_name,
@RequestParam("schedule_price") int schedule_price,
@RequestParam("schedule_startTime") String schedule_startTime) {
JSONObject obj = new JSONObject();
Schedule schedule = new Schedule();
Hall hall = this.hallService.findHallByCinemaAndHallName(cinema_name, hall_name);
schedule.setMovie_id(this.movieService.findMovieByName(movie_name).getMovie_id());
schedule.setHall_id(hall.getHall_id());
schedule.setSchedule_price(schedule_price);
schedule.setSchedule_startTime(schedule_startTime);
schedule.setSchedule_remain(hall.getHall_capacity());
Integer rs = this.scheduleService.addSchedule(schedule);
if (rs > 0) {
obj.put("code", 0);
obj.put("mgs", "增加成功~");
} else {
obj.put("code", 200);
obj.put("mgs", "增加失败~");
}
return obj;
}
/**
*
*
* scheduleService JSONObject
*
* @param schedule_id
* @param schedule_price
* @return JSONObject JSON "code" "mgs"
*/
@RequestMapping("updateSchedulePrice")
@ResponseBody
public JSONObject updateSchedulePrice(@RequestParam("schedule_id") long schedule_id,
@RequestParam("schedule_price") int schedule_price) {
JSONObject obj = new JSONObject();
Schedule schedule = new Schedule();
schedule.setSchedule_id(schedule_id);
schedule.setSchedule_price(schedule_price);
Integer rs = this.scheduleService.updateSchedule(schedule);
if (rs > 0) {
obj.put("code", 0);
obj.put("mgs", "修改成功~");
} else {
obj.put("code", 200);
obj.put("mgs", "修改失败~");
}
return obj;
}
@Resource
private IScheduleService scheduleService;
@Resource
private IMovieService movieService;
@Resource
private ICinemaService cinemaService;
@Resource
private IHallService hallService;
@RequestMapping("findScheduleById")
@ResponseBody
public JSONObject findScheduleById(@RequestParam("schedule_id")long schedule_id) {
JSONObject obj = new JSONObject();
Schedule schedule = scheduleService.findScheduleById(schedule_id);
obj.put("code", 0);
obj.put("data",schedule);
return obj;
}
@RequestMapping("findAllScheduleByState")
@ResponseBody
public JSONObject findAllScheduleByState(@RequestParam(value="page",defaultValue="1")Integer page,@RequestParam(value="limit",defaultValue="10")Integer limit,@RequestParam("schedule_state")int schedule_state) {
JSONObject obj = new JSONObject();
PageInfo<Schedule> info = scheduleService.findAllScheduleByState(page, limit, schedule_state);
ArrayList<Integer> incomeArr = new ArrayList<Integer>();
for(int j = 0;j < info.getList().size();j++) {
List<Order> orderList = info.getList().get(j).getOrderList();
int income = 0;
for(int i = 0;i < orderList.size();i++) {
income += orderList.get(i).getOrder_price();
}
incomeArr.add(income);
}
obj.put("code", 0);
obj.put("count", info.getTotal());
obj.put("data", info.getList());
obj.put("income", incomeArr);
return obj;
}
@RequestMapping("findAllSchedule")
@ResponseBody
public JSONObject findAllSchedule(@RequestParam(value="page",defaultValue="1")Integer page,@RequestParam(value="limit",defaultValue="10")Integer limit) {
JSONObject obj = new JSONObject();
PageInfo<Schedule> info = scheduleService.findAllSchedule(page, limit);
List<Movie> movieList = movieService.findAllMovies(1);
List<Cinema> cinemaList = cinemaService.findAllCinemas();
ArrayList<String> movieArr = new ArrayList<String>();
ArrayList<Integer> incomeArr = new ArrayList<Integer>();
for(int j = 0;j < info.getList().size();j++) {
List<Order> orderList = info.getList().get(j).getOrderList();
int income = 0;
for(int i = 0;i < orderList.size();i++) {
income += orderList.get(i).getOrder_price();
}
incomeArr.add(income);
}
for(int i = 0;i < movieList.size();i++) {
movieArr.add(movieList.get(i).getMovie_cn_name());
}
ArrayList<Object> cinema = new ArrayList<>();
for(int i = 0;i < cinemaList.size();i++) {
JSONObject cinemaObj = new JSONObject();
List<Hall> hallList = hallService.findHallByCinemaId(cinemaList.get(i).getCinema_id());
ArrayList<String> hallArr = new ArrayList<String>();
for(int j = 0;j < hallList.size();j++) {
hallArr.add(hallList.get(j).getHall_name());
}
cinemaObj.put(cinemaList.get(i).getCinema_name(), hallList);
cinema.add(cinemaObj);
}
obj.put("code", 0);
obj.put("count", info.getTotal());
obj.put("data", info.getList());
obj.put("movieName", movieArr);
obj.put("cinema", cinema);
obj.put("income", incomeArr);
return obj;
}
@RequestMapping("findScheduleByMovieName")
@ResponseBody
public JSONObject findScheduleByMovieName(@RequestParam(value="page",defaultValue="1")Integer page,@RequestParam(value="limit",defaultValue="10")Integer limit,@RequestParam("movie_name")String movie_name) {
JSONObject obj = new JSONObject();
PageInfo<Schedule> info = scheduleService.findScheduleByMovieName(page,limit,movie_name);
ArrayList<Integer> incomeArr = new ArrayList<Integer>();
for(int j = 0;j < info.getList().size();j++) {
List<Order> orderList = info.getList().get(j).getOrderList();
int income = 0;
for(int i = 0;i < orderList.size();i++) {
income += orderList.get(i).getOrder_price();
}
incomeArr.add(income);
}
obj.put("code", 0);
obj.put("count", info.getTotal());
obj.put("data", info.getList());
obj.put("income", incomeArr);
return obj;
}
@RequestMapping("findOffScheduleByMovieName")
@ResponseBody
public JSONObject findOffScheduleByMovieName(@RequestParam(value="page",defaultValue="1")Integer page,@RequestParam(value="limit",defaultValue="10")Integer limit,@RequestParam("movie_name")String movie_name) {
JSONObject obj = new JSONObject();
PageInfo<Schedule> info = scheduleService.findOffScheduleByMovieName(page, limit, movie_name);
ArrayList<Integer> incomeArr = new ArrayList<Integer>();
for(int j = 0;j < info.getList().size();j++) {
List<Order> orderList = info.getList().get(j).getOrderList();
int income = 0;
for(int i = 0;i < orderList.size();i++) {
income += orderList.get(i).getOrder_price();
}
incomeArr.add(income);
}
obj.put("code", 0);
obj.put("count", info.getTotal());
obj.put("data", info.getList());
obj.put("income", incomeArr);
return obj;
}
@RequestMapping("findScheduleByCinemaAndMovie")
@ResponseBody
public JSONObject findScheduleByCinemaAndMovie(@RequestParam("cinema_id")long cinema_id,@RequestParam("movie_id")long movie_id) {
JSONObject obj = new JSONObject();
List<Schedule> list = scheduleService.findScheduleByCineamIdAndMovieId(cinema_id, movie_id);
obj.put("code",0);
obj.put("count",list.size());
obj.put("data", list);
return obj;
}
@RequestMapping("addSchedule")
@ResponseBody
public JSONObject addSchedule(@RequestParam("movie_name")String movie_name,@RequestParam("hall_name")String hall_name,@RequestParam("cinema_name")String cinema_name,
@RequestParam("schedule_price")int schedule_price,@RequestParam("schedule_startTime")String schedule_startTime) {
JSONObject obj = new JSONObject();
Schedule schedule = new Schedule();
Hall hall = this.hallService.findHallByCinemaAndHallName(cinema_name, hall_name);
schedule.setMovie_id(this.movieService.findMovieByName(movie_name).getMovie_id());
schedule.setHall_id(hall.getHall_id());
schedule.setSchedule_price(schedule_price);
schedule.setSchedule_startTime(schedule_startTime);
schedule.setSchedule_remain(hall.getHall_capacity());
Integer rs = this.scheduleService.addSchedule(schedule);
if(rs > 0) {
obj.put("code", 0);
obj.put("mgs", "增加成功~");
}else {
obj.put("code", 200);
obj.put("mgs", "增加失败~");
}
return obj;
}
@RequestMapping("updateSchedulePrice")
@ResponseBody
public JSONObject updateSchedulePrice(@RequestParam("schedule_id")long schedule_id,@RequestParam("schedule_price")int schedule_price) {
JSONObject obj = new JSONObject();
Schedule schedule = new Schedule();
schedule.setSchedule_id(schedule_id);
schedule.setSchedule_price(schedule_price);
Integer rs = this.scheduleService.updateSchedule(schedule);
if(rs > 0) {
obj.put("code", 0);
obj.put("mgs", "修改成功~");
}else {
obj.put("code", 200);
obj.put("mgs", "修改失败~");
}
return obj;
}
@RequestMapping("offlineSchedule")
@ResponseBody
public JSONObject offlineSchedule(@RequestParam("schedule_id")long schedule_id) {
JSONObject obj = new JSONObject();
Integer rs = this.scheduleService.deleteSchedule(schedule_id);
if(rs > 0) {
obj.put("code", 0);
obj.put("mgs", "下架成功~");
}else {
obj.put("code", 200);
obj.put("mgs", "下架失败~");
}
return obj;
}
/**
* Api id
* @param movie_id
* @return
*/
@RequestMapping("findCinemasByMovieId")
@ResponseBody
public JSONObject findCinemasByMovieId(@RequestParam("movie_id")long movie_id) {
JSONObject obj = new JSONObject();
List<Cinema> list = this.cinemaService.findCinemasByMovieId(movie_id);
obj.put("code", 0);
obj.put("count", list.size());
obj.put("data", list);
return obj;
}
/**
* api
*/
@RequestMapping("testHall")
@ResponseBody
public JSONObject testHall(@RequestParam("hall_name")String hall_name,@RequestParam("cinema_name")String cinema_name) {
Hall hall = this.hallService.findHallByCinemaAndHallName(cinema_name, hall_name);
JSONObject obj = new JSONObject();
obj.put("data", hall);
return obj;
}
}

@ -24,273 +24,189 @@ import com.entity.User;
import com.github.pagehelper.PageInfo;
import com.service.IUserService;
import com.util.UUIDUtil;
/**
*
*
* update: 20197917:18:50
* @author Wxj
*/
@Controller
@RequestMapping("/user")
// 该类使用Spring的 @Controller 注解标记表示这是一个控制器类用于处理Web请求。
// @RequestMapping("/user") 则定义了该控制器处理的请求路径的基础部分,后续具体方法的请求路径在此基础上扩展。
public class UserController {
// 原本使用 @Autowired 进行依赖注入,后改为使用 @Resource用于将 IUserService 的实现类注入到当前控制器中,
// 以便调用用户服务层提供的各种业务方法来处理用户相关操作。
// @Autowired
@Resource
private IUserService userService;
/**
*
* HttpServletRequest userService
* Session
* @param user_name
* @param user_pwd
* @param request HttpServletRequest
* @return JSONObject JSON
*/
@RequestMapping("login")
@ResponseBody
public JSONObject login(String user_name, String user_pwd, HttpServletRequest request) {
JSONObject obj = new JSONObject();
User user = userService.login(user_name, user_pwd);
if (user!= null) {
HttpSession session = request.getSession();
session.setAttribute("user", user);
if (user.getUser_role() == 0) {
obj.put("msg", "usersuccess");
obj.put("data", user);
return obj;
} else {
obj.put("msg", "adminsuccess");
obj.put("data", user);
return obj;
}
}
obj.put("msg", "fail");
return obj;
}
/**
*
* HttpServletRequest "index"
* @param request HttpServletRequest
* @return String "index"
*/
@RequestMapping("logout")
@ResponseBody
public String logout(HttpServletRequest request) {
HttpSession session = request.getSession();
session.removeAttribute("user");
return "index";
}
/**
*
* User "fail"
* userService "success" "fail"
* @param user User
* @return String "success" "fail"
*/
@RequestMapping("register")
@ResponseBody
public String register(User user) {
List<User> list = userService.findUserByName(user.getUser_name());
if (list.size() > 0) {
return "fail";
} else {
Integer rs = userService.addUser(user);
if (rs > 0) {
return "success";
} else {
return "fail";
}
}
}
/**
*
* User userService
* "success" "fail"
* @param user User
* @return String "success" "fail"
*/
@RequestMapping("updateUser")
@ResponseBody
public String updateUser(User user) {
Integer rs = userService.updateUserInfo(user);
if (rs > 0) {
return "success";
} else {
return "fail";
}
}
/**
*
* HttpServletRequest
* "success" "fail"
* @param oldPwd
* @param newPwd
* @param request HttpServletRequest
* @return String "success" "fail"
*/
@RequestMapping("modifyUserPwd")
@ResponseBody
public String modifyUserPwd(@RequestParam("oldPwd") String oldPwd, @RequestParam("newPwd") String newPwd,
HttpServletRequest request) {
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
if (user.getUser_pwd().equals(oldPwd)) {
user.setUser_pwd(newPwd);
userService.updateUserInfo(user);
session.removeAttribute("user");
return "success";
} else {
return "fail";
}
}
/**
*
* userService
* JSONObject
* @param page 1使
* @param limit 10使
* @param keyword
* @return JSONObject JSON
*/
@RequestMapping("findAllUser")
@ResponseBody
public JSONObject findAllUser(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit", defaultValue = "10") Integer limit,
String keyword) {
PageInfo<User> info = userService.findAllUserBySplitPage(page, limit, keyword);
JSONObject obj = new JSONObject();
obj.put("msg", "");
obj.put("code", 0);
obj.put("count", info.getTotal());
obj.put("data", info.getList());
return obj;
}
/**
*
* JSONObject
* @return JSONObject JSON
*/
@RequestMapping("findAllUserInfos")
@ResponseBody
public JSONObject findAllUserInfos() {
JSONObject obj = new JSONObject();
List<User> list = userService.findAllUserInfos();
obj.put("msg", "");
obj.put("code", 0);
obj.put("count", list.size());
obj.put("data", list);
return obj;
}
/**
*
* userService
* JSONObject
* @param user_name
* @return JSONObject JSON
*/
@RequestMapping("findUserInfosByName")
@ResponseBody
public JSONObject findUserInfosByName(@RequestParam("user_name") String user_name) {
JSONObject obj = new JSONObject();
List<User> list = userService.findUserLikeName(user_name);
obj.put("msg", "");
obj.put("code", 0);
obj.put("count", list.size());
obj.put("data", list);
return obj;
}
/**
*
* HttpServletRequest
*
* 使 userService
* JSONObject
* @param file
* @param user User
* @param request HttpServletRequest
* @return JSONObject JSON
* @throws IOException I/O
*/
@RequestMapping("/uploadHeadImg")
@ResponseBody
public JSONObject uploadHeadImg(@RequestParam(value = "file", required = false) MultipartFile file, User user,
HttpServletRequest request) throws IOException {
JSONObject obj = new JSONObject();
if (file!= null) {
String str = file.getOriginalFilename();
System.out.println("file:" + str);
String name = UUIDUtil.getUUID() + str.substring(str.lastIndexOf("."));
System.out.println("name:" + name);
String path = request.getServletContext().getRealPath("/upload/head") + "/" + name;
System.out.println("path:" + path);
String filePath = "../upload/head/" + name;
user.setUser_headImg(filePath);
file.transferTo(new File(path));
System.out.println("文件写入成功,Path:" + path);
} else {
user.setUser_headImg(this.userService.findUserById(user.getUser_id()).getUser_headImg());
user.setUser_pwd(this.userService.findUserById(user.getUser_id()).getUser_pwd());
}
Integer rs = userService.updateUserInfo(user);
if (rs > 0) {
obj.put("code", 0);
obj.put("msg", "");
obj.put("data", user);
} else {
obj.put("code", 200);
obj.put("msg", "");
}
return obj;
}
/**
* API
* HttpServletRequest
* JSONObject
* @param file
* @param user_name
* @param request HttpServletRequest
* @return JSONObject JSON
*/
@RequestMapping("test")
@ResponseBody
public JSONObject uploadImg(@RequestParam(value = "file", required = false) MultipartFile file,
@RequestParam("user_name") String user_name, HttpServletRequest request) {
System.out.println(file);
JSONObject obj = new JSONObject();
if (file == null) {
System.out.println("null");
} else {
String str = file.getOriginalFilename();
System.out.println("file:" + str);
String name = UUIDUtil.getUUID() + str.substring(str.lastIndexOf("."));
System.out.println("name:" + name);
String path = request.getServletContext().getRealPath("/upload/head") + "/" + name;
System.out.println("path:" + path);
String filePath = "upload/head/" + name;
System.out.println(filePath);
try {
file.transferTo(new File(path));
System.out.println("文件写入成功,Path:" + path);
} catch (IOException ex) {
ex.printStackTrace();
}
obj.put("file", name);
obj.put("user_name", user_name);
}
return obj;
}
}
//@Autowired
@Resource
private IUserService userService;
@RequestMapping("login")
@ResponseBody
public JSONObject login(String user_name,String user_pwd,HttpServletRequest request) {
JSONObject obj = new JSONObject();
User user = userService.login(user_name, user_pwd);
if(user != null) {
HttpSession session = request.getSession();
session.setAttribute("user", user);
if(user.getUser_role() == 0) {
obj.put("msg", "usersuccess");
obj.put("data", user);
return obj;
}else {
obj.put("msg", "adminsuccess");
obj.put("data", user);
return obj;
}
}
obj.put("msg", "fail");
return obj;
}
@RequestMapping("logout")
@ResponseBody
public String logout(HttpServletRequest request) {
HttpSession session = request.getSession();
session.removeAttribute("user");
return "index";
}
@RequestMapping("register")
@ResponseBody
public String register(User user) {
List<User> list = userService.findUserByName(user.getUser_name());
if(list.size() > 0) {
return "fail";
}else {
Integer rs = userService.addUser(user);
if(rs > 0) {
return "success";
}else {
return "fail";
}
}
}
@RequestMapping("updateUser")
@ResponseBody
public String updateUser(User user) {
Integer rs = userService.updateUserInfo(user);
if(rs > 0) {
return "success";
}else {
return "fail";
}
}
@RequestMapping("modifyUserPwd")
@ResponseBody
public String modifyUserPwd(@RequestParam("oldPwd")String oldPwd,@RequestParam("newPwd")String newPwd,HttpServletRequest request) {
HttpSession session = request.getSession();
User user = (User)session.getAttribute("user");
if(user.getUser_pwd().equals(oldPwd)) {
user.setUser_pwd(newPwd);
userService.updateUserInfo(user);
session.removeAttribute("user");
return "success";
}else {
return "fail";
}
}
@RequestMapping("findAllUser")
@ResponseBody
public JSONObject findAllUser(@RequestParam(value="page",defaultValue="1")Integer page,@RequestParam(value="limit",defaultValue="10")Integer limit,String keyword) {
PageInfo<User> info = userService.findAllUserBySplitPage(page, limit, keyword);
JSONObject obj = new JSONObject();
obj.put("msg", "");
obj.put("code", 0);
obj.put("count", info.getTotal());
obj.put("data", info.getList());
return obj;
}
@RequestMapping("findAllUserInfos")
@ResponseBody
public JSONObject findAllUserInfos() {
JSONObject obj = new JSONObject();
List<User> list = userService.findAllUserInfos();
obj.put("msg","");
obj.put("code",0);
obj.put("count",list.size());
obj.put("data", list);
return obj;
}
@RequestMapping("findUserInfosByName")
@ResponseBody
public JSONObject findUserInfosByName(@RequestParam("user_name")String user_name) {
JSONObject obj = new JSONObject();
List<User> list = userService.findUserLikeName(user_name);
obj.put("msg","");
obj.put("code",0);
obj.put("count",list.size());
obj.put("data", list);
return obj;
}
@RequestMapping("/uploadHeadImg")
@ResponseBody
public JSONObject uploadHeadImg(@RequestParam(value="file",required=false) MultipartFile file,User user,HttpServletRequest request) throws IOException {
JSONObject obj = new JSONObject();
if(file != null) {
String str = file.getOriginalFilename();
System.out.println("file:"+str);
String name = UUIDUtil.getUUID() + str.substring(str.lastIndexOf("."));
System.out.println("name:"+name);
String path = request.getServletContext().getRealPath("/upload/head") + "/" + name;
System.out.println("path:"+path);
String filePath = "../upload/head/" + name;
user.setUser_headImg(filePath);
file.transferTo(new File(path));
System.out.println("文件写入成功,Path:" + path);
}else {
user.setUser_headImg(this.userService.findUserById(user.getUser_id()).getUser_headImg());
user.setUser_pwd(this.userService.findUserById(user.getUser_id()).getUser_pwd());
}
Integer rs = userService.updateUserInfo(user);
if(rs > 0) {
obj.put("code", 0);
obj.put("msg", "");
obj.put("data",user);
}else {
obj.put("code", 200);
obj.put("msg", "");
}
return obj;
}
/**
* Api
* @param file
* @param user_name
* @param request
* @return
*/
@RequestMapping("test")
@ResponseBody
public JSONObject uploadImg(@RequestParam(value="file",required=false) MultipartFile file,@RequestParam("user_name")String user_name,HttpServletRequest request) {
System.out.println(file);
JSONObject obj = new JSONObject();
if(file == null) {
System.out.println("null");
}else {
String str = file.getOriginalFilename();
System.out.println("file:"+str);
String name = UUIDUtil.getUUID() + str.substring(str.lastIndexOf("."));
System.out.println("name:"+name);
String path = request.getServletContext().getRealPath("/upload/head") + "/" + name;
System.out.println("path:"+path);
String filePath = "upload/head/" + name;
System.out.println(filePath);
try {
file.transferTo(new File(path));
System.out.println("文件写入成功,Path:" + path);
}catch(IOException ex) {
ex.printStackTrace();
}
obj.put("file", name);
obj.put("user_name",user_name);
}
return obj;
}
}

@ -1,173 +1,125 @@
package com.entity;
import java.sql.Date; // 导入 java.sql.Date 类,用于表示日期,格式通常为 yyyy-mm-dd这里用于存储电影的相关日期信息
import java.sql.Date; //yyyy-mm-dd
import java.util.List;
/**
*
*
* @author Wxj
*/
public class Movie {
// 电影的唯一标识符,通常是数据库中的主键,用于唯一确定一部电影
private long movie_id;
// 电影的中文名称,用于展示给用户或者在中文语境下进行相关操作时使用
private String movie_cn_name;
// 电影的外文名称(从变量名推测,可能是拼音或者其他外语名称等),用于多语言相关场景或者对外交流展示等情况
private String movie_fg_name;
// 电影的演职人员信息,可能包含主演、配角等人员的姓名列表等相关内容,以字符串形式存储(更合理的方式也可以是用特定对象集合来表示)
private String movie_actor; // 演职人员
// 电影的导演信息,存储导演的姓名,若有多个导演可能以特定格式拼接在这个字符串中(同样也可考虑用更合适的对象集合等方式存储)
private String movie_director; // 导演
// 电影的详细介绍内容,比如剧情梗概、影片特色等详细文字描述,用于用户查看电影详情时展示
private String movie_detail; // 电影详情
// 电影的时长信息,通常格式可能是"XX分钟"之类的字符串形式,用于告知用户影片播放时长
private String movie_duration; // 电影时长
// 电影的类型信息,例如"喜剧"、"动作"、"科幻"等分类,以字符串形式存储(也可考虑用枚举等更规范的方式表示类型),方便按类型筛选、展示电影
private String movie_type; // 电影类型
// 电影的评分信息,以浮点数形式存储,一般是根据用户评价等综合计算得出的平均分数,用于衡量电影质量和受欢迎程度
private float movie_score; // 电影评分
// 电影的票房数据,以浮点数形式存储,代表电影取得的票房收入情况,用于统计分析电影商业表现等
private float movie_boxOffice; // 票房
// 电影的参评人数,即参与对该电影评分、评价等操作的用户数量,以长整型存储,可用于参考评分的可信度等情况
private long movie_commentCount; // 电影参评人数
// 电影的上映时间,使用 java.sql.Date 类型存储,能准确表示具体的年月日信息,便于查询、筛选不同时间段上映的电影
private Date movie_releaseDate; // 上映时间
// 电影的制片地区信息,比如"中国"、"美国"等,以字符串形式存储,有助于按地区分类、推荐电影等操作
private String movie_country; // 制片地区
// 电影海报的地址信息,存储海报图片在服务器或者网络中的位置,用于前端页面展示电影海报时获取图片资源
private String movie_picture; // 电影海报地址
// 电影的状态信息,用整数表示,默认值为 11 代表电影处于在线状态可正常观看、展示等0 代表电影已下架(不可见或者无法观看等情况)
private int movie_state; // 电影状态 默认 1 1在线 0下架
// 存储该电影所有的评论信息,以 Comment 类型的列表形式存在,方便获取、管理和展示用户对这部电影的各种评论内容
private List<Comment> commentList; // 所有的评论信息
// 获取电影的唯一标识符 movie_id 的方法,供外部类访问该私有属性
public long getMovie_id() {
return movie_id;
}
// 设置电影的唯一标识符 movie_id 的方法,外部类可以通过该方法给 movie_id 属性赋值
public void setMovie_id(long movie_id) {
this.movie_id = movie_id;
}
// 获取电影的中文名称 movie_cn_name 的方法,用于外部获取该属性值展示或者使用
public String getMovie_cn_name() {
return movie_cn_name;
}
// 获取电影的状态 movie_state 的方法,外部可通过此方法得知电影当前处于在线还是下架等状态
public int getMovie_state() {
return movie_state;
}
// 设置电影的状态 movie_state 的方法,外部可通过此方法改变电影的状态(比如管理员操作下架电影等情况)
public void setMovie_state(int movie_state) {
this.movie_state = movie_state;
}
// 设置电影的中文名称 movie_cn_name 的方法,外部类可调用此方法来更新电影的中文名称
public void setMovie_cn_name(String movie_cn_name) {
this.movie_cn_name = movie_cn_name;
}
// 获取电影的外文名称 movie_fg_name 的方法,供外部类在需要时获取该属性值
public String getMovie_fg_name() {
return movie_fg_name;
}
// 设置电影的外文名称 movie_fg_name 的方法,外部可通过调用此方法来修改电影的外文名称
public void setMovie_fg_name(String movie_fg_name) {
this.movie_fg_name = movie_fg_name;
}
// 获取电影的演职人员信息 movie_actor 的方法,用于外部展示或者处理相关人员信息
public String getMovie_actor() {
return movie_actor;
}
// 设置电影的演职人员信息 movie_actor 的方法,外部可调用此方法更新演职人员相关内容(比如新增演员等情况)
public void setMovie_actor(String movie_actor) {
this.movie_actor = movie_actor;
}
// 获取电影的导演信息 movie_director 的方法,方便外部获取并展示导演相关信息
public String getMovie_director() {
return movie_director;
}
// 设置电影的导演信息 movie_director 的方法,外部可通过此方法改变电影的导演信息(比如有误录入需要修改等情况)
public void setMovie_director(String movie_director) {
this.movie_director = movie_director;
}
// 获取电影的详细介绍内容 movie_detail 的方法,用于在前端页面等地方展示电影的详细情况给用户查看
public String getMovie_detail() {
return movie_detail;
}
// 设置电影的详细介绍内容 movie_detail 的方法,外部可通过调用此方法更新电影的详细介绍信息(比如补充更详细的剧情等情况)
public void setMovie_detail(String movie_detail) {
this.movie_detail = movie_detail;
}
// 获取电影的时长信息 movie_duration 的方法,外部可通过此方法获取并展示给用户影片播放时长情况
public String getMovie_duration() {
return movie_duration;
}
// 设置电影的时长信息 movie_duration 的方法,外部可调用此方法更新电影时长信息(比如纠正错误时长等情况)
public void setMovie_duration(String movie_duration) {
this.movie_duration = movie_duration;
}
// 获取电影的类型信息 movie_type 的方法,方便外部按类型进行分类、筛选、展示电影等操作
public String getMovie_type() {
return movie_type;
}
// 设置电影的类型信息 movie_type 的方法,外部可通过此方法修改电影的类型分类(比如重新归类等情况)
public void setMovie_type(String movie_type) {
this.movie_type = movie_type;
}
// 获取电影的评分信息 movie_score 的方法,外部可通过此方法获取并展示电影的评分情况给用户参考
public float getMovie_score() {
return movie_score;
}
// 设置电影的评分信息 movie_score 的方法,一般来说评分是根据一定算法计算得出后通过此方法更新,而不是随意设置(实际应用中可能会有限制逻辑等)
public void setMovie_score(float movie_score) {
this.movie_score = movie_score;
}
// 获取电影的票房数据 movie_boxOffice 的方法,用于外部统计、展示电影的商业票房表现情况
public float getMovie_boxOffice() {
return movie_boxOffice;
}
// 设置电影的票房数据 movie_boxOffice 的方法,通常是在票房数据更新时(比如新的票房统计结果出来后)调用此方法进行设置
public void setMovie_boxOffice(float movie_boxOffice) {
this.movie_boxOffice = movie_boxOffice;
}
// 获取电影的参评人数 movie_commentCount 的方法,外部可通过此方法获取参与评价的用户数量情况,用于参考评分可信度等
public long getMovie_commentCount() {
return movie_commentCount;
}
// 设置电影的参评人数 movie_commentCount 的方法,在参评人数有变化(比如新用户参与评价等情况)时可调用此方法更新
public void setMovie_commentCount(long movie_commentCount) {
this.movie_commentCount = movie_commentCount;
}
// 获取电影的上映时间 movie_releaseDate 的方法,方便外部按上映时间查询、筛选电影等操作
public Date getReleaseDate() {
return movie_releaseDate;
}
// 设置电影的上映时间 movie_releaseDate 的方法,一般在录入电影信息或者修改上映时间等情况时调用此方法(不过实际应用中上映时间通常是确定后较少修改的)
public void setReleaseDate(Date releaseDate) {
this.movie_releaseDate = releaseDate;
}
// 获取电影的制片地区信息 movie_country 的方法,外部可通过此方法获取并按地区分类、展示电影等
public String getMovie_country() {
return movie_country;
}
// 设置电影的制片地区信息 movie_country 的方法,在发现地区信息录入错误等情况时可调用此方法进行修改
public void setMovie_country(String movie_country) {
this.movie_country = movie_country;
}
// 获取电影海报地址信息 movie_picture 的方法,用于前端页面等获取海报图片资源展示电影海报
public String getMovie_picture() {
return movie_picture;
}
// 设置电影海报地址信息 movie_picture 的方法,比如海报更换后可通过此方法更新地址信息
public void setMovie_picture(String movie_picture) {
this.movie_picture = movie_picture;
}
// 获取该电影所有评论信息的列表 commentList 的方法,外部可通过此方法获取并展示、处理用户的评论内容
public List<Comment> getCommentList() {
return commentList;
}
// 设置该电影所有评论信息的列表 commentList 的方法,一般在添加新评论、删除评论等操作后调用此方法更新评论列表(实际应用中可能会有更复杂的逻辑配合)
public void setCommentList(List<Comment> commentList) {
this.commentList = commentList;
}
}
private long movie_id;
private String movie_cn_name;
private String movie_fg_name;
private String movie_actor; //演职人员
private String movie_director; //导演
private String movie_detail; //电影详情
private String movie_duration; //电影时长
private String movie_type; //电影类型
private float movie_score; //电影评分
private float movie_boxOffice; //票房
private long movie_commentCount; //电影参评人数
private Date movie_releaseDate; //上映时间
private String movie_country; //制片地区
private String movie_picture; //电影海报地址
private int movie_state; //电影状态 默认1 1在线 0下架
private List<Comment> commentList; //所有的评论信息
public long getMovie_id() {
return movie_id;
}
public void setMovie_id(long movie_id) {
this.movie_id = movie_id;
}
public String getMovie_cn_name() {
return movie_cn_name;
}
public int getMovie_state() {
return movie_state;
}
public void setMovie_state(int movie_state) {
this.movie_state = movie_state;
}
public void setMovie_cn_name(String movie_cn_name) {
this.movie_cn_name = movie_cn_name;
}
public String getMovie_fg_name() {
return movie_fg_name;
}
public void setMovie_fg_name(String movie_fg_name) {
this.movie_fg_name = movie_fg_name;
}
public String getMovie_actor() {
return movie_actor;
}
public void setMovie_actor(String movie_actor) {
this.movie_actor = movie_actor;
}
public String getMovie_director() {
return movie_director;
}
public void setMovie_director(String movie_director) {
this.movie_director = movie_director;
}
public String getMovie_detail() {
return movie_detail;
}
public void setMovie_detail(String movie_detail) {
this.movie_detail = movie_detail;
}
public String getMovie_duration() {
return movie_duration;
}
public void setMovie_duration(String movie_duration) {
this.movie_duration = movie_duration;
}
public String getMovie_type() {
return movie_type;
}
public void setMovie_type(String movie_type) {
this.movie_type = movie_type;
}
public float getMovie_score() {
return movie_score;
}
public void setMovie_score(float movie_score) {
this.movie_score = movie_score;
}
public float getMovie_boxOffice() {
return movie_boxOffice;
}
public void setMovie_boxOffice(float movie_boxOffice) {
this.movie_boxOffice = movie_boxOffice;
}
public long getMovie_commentCount() {
return movie_commentCount;
}
public void setMovie_commentCount(long movie_commentCount) {
this.movie_commentCount = movie_commentCount;
}
public Date getReleaseDate() {
return movie_releaseDate;
}
public void setReleaseDate(Date releaseDate) {
this.movie_releaseDate = releaseDate;
}
public String getMovie_country() {
return movie_country;
}
public void setMovie_country(String movie_country) {
this.movie_country = movie_country;
}
public String getMovie_picture() {
return movie_picture;
}
public void setMovie_picture(String movie_picture) {
this.movie_picture = movie_picture;
}
public List<Comment> getCommentList() {
return commentList;
}
public void setCommentList(List<Comment> commentList) {
this.commentList = commentList;
}
}

@ -6,112 +6,82 @@ import java.util.List;
import org.springframework.format.annotation.DateTimeFormat;
/**
*
*
*
* @author Wxj
*/
public class Schedule {
// 场次的唯一标识符
private long schedule_id;
// 所属放映厅的编号,通过该编号可以关联到对应的放映厅信息,比如放映厅的位置、座位布局等情况。
private long hall_id;
// 放映的电影编号,用于确定具体放映的是哪一部电影,可通过该编号关联到电影的详细信息,如电影名称、类型等。
private long movie_id;
// 电影放映时间,这里目前是字符串类型存储,格式可能需要按照一定规则来解析,若要进行日期格式化操作,可启用下面被注释掉的注解配置。
// @DateTimeFormat(pattern="yyyy-MM-dd")
private String schedule_startTime;
// 该场次电影的售价,单位可能是具体业务规定的货币单位,比如元。
private int schedule_price;
// 该场次剩余的座位数量,用于判断是否还有足够座位可供售卖等业务逻辑。
private int schedule_remain;
// 场次状态1表示上映中0表示下架通过该状态可以控制场次在业务系统中的展示和操作逻辑。
private int schedule_state;
// 所属放映厅对象通过该对象可以更方便地获取放映厅的详细属性和执行相关操作是与Hall类的关联对象。
private Hall schedule_hall;
// 放映的电影对象用于获取电影更全面的详细信息是与Movie类的关联对象。
private Movie schedule_movie;
// 所有的订单集合,包含购买该场次电影票的所有订单信息,可用于查询、统计等业务操作。
private List<Order> orderList;
// 获取场次的唯一标识符
public long getSchedule_id() {
return schedule_id;
}
// 设置场次的唯一标识符
public void setSchedule_id(long schedule_id) {
this.schedule_id = schedule_id;
}
// 获取场次状态
public int getSchedule_state() {
return schedule_state;
}
// 设置场次状态
public void setSchedule_state(int schedule_state) {
this.schedule_state = schedule_state;
}
// 获取放映的电影对象
public Movie getSchedule_movie() {
return schedule_movie;
}
// 设置放映的电影对象
public void setSchedule_movie(Movie schedule_movie) {
this.schedule_movie = schedule_movie;
}
// 获取所属放映厅的编号
public long getHall_id() {
return hall_id;
}
// 设置所属放映厅的编号
public void setHall_id(long hall_id) {
this.hall_id = hall_id;
}
// 获取放映的电影编号
public long getMovie_id() {
return movie_id;
}
// 设置放映的电影编号
public void setMovie_id(long movie_id) {
this.movie_id = movie_id;
}
// 获取电影放映时间
public String getSchedule_startTime() {
return schedule_startTime;
}
// 设置电影放映时间
public void setSchedule_startTime(String schedule_startTime) {
this.schedule_startTime = schedule_startTime;
}
// 获取该场次电影的售价
public int getSchedule_price() {
return schedule_price;
}
// 设置该场次电影的售价
public void setSchedule_price(int schedule_price) {
this.schedule_price = schedule_price;
}
// 获取该场次剩余的座位数量
public int getSchedule_remain() {
return schedule_remain;
}
// 设置该场次剩余的座位数量
public void setSchedule_remain(int schedule_remain) {
this.schedule_remain = schedule_remain;
}
// 获取所属放映厅对象
public Hall getSchedule_hall() {
return schedule_hall;
}
// 设置所属放映厅对象
public void setSchedule_hall(Hall schedule_hall) {
this.schedule_hall = schedule_hall;
}
// 获取所有的订单集合
public List<Order> getOrderList() {
return orderList;
}
// 设置所有的订单集合
public void setOrderList(List<Order> orderList) {
this.orderList = orderList;
}
}
private long schedule_id;
private long hall_id; //所属放映厅
private long movie_id; //放映的电影编号
//@DateTimeFormat(pattern="yyyy-MM-dd")
private String schedule_startTime; //电影放映时间
private int schedule_price; //售价
private int schedule_remain; //剩余座位数
private int schedule_state; //场次状态 1上映中 0下架
private Hall schedule_hall; //所属放映厅对象
private Movie schedule_movie; //放映的电影
private List<Order> orderList; //所有的订单集合
public long getSchedule_id() {
return schedule_id;
}
public void setSchedule_id(long schedule_id) {
this.schedule_id = schedule_id;
}
public int getSchedule_state() {
return schedule_state;
}
public void setSchedule_state(int schedule_state) {
this.schedule_state = schedule_state;
}
public Movie getSchedule_movie() {
return schedule_movie;
}
public void setSchedule_movie(Movie schedule_movie) {
this.schedule_movie = schedule_movie;
}
public long getHall_id() {
return hall_id;
}
public void setHall_id(long hall_id) {
this.hall_id = hall_id;
}
public long getMovie_id() {
return movie_id;
}
public void setMovie_id(long movie_id) {
this.movie_id = movie_id;
}
public String getSchedule_startTime() {
return schedule_startTime;
}
public void setSchedule_startTime(String schedule_startTime) {
this.schedule_startTime = schedule_startTime;
}
public int getSchedule_price() {
return schedule_price;
}
public void setSchedule_price(int schedule_price) {
this.schedule_price = schedule_price;
}
public int getSchedule_remain() {
return schedule_remain;
}
public void setSchedule_remain(int schedule_remain) {
this.schedule_remain = schedule_remain;
}
public Hall getSchedule_hall() {
return schedule_hall;
}
public void setSchedule_hall(Hall schedule_hall) {
this.schedule_hall = schedule_hall;
}
public List<Order> getOrderList() {
return orderList;
}
public void setOrderList(List<Order> orderList) {
this.orderList = orderList;
}
}

@ -6,70 +6,13 @@ import org.springframework.stereotype.Repository;
import com.entity.Cinema;
/**
* CinemaMapper
* Mapper
* 使`@Repository`Spring便Spring
*/
@Repository
public interface CinemaMapper {
/**
* ID
* SQL使MyBatisXMLSQLID`Cinema`
* @param cinema_id ID
* @return `Cinema``null`
*/
Cinema findCinemaById(long cinema_id);
/**
*
* SQL`Cinema`
* 10
* @param cinema `Cinema`
* @return `Integer`
*/
Integer addCinema(Cinema cinema);
/**
* `Cinema`
* SQL`Cinema`
*
* @param cinema `Cinema`
* @return `Integer`
*/
Integer updateCinema(Cinema cinema);
/**
* ID
* SQLID10
* @param cinema_id ID
* @return `Integer`
*/
Integer deleteCinema(long cinema_id);
/**
*
* SQL`Cinema``List<Cinema>`
* @return `Cinema``List`
*/
List<Cinema> findAllCinemas();
/**
*
* SQL
* `List<Cinema>``Cinema`
* @param cinema_name
* @return `Cinema``List`
*/
List<Cinema> findCinemasLikeName(String cinema_name);
/**
* ID
* SQL
* `List<Cinema>`便
* @param movie_id ID
* @return `Cinema``List`
*/
List<Cinema> findCinemasByMovieId(long movie_id);
}
Cinema findCinemaById(long cinema_id);
Integer addCinema(Cinema cinema);
Integer updateCinema(Cinema cinema);
Integer deleteCinema(long cinema_id);
List<Cinema> findAllCinemas();
List<Cinema> findCinemasLikeName(String cinema_name);
List<Cinema> findCinemasByMovieId(long movie_id);
}

@ -1,69 +1,46 @@
<?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">
<!-- 此 XML 文件为 MyBatis 的映射文件,其作用是定义与数据库交互的 SQL 语句以及结果集映射关系等配置内容,对应的接口为 com.mapper.CinemaMapper主要用于处理电影院Cinema相关的数据操作。 -->
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.CinemaMapper">
<!-- 定义名为 BaseResultMap 的结果集映射,用于将从数据库查询返回的结果(按照列的形式)映射到 com.entity.Cinema 实体类对应的属性上,方便 MyBatis 将数据库记录转换为 Java 对象,便于后续在程序中使用。 -->
<resultMap type="com.entity.Cinema" id="BaseResultMap">
<!-- 将数据库表 cinema 中的 cinema_id 列的值映射到 Cinema 实体类的 cinema_id 属性上,属性类型为 long -->
<id property="cinema_id" column="cinema_id" javaType="long"/>
<!-- 将数据库表 cinema 中的 cinema_name 列的值映射到 Cinema 实体类的 cinema_name 属性上,属性类型为 java.lang.String -->
<result property="cinema_name" column="cinema_name" javaType="java.lang.String"/>
<!-- 将数据库表 cinema 中的 cinema_address 列的值映射到 Cinema 实体类的 cinema_address 属性上,属性类型为 java.lang.String -->
<result property="cinema_address" column="cinema_address" javaType="java.lang.String"/>
</resultMap>
<!-- 定义名为 findCinemaById 的查询语句用于根据电影院的唯一标识ID从 cinema 表中查询对应的电影院信息。
参数类型为 long表示传入的参数是一个长整型的电影院 ID查询结果通过 BaseResultMap 定义的映射关系转换为 Cinema 实体对象返回。 -->
<select id="findCinemaById" parameterType="long" resultMap="BaseResultMap">
select * from cinema where cinema_id = #{cinema_id}
</select>
<!-- 定义名为 findAllCinemas 的查询语句,用于从 cinema 表中查询所有的电影院信息。
查询结果通过 BaseResultMap 定义的映射关系转换为 Cinema 实体对象,并以列表形式返回所有电影院记录对应的 Cinema 对象集合。 -->
<select id="findAllCinemas" resultMap="BaseResultMap">
select * from cinema
</select>
<!-- 定义名为 findCinemasLikeName 的查询语句,用于根据电影院名称进行模糊查询。
参数类型为 java.lang.String表示传入的参数是一个字符串类型的电影院名称通过使用 LIKE 关键字结合通配符 '%${value}%'(此处使用 ${} 是为了直接将传入的字符串拼接进 SQL 语句实现模糊匹配,需注意防止 SQL 注入问题),
在 cinema 表中查找名称符合模糊匹配条件的电影院记录,查询结果通过 BaseResultMap 映射为 Cinema 实体对象并返回对应的电影院集合。 -->
<select id="findCinemasLikeName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from cinema where cinema_name like '%${value}%'
</select>
<!-- 定义名为 findCinemasByMovieId 的查询语句用于根据电影的唯一标识ID查找放映该电影的所有电影院信息。
参数类型为 long表示传入的参数是一个长整型的电影 ID通过多表关联查询关联 hall 表、schedule 表和 cinema 表,根据各表中相应字段的关联关系,如 hall.hall_id=schedule.hall_id 和 hall.cinema_id=cinema.cinema_id 等),
筛选出放映指定电影(通过 schedule.movie_id = #{movie_id} 条件判断)的电影院记录,使用 DISTINCT 关键字去除重复记录后,查询结果通过 BaseResultMap 映射为 Cinema 实体对象并返回对应的电影院集合。 -->
<select id="findCinemasByMovieId" parameterType="long" resultMap="BaseResultMap">
select distinct cinema.* from hall,schedule,cinema
where hall.hall_id=schedule.hall_id and hall.cinema_id=cinema.cinema_id and schedule.movie_id = #{movie_id}
</select>
<!-- 定义名为 addCinema 的插入语句,用于向 cinema 表中插入一条新的电影院记录。
参数类型为 com.entity.Cinema表示传入的参数是一个 Cinema 实体对象,从该对象中获取 cinema_name 和 cinema_address 属性值插入到 cinema 表对应的列中,实现新增电影院记录的操作。 -->
<insert id="addCinema" parameterType="com.entity.Cinema">
insert into cinema(cinema_name,cinema_address)
values(#{cinema_name},#{cinema_address})
</insert>
<!-- 定义名为 updateCinema 的更新语句,用于更新 cinema 表中指定电影院记录的信息。
参数类型为 com.entity.Cinema表示传入的参数是一个 Cinema 实体对象,根据该对象中的 cinema_name 和 cinema_address 属性值来更新对应电影院记录的相应列的值,
更新条件是 cinema_id 列的值与传入对象的 cinema_id 属性值相等,通过 <set> 标签来动态生成需要更新的列,避免不必要的列更新为空值等情况。 -->
<update id="updateCinema" parameterType="com.entity.Cinema">
update cinema
<set>
cinema_name = #{cinema_name},
cinema_name = #{cinema_address}
</set>
where cinema_id = #{cinema_id}
</update>
<!-- 定义名为 deleteCinema 的删除语句,用于从 cinema 表中删除指定的电影院记录。
参数类型为 long表示传入的参数是一个长整型的电影院 ID根据该 ID 删除 cinema 表中对应的电影院记录,删除条件是 cinema_id 列的值与传入的参数值相等。 -->
<delete id="deleteCinema" parameterType="long">
delete from cinema where cinema_id = #{cinema_id}
</delete>
<resultMap type="com.entity.Cinema" id="BaseResultMap">
<id property="cinema_id" column="cinema_id" javaType="long"/>
<result property="cinema_name" column="cinema_name" javaType="java.lang.String"/>
<result property="cinema_address" column="cinema_address" javaType="java.lang.String"/>
</resultMap>
<select id="findCinemaById" parameterType="long" resultMap="BaseResultMap">
select * from cinema where cinema_id = #{cinema_id}
</select>
<select id="findAllCinemas" resultMap="BaseResultMap">
select * from cinema
</select>
<select id="findCinemasLikeName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from cinema where cinema_name like '%${value}%'
</select>
<select id="findCinemasByMovieId" parameterType="long" resultMap="BaseResultMap">
select distinct cinema.* from hall,schedule,cinema
where hall.hall_id=schedule.hall_id and hall.cinema_id=cinema.cinema_id and schedule.movie_id = #{movie_id}
</select>
<insert id="addCinema" parameterType="com.entity.Cinema">
insert into cinema(cinema_name,cinema_address)
values(#{cinema_name},#{cinema_address})
</insert>
<update id="updateCinema" parameterType="com.entity.Cinema">
update cinema
<set>
cinema_name = #{cinema_name},
cinema_address = #{cinema_address}
</set>
where cinema_id = #{cinema_id}
</update>
<delete id="deleteCinema" parameterType="long">
delete from cinema where cinema_id = #{cinema_id}
</delete>
</mapper>

@ -8,58 +8,14 @@ import com.entity.Comment;
@Repository
public interface CommentMapper {
/**
* ID
*
* @param comment_id
* @return IDnull
*/
Comment findCommentById(long comment_id);
/**
*
*
* @param comment
* @return 10
*/
Integer addComemnt(Comment comment);
/**
*
*
* @param comment
* @return 10
*/
Integer updateComment(Comment comment);
/**
* ID
*
* @param comment_id
* @return 10
*/
Integer deleteComment(long comment_id);
/**
*
*
* @return
*/
List<Comment> findAllComments();
/**
* ID
*
* @param movie_id
* @return ID
*/
List<Comment> findCommentsByMoiveId(long movie_id);
/**
*
*
* @param user_name
* @return
*/
List<Comment> findCommentsByUserName(String user_name);
}
//用户: 修改评论、增加评论
//管理员: 删除评论、 修改评论
//查询用户的评论
Comment findCommentById(long comment_id);
Integer addComemnt(Comment comment);
Integer updateComment(Comment comment);
Integer deleteComment(long comment_id);
List<Comment> findAllComments();
List<Comment> findCommentsByMoiveId(long movie_id);
List<Comment> findCommentsByUserName(String user_name);
}

@ -1,75 +1,50 @@
<?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">
<!-- 该 XML 文件为 MyBatis 的映射文件,用于定义与数据库交互的 SQL 语句以及结果集映射关系等配置。此映射文件对应的接口为 com.mapper.CommentMapper -->
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.CommentMapper">
<!-- 定义一个名为 BaseResultMap 的结果集映射,用于将从数据库查询返回的结果(以列的形式)映射到 com.entity.Comment 实体类的对应属性上。
这样 MyBatis 在执行查询操作后,能自动将数据库记录转换为对应的 Java 对象方便后续使用。 -->
<resultMap type="com.entity.Comment" id="BaseResultMap">
<!-- 将数据库表中的 comment_id 列的值映射到 Comment 实体类的 comment_id 属性上,属性类型为 long -->
<id property="comment_id" column="comment_id" javaType="long"/>
<!-- 将数据库表中的 comment_content 列的值映射到 Comment 实体类的 comment_content 属性上,属性类型为 java.lang.String -->
<result property="comment_content" column="comment_content" javaType="java.lang.String"/>
<!-- 将数据库表中的 comment_time 列的值映射到 Comment 实体类的 comment_time 属性上,属性类型为 java.util.Date -->
<result property="comment_time" column="comment_time" javaType="java.util.Date"/>
<!-- 将数据库表中的 movie_id 列的值映射到 Comment 实体类的 movie_id 属性上,属性类型为 long -->
<result property="movie_id" column="movie_id" javaType="long"/>
<!-- 将数据库表中的 user_id 列的值映射到 Comment 实体类的 user_id 属性上,属性类型为 long -->
<result property="user_id" column="user_id" javaType="long"/>
</resultMap>
<!-- 定义一个名为 findCommentById 的查询语句用于根据评论的唯一标识ID从 comment 表中查询对应的评论信息。
参数类型为 long表示传入的参数是一个长整型的评论 ID查询结果通过 BaseResultMap 定义的映射关系转换为 Comment 实体对象返回。 -->
<select id="findCommentById" parameterType="long" resultMap="BaseResultMap">
select * from comment where comment_id = #{comment_id}
</select>
<!-- 定义一个名为 findAllComments 的查询语句,用于从 comment 表中查询所有的评论信息。
查询结果通过 BaseResultMap 定义的映射关系转换为 Comment 实体对象,并以列表形式返回所有的评论记录对应的 Comment 对象集合。 -->
<select id="findAllComments" resultMap="BaseResultMap">
select * from comment
</select>
<!-- 定义一个名为 findCommentsByUserName 的查询语句,用于根据用户名从 comment 表中查询该用户发表的所有评论信息。
参数类型为 java.lang.String表示传入的参数是一个字符串类型的用户名通过关联 comment 表和 user 表(根据 user_id 关联),筛选出指定用户名对应的评论记录,
结果同样通过 BaseResultMap 映射为 Comment 实体对象并返回对应的评论集合。 -->
<select id="findCommentsByUserName" parameterType="java.lang.String" resultMap="BaseResultMap">
select comment.* from comment,user where comment.user_id = user.user_id and user.user_name = #{user_name}
</select>
<!-- 定义一个名为 findCommentsByMoiveId 的查询语句用于根据电影的唯一标识ID从 comment 表中查询该电影对应的所有评论信息。
参数类型为 long表示传入的参数是一个长整型的电影 ID查询结果通过 BaseResultMap 映射为 Comment 实体对象并返回对应的评论集合。 -->
<select id="findCommentsByMoiveId" parameterType="long" resultMap="BaseResultMap">
select * from comment where movie_id = #{movie_id}
</select>
<!-- 定义一个名为 addComemnt 的插入语句,用于向 comment 表中插入一条新的评论记录。
参数类型为 com.entity.Comment表示传入的参数是一个 Comment 实体对象,从该对象中获取相应属性值插入到 comment 表对应的列中,插入的列包括 comment_content、comment_time、movie_id 和 user_id。 -->
<insert id="addComemnt" parameterType="com.entity.Comment">
insert into comment(comment_content,comment_time,movie_id,user_id)
values(#{comment_content},#{comment_time},#{movie_id},#{user_id})
</insert>
<!-- 定义一个名为 updateComment 的更新语句,用于更新 comment 表中指定评论记录的信息。
参数类型为 com.entity.Comment表示传入的参数是一个 Comment 实体对象,根据该对象中的属性值来更新对应评论记录的 comment_content、comment_time、movie_id 和 user_id 列的值,
更新条件是 comment_id 列的值与传入对象的 comment_id 属性值相等,通过 <set> 标签来动态生成需要更新的列,避免不必要的列更新为空值等情况。 -->
<update id="updateComment" parameterType="com.entity.Comment">
update comment
<set>
comment_content = #{comment_content},
comment_time = #{comment_time},
movie_id = #{movie_id},
user_id = #{user_id}
</set>
where comment_id = #{comment_id}
</update>
<!-- 定义一个名为 deleteComment 的删除语句,用于从 comment 表中删除指定评论记录。
参数类型为 long表示传入的参数是一个长整型的评论 ID根据该 ID 删除 comment 表中对应的评论记录,删除条件是 comment_id 列的值与传入的参数值相等。 -->
<delete id="deleteComment" parameterType="long">
delete from comment where comment_id = #{comment_id}
</delete>
<resultMap type="com.entity.Comment" id="BaseResultMap">
<id property="comment_id" column="comment_id" javaType="long"/>
<result property="comment_content" column="comment_content" javaType="java.lang.String"/>
<result property="comment_time" column="comment_time" javaType="java.util.Date"/>
<result property="movie_id" column="movie_id" javaType="long"/>
<result property="user_id" column="user_id" javaType="long"/>
</resultMap>
<select id="findCommentById" parameterType="long" resultMap="BaseResultMap">
select * from comment where comment_id = #{comment_id}
</select>
<select id="findAllComments" resultMap="BaseResultMap">
select * from comment
</select>
<select id="findCommentsByUserName" parameterType="java.lang.String" resultMap="BaseResultMap">
select comment.* from comment,user where comment.user_id = user.user_id and user.user_name = #{user_name}
</select>
<select id="findCommentsByMoiveId" parameterType="long" resultMap="BaseResultMap">
select * from comment where movie_id = #{movie_id}
</select>
<insert id="addComemnt" parameterType="com.entity.Comment">
insert into comment(comment_content,comment_time,movie_id,user_id)
values(#{comment_content},#{comment_time},#{movie_id},#{user_id})
</insert>
<update id="updateComment" parameterType="com.entity.Comment">
update comment
<set>
comment_content = #{comment_content},
comment_time = #{comment_time},
movie_id = #{movie_id},
user_id = #{user_id}
</set>
where comment_id = #{comment_id}
</update>
<delete id="deleteComment" parameterType="long">
delete from comment where comment_id = #{comment_id}
</delete>
</mapper>

@ -7,71 +7,14 @@ import org.springframework.stereotype.Repository;
import com.entity.Hall;
/**
* HallMapperHall
* Mapper
* 使`@Repository`Spring便Spring
*/
@Repository
public interface HallMapper {
/**
* ID
* SQL使MyBatisXMLSQLID`Hall`
* @param hall_id ID
* @return `Hall``null`
*/
Hall findHallById(long hall_id);
/**
*
* 使`@Param`便SQLSQL
* `Hall`
* @param cinema_name
* @param hall_name
* @return `Hall``null`
*/
Hall findHallByCinemaAndHallName(@Param("cinema_name") String cinema_name, @Param("hall_name") String hall_name);
/**
*
* SQL`Hall`
* 10
* @param hall `Hall`
* @return `Integer`
*/
Integer addHall(Hall hall);
/**
* `Hall`
* SQL`Hall`
*
* @param hall `Hall`
* @return `Integer`
*/
Integer updateHall(Hall hall);
/**
* ID
* SQLID10
* @param hall_id ID
* @return `Integer`
*/
Integer deleteHall(long hall_id);
/**
* ID
* SQL
* `Hall``List<Hall>`便
* @param cinema_id ID
* @return `Hall``List`
*/
List<Hall> findHallByCinemaId(long cinema_id);
/**
*
* SQL`Hall``List<Hall>`
* @return `Hall``List`
*/
List<Hall> findAllHalls();
}
Hall findHallById(long hall_id);
Hall findHallByCinemaAndHallName(@Param("cinema_name")String cinema_name,@Param("hall_name")String hall_name);
Integer addHall(Hall hall);
Integer updateHall(Hall hall);
Integer deleteHall(long hall_id);
List<Hall> findHallByCinemaId(long cinema_id);
List<Hall> findAllHalls();
}

@ -1,149 +1,46 @@
<?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">
<!-- 此 XML 文件为 MyBatis 的映射文件,用于定义与数据库交互的 SQL 语句以及结果集映射关系等配置内容,其对应的接口是 com.mapper.MovieMapper主要负责处理电影Movie相关的数据操作。 -->
<mapper namespace="com.mapper.MovieMapper">
<!-- 定义名为 BaseResultMap 的结果集映射,用于将从数据库查询返回的结果(按照列的形式)映射到 com.entity.Movie 实体类对应的属性上,方便 MyBatis 将数据库记录转换为 Java 对象,便于后续在程序中使用。 -->
<resultMap type="com.entity.Movie" id="BaseResultMap">
<!-- 将数据库表 movie 中的 movie_id 列的值映射到 Movie 实体类的 movie_id 属性上,属性类型为 long -->
<id property="movie_id" column="movie_id" javaType="long"/>
<!-- 将数据库表 movie 中的 movie_actor 列的值映射到 Movie 实体类的 movie_actor 属性上,属性类型为 java.lang.String -->
<result property="movie_actor" column="movie_actor" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_boxOffice 列的值映射到 Movie 实体类的 movie_boxOffice 属性上,属性类型为 float -->
<result property="movie_boxOffice" column="movie_boxOffice" javaType="float"/>
<!-- 将数据库表 movie 中的 movie_cn_name 列的值映射到 Movie 实体类的 movie_cn_name 属性上,属性类型为 java.lang.String -->
<result property="movie_cn_name" column="movie_cn_name" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_commentCount 列的值映射到 Movie 实体类的 movie_commentCount 属性上,属性类型为 long -->
<result property="movie_commentCount" column="movie_commentCount" javaType="long"/>
<!-- 将数据库表 movie 中的 movie_country 列的值映射到 Movie 实体类的 movie_country 属性上,属性类型为 java.lang.String -->
<result property="movie_country" column="movie_country" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_detail 列的值映射到 Movie 实体类的 movie_detail 属性上,属性类型为 java.lang.String -->
<result property="movie_detail" column="movie_detail" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_director 列的值映射到 Movie 实体类的 movie_director 属性上,属性类型为 java.lang.String -->
<result property="movie_director" column="movie_director" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_duration 列的值映射到 Movie 实体类的 movie_duration 属性上,属性类型为 java.lang.String -->
<result property="movie_duration" column="movie_duration" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_fg_name 列的值映射到 Movie 实体类的 movie_fg_name 属性上,属性类型为 java.lang.String -->
<result property="movie_fg_name" column="movie_fg_name" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_picture 列的值映射到 Movie 实体类的 movie_picture 属性上,属性类型为 java.lang.String -->
<result property="movie_picture" column="movie_picture" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_score 列的值映射到 Movie 实体类的 movie_score 属性上,属性类型为 float -->
<result property="movie_score" column="movie_score" javaType="float"/>
<!-- 将数据库表 movie 中的 movie_type 列的值映射到 Movie 实体类的 movie_type 属性上,属性类型为 java.lang.String -->
<result property="movie_type" column="movie_type" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_releaseDate 列的值映射到 Movie 实体类的 movie_releaseDate 属性上,属性类型为 java.sql.Date -->
<result property="movie_releaseDate" column="movie_releaseDate" javaType="java.sql.Date"/>
<!-- 将数据库表 movie 中的 movie_state 列的值映射到 Movie 实体类的 movie_state 属性上,属性类型为 java.lang.Integer -->
<result property="movie_state" column="movie_state" javaType="java.lang.Integer"/>
</resultMap>
<!-- 定义名为 findMovieById 的查询语句用于根据电影的唯一标识ID从 movie 表中查询对应的电影信息。
参数类型为 long表示传入的参数是一个长整型的电影 ID查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象返回。 -->
<select id="findMovieById" parameterType="long" resultMap="BaseResultMap">
select * from movie where movie_id = #{movie_id}
</select>
<!-- 定义名为 findMovieByName 的查询语句,用于根据电影的中文名称从 movie 表中查询对应的电影信息。
参数类型为 java.lang.String表示传入的参数是一个字符串类型的电影中文名称查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象返回。 -->
<select id="findMovieByName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from movie where movie_cn_name = #{movie_cn_name}
</select>
<!-- 定义名为 addMovie 的插入语句,用于向 movie 表中插入一条新的电影记录。
参数类型为 com.entity.Movie表示传入的参数是一个 Movie 实体对象,从该对象中获取 movie_cn_name、movie_fg_name、movie_actor、movie_director、movie_detail、movie_duration、movie_type、movie_score、movie_releaseDate、movie_country 和 movie_picture 等属性值,插入到 movie 表对应的列中,实现新增电影记录的操作。 -->
<insert id="addMovie" parameterType="com.entity.Movie">
insert into movie(movie_cn_name,movie_fg_name,movie_actor,movie_director,movie_detail,movie_duration,movie_type,movie_score,movie_releaseDate,movie_country,movie_picture)
values(#{movie_cn_name},#{movie_fg_name},#{movie_actor},#{movie_director},#{movie_detail},#{movie_duration},#{movie_type},#{movie_score},#{movie_releaseDate},#{movie_country},#{movie_picture})
</insert>
<!-- 定义名为 deleteMovie 的更新语句,用于将指定电影记录的状态标记为下架(这里将 movie_state 设置为 0通常表示下架状态
参数类型为 long表示传入的参数是一个长整型的电影 ID根据该 ID 更新 movie 表中对应电影记录的 movie_state 字段值,以此实现电影下架的逻辑操作。 -->
<update id="deleteMovie" parameterType="long">
update movie
<set>
movie_state = 0
</set>
where movie_id = #{movie_id}
</update>
<!-- 定义名为 changeMovieBoxOffice 的更新语句,用于更新指定电影的票房数据,将原票房数值加上传入的票房增量值。
这里通过 SQL 语句中的 movie_boxOffice = movie_boxOffice + #{movie_boxOffice} 实现票房的累加更新操作,更新条件是 movie_id 列的值与传入的电影 ID 参数值相等,用于在电影有新的票房收入时更新数据库中的票房数据。 -->
<update id="changeMovieBoxOffice">
update movie set movie_boxOffice = movie_boxOffice + #{movie_boxOffice} where movie_id = #{movie_id}
</update>
<!-- 定义名为 updateMovie 的更新语句,用于更新 movie 表中指定电影记录的部分信息(除了 movie_id、movie_state 等未在 <set> 标签内列出的字段,通常这些字段在更新时可能有特殊逻辑或不常变动)。
参数类型为 com.entity.Movie表示传入的参数是一个 Movie 实体对象,根据该对象中的 movie_cn_name、movie_fg_name、movie_actor、movie_director、movie_detail、movie_duration、movie_type、movie_country 和 movie_picture 等属性值来更新对应电影记录的相应列的值,更新条件是 movie_id 列的值与传入对象的 movie_id 属性值相等,通过 <set> 标签来动态生成需要更新的列,避免不必要的列更新为空值等情况。 -->
<update id="updateMovie" parameterType="com.entity.Movie">
update movie
<set>
movie_cn_name = #{movie_cn_name},
movie_fg_name = #{movie_fg_name},
movie_actor = #{movie_actor},
movie_director = #{movie_director},
movie_detail = #{movie_detail},
movie_duration = #{movie_duration},
movie_type = #{movie_type},
movie_country = #{movie_country},
movie_picture = #{movie_picture}
</set>
where movie_id = #{movie_id}
</update>
<!-- 定义名为 deleteMovieCommentCount 的更新语句用于将指定电影的评论人数movie_commentCount 字段)减 1通常用于在有用户删除对应电影的评论等情况下更新评论人数统计数据。
参数类型为 long表示传入的参数是一个长整型的电影 ID根据该 ID 更新 movie 表中对应电影记录的 movie_commentCount 字段值,实现评论人数的递减操作。 -->
<update id="deleteMovieCommentCount" parameterType="long">
update movie set movie_commentCount = movie_commentCount - 1 where movie_id = #{movie_id}
</update>
<!-- 定义名为 addMovieCommentCount 的更新语句用于将指定电影的评论人数movie_commentCount 字段)加 1比如在有新用户对该电影发表评论时调用此方法来更新评论人数统计数据。
参数类型为 long表示传入的参数是一个长整型的电影 ID根据该 ID 更新 movie 表中对应电影记录的 movie_commentCount 字段值,实现评论人数的递增操作。 -->
<update id="addMovieCommentCount" parameterType="long">
update movie set movie_commentCount = movie_commentCount + 1 where movie_id = #{movie_id}
</update>
<!-- 定义名为 findAllMovies 的查询语句,用于根据电影的状态查询所有符合该状态的电影信息。
参数类型为 java.lang.Integer表示传入的参数是一个整数类型的电影状态值查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象,并以列表形式返回所有符合该状态的电影记录对应的 Movie 对象集合,方便按状态获取电影列表,例如获取所有在线(状态值表示在线的情况)的电影信息等。 -->
<select id="findAllMovies" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select * from movie where movie_state = #{movie_state}
</select>
<!-- 定义名为 findMoviesLikeName 的查询语句用于根据电影的中文名称进行模糊查询并且只查询处于在线状态movie_state = 1通常 1 表示在线)的电影信息。
参数类型为 java.lang.String表示传入的参数是一个字符串类型的电影中文名称通过使用 LIKE 关键字结合通配符 '%${value}%'(此处使用 ${} 是为了直接将传入的字符串拼接进 SQL 语句实现模糊匹配,需注意防止 SQL 注入问题),在 movie 表中查找名称符合模糊匹配条件且状态为在线的电影记录,查询结果通过 BaseResultMap 映射为 Movie 实体对象并返回对应的电影集合,常用于电影搜索功能实现。 -->
<select id="findMoviesLikeName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from movie where movie_cn_name like '%${value}%' and movie_state = 1
</select>
<!-- 定义名为 findMoviesLikeType 的查询语句用于根据电影类型进行模糊查询并且只查询处于在线状态movie_state = 1的电影信息。
参数类型为 java.lang.String表示传入的参数是一个字符串类型的电影类型通过使用 LIKE 关键字结合通配符 '%${value}%' 在 movie 表中查找类型符合模糊匹配条件且状态为在线的电影记录,查询结果通过 BaseResultMap 映射为 Movie 实体对象并返回对应的电影集合,便于用户按类型查找感兴趣的电影。 -->
<select id="findMoviesLikeType" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from movie where movie_type like '%${value}%' and movie_state = 1
</select>
<!-- 定义名为 sortMovieByDate 的查询语句用于按照电影的上映时间movie_releaseDate 字段对所有处于在线状态movie_state = 1的电影进行降序排序并返回排序后的电影信息列表。
查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象,并以列表形式返回排序后的电影记录对应的 Movie 对象集合,方便按照上映时间展示电影,例如展示新上映电影在前的列表等情况。 -->
<select id="sortMovieByDate" resultMap="BaseResultMap">
select * from movie where movie_state = 1 order by movie_releaseDate DESC
</select>
<!-- 定义名为 sortMovieByCount 的查询语句用于按照电影的评论人数movie_commentCount 字段对所有处于在线状态movie_state = 1的电影进行降序排序并返回排序后的电影信息列表。
查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象,并以列表形式返回排序后的电影记录对应的 Movie 对象集合,可用于展示热门评论电影等相关业务场景,例如评论数多的电影排在前面。 -->
<select id="sortMovieByCount" resultMap="BaseResultMap">
select * from movie where movie_state = 1 order by movie_commentCount DESC
</select>
<!-- 定义名为 sortMovieByScore 的查询语句用于按照电影的评分movie_score 字段对所有处于在线状态movie_state = 1的电影进行降序排序并返回排序后的电影信息列表。
查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象,并以列表形式返回排序后的电影记录对应的 Movie 对象集合,有助于展示高分电影在前等排序结果给用户查看,方便用户选择评分较高的电影。 -->
<select id="sortMovieByScore" resultMap="BaseResultMap">
select * from movie where movie_state = 1 order by movie_score DESC
</select>
<!-- 定义名为 sortMovieByBoxOffice 的查询语句用于按照电影的票房movie_boxOffice 字段对所有处于在线状态movie_state = 1的电影进行降序排序并返回排序后的电影信息列表。
查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象,并以列表形式返回排序后的电影记录对应的 Movie 对象集合,方便展示票房排名情况等业务场景,例如票房排行榜等,让用户可以看到票房较高的电影。 -->
<select id="sortMovieByBoxOffice" resultMap="BaseResultMap">
select * from movie where movie_state = 1 order by movie_boxOffice desc
</select>
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.HallMapper">
<resultMap type="com.entity.Hall" id="BaseResultMap">
<id property="hall_id" column="hall_id" javaType="long"/>
<result property="hall_name" column="hall_name" javaType="java.lang.String"/>
<result property="cinema_id" column="cinema_id" javaType="long"/>
</resultMap>
<select id="findHallById" parameterType="long" resultMap="BaseResultMap">
select * from hall where hall_id = #{hall_id}
</select>
<select id="findHallByCinemaAndHallName" resultMap="BaseResultMap">
select hall.* from hall,cinema where hall.cinema_id = cinema.cinema_id
and cinema_name = #{cinema_name} and hall_name= #{hall_name}
</select>
<select id="findHallByCinemaId" parameterType="long" resultMap="BaseResultMap">
select * from hall where cinema_id = #{cinema_id}
</select>
<select id="findAllHalls" resultMap="BaseResultMap">
select * from hall
</select>
<insert id="addHall" parameterType="com.entity.Hall">
insert into hall(hall_name,movie_id)
values(hall_name,movie_id)
</insert>
<update id="updateHall" parameterType="com.entity.Hall">
update hall
<set>
hall_name = #{hall_name},
movie_id = #{movie_id}
</set>
where hall_id = #{hall_id}
</update>
<delete id="deleteHall" parameterType="long">
delete from hall where hall_id = #{hall_id}
</delete>
</mapper>

@ -7,140 +7,23 @@ import org.springframework.stereotype.Repository;
import com.entity.Movie;
/**
* MovieMapperMovie
* Mapper
* 使`@Repository`Spring便Spring
*/
@Repository
public interface MovieMapper {
/**
* ID
* SQL使MyBatisXMLSQLID`Movie`便
* @param movie_id ID
* @return `Movie``null`
*/
Movie findMovieById(long movie_id);
/**
*
* SQL`Movie`便
* @param movie_cn_name
* @return `Movie``null`
*/
Movie findMovieByName(String movie_cn_name);
/**
*
* SQL`Movie`
* 10
* @param movie `Movie`
* @return `Integer`
*/
Integer addMovie(Movie movie);
/**
* ID
* SQLID10
* @param movie_id ID
* @return `Integer`
*/
Integer deleteMovie(long movie_id);
/**
* `Movie`
* SQL`Movie`
*
* @param movie `Movie`
* @return `Integer`
*/
Integer updateMovie(Movie movie);
/**
* ID
* SQLID0
*
* @param movie_id ID
* @return `Integer`
*/
Integer deleteMovieCommentCount(long movie_id);
/**
* ID
* SQLID
*
* @param movie_id ID
* @return `Integer`
*/
Integer addMovieCommentCount(long movie_id);
/**
* ID
* `@Param`便SQLSQLID
*
* @param movie_boxOffice
* @param movie_id ID
* @return `Integer`
*/
Integer changeMovieBoxOffice(@Param("movie_boxOffice") float movie_boxOffice, @Param("movie_id") long movie_id);
/**
* 线
* SQL1线0
* `Movie``List<Movie>`便
* @param movie_state
* @return `Movie``List`
*/
List<Movie> findAllMovies(int movie_state);
/**
*
* SQL
* `List<Movie>``Movie`
* @param name
* @return `Movie``List`
*/
List<Movie> findMoviesLikeName(String name);
/**
*
* SQL
* `List<Movie>``Movie`便
* @param type
* @return `Movie``List`
*/
List<Movie> findMoviesLikeType(String type);
/**
*
* SQL
* `Movie``List<Movie>`便
* @return `Movie``List`
*/
List<Movie> sortMovieByDate();
/**
*
* SQL
* `Movie``List<Movie>`
* @return `Movie``List`
*/
List<Movie> sortMovieByCount();
/**
*
* SQL
* `Movie``List<Movie>`
* @return `Movie``List`
*/
List<Movie> sortMovieByScore();
/**
*
* SQL
* `Movie``List<Movie>`便
* @return `Movie``List`
*/
List<Movie> sortMovieByBoxOffice();
}
Movie findMovieById(long movie_id);
Movie findMovieByName(String movie_cn_name);
Integer addMovie(Movie movie);
Integer deleteMovie(long movie_id);
Integer updateMovie(Movie movie);
Integer deleteMovieCommentCount(long movie_id);
Integer addMovieCommentCount(long movie_id);
Integer changeMovieBoxOffice(@Param("movie_boxOffice")float movie_boxOffice,@Param("movie_id")long movie_id);
List<Movie> findAllMovies(int movie_state);
List<Movie> findMoviesLikeName(String name);
List<Movie> findMoviesLikeType(String type);
//上映时间 参评人数 评分
List<Movie> sortMovieByDate();
List<Movie> sortMovieByCount();
List<Movie> sortMovieByScore();
//票房排序
List<Movie> sortMovieByBoxOffice();
}

@ -1,149 +1,101 @@
<?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">
<!-- 此 XML 文件为 MyBatis 的映射文件,用于定义与数据库交互的 SQL 语句以及结果集映射关系等配置内容,其对应的接口是 com.mapper.MovieMapper主要负责处理电影Movie相关的数据操作。 -->
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.MovieMapper">
<!-- 定义名为 BaseResultMap 的结果集映射,用于将从数据库查询返回的结果(按照列的形式)映射到 com.entity.Movie 实体类对应的属性上,方便 MyBatis 将数据库记录转换为 Java 对象,便于后续在程序中使用。 -->
<resultMap type="com.entity.Movie" id="BaseResultMap">
<!-- 将数据库表 movie 中的 movie_id 列的值映射到 Movie 实体类的 movie_id 属性上,属性类型为 long -->
<id property="movie_id" column="movie_id" javaType="long"/>
<!-- 将数据库表 movie 中的 movie_actor 列的值映射到 Movie 实体类的 movie_actor 属性上,属性类型为 java.lang.String -->
<result property="movie_actor" column="movie_actor" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_boxOffice 列的值映射到 Movie 实体类的 movie_boxOffice 属性上,属性类型为 float -->
<result property="movie_boxOffice" column="movie_boxOffice" javaType="float"/>
<!-- 将数据库表 movie 中的 movie_cn_name 列的值映射到 Movie 实体类的 movie_cn_name 属性上,属性类型为 java.lang.String -->
<result property="movie_cn_name" column="movie_cn_name" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_commentCount 列的值映射到 Movie 实体类的 movie_commentCount 属性上,属性类型为 long -->
<result property="movie_commentCount" column="movie_commentCount" javaType="long"/>
<!-- 将数据库表 movie 中的 movie_country 列的值映射到 Movie 实体类的 movie_country 属性上,属性类型为 java.lang.String -->
<result property="movie_country" column="movie_country" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_detail 列的值映射到 Movie 实体类的 movie_detail 属性上,属性类型为 java.lang.String -->
<result property="movie_detail" column="movie_detail" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_director 列的值映射到 Movie 实体类的 movie_director 属性上,属性类型为 java.lang.String -->
<result property="movie_director" column="movie_director" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_duration 列的值映射到 Movie 实体类的 movie_duration 属性上,属性类型为 java.lang.String -->
<result property="movie_duration" column="movie_duration" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_fg_name 列的值映射到 Movie 实体类的 movie_fg_name 属性上,属性类型为 java.lang.String -->
<result property="movie_fg_name" column="movie_fg_name" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_picture 列的值映射到 Movie 实体类的 movie_picture 属性上,属性类型为 java.lang.String -->
<result property="movie_picture" column="movie_picture" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_score 列的值映射到 Movie 实体类的 movie_score 属性上,属性类型为 float -->
<result property="movie_score" column="movie_score" javaType="float"/>
<!-- 将数据库表 movie 中的 movie_type 列的值映射到 Movie 实体类的 movie_type 属性上,属性类型为 java.lang.String -->
<result property="movie_type" column="movie_type" javaType="java.lang.String"/>
<!-- 将数据库表 movie 中的 movie_releaseDate 列的值映射到 Movie 实体类的 movie_releaseDate 属性上,属性类型为 java.sql.Date -->
<result property="movie_releaseDate" column="movie_releaseDate" javaType="java.sql.Date"/>
<!-- 将数据库表 movie 中的 movie_state 列的值映射到 Movie 实体类的 movie_state 属性上,属性类型为 java.lang.Integer -->
<result property="movie_state" column="movie_state" javaType="java.lang.Integer"/>
</resultMap>
<!-- 定义名为 findMovieById 的查询语句用于根据电影的唯一标识ID从 movie 表中查询对应的电影信息。
参数类型为 long表示传入的参数是一个长整型的电影 ID查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象返回。 -->
<select id="findMovieById" parameterType="long" resultMap="BaseResultMap">
select * from movie where movie_id = #{movie_id}
</select>
<!-- 定义名为 findMovieByName 的查询语句,用于根据电影的中文名称从 movie 表中查询对应的电影信息。
参数类型为 java.lang.String表示传入的参数是一个字符串类型的电影中文名称查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象返回。 -->
<select id="findMovieByName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from movie where movie_cn_name = #{movie_cn_name}
</select>
<!-- 定义名为 addMovie 的插入语句,用于向 movie 表中插入一条新的电影记录。
参数类型为 com.entity.Movie表示传入的参数是一个 Movie 实体对象,从该对象中获取 movie_cn_name、movie_fg_name、movie_actor、movie_director、movie_detail、movie_duration、movie_type、movie_score、movie_releaseDate、movie_country 和 movie_picture 等属性值,插入到 movie 表对应的列中,实现新增电影记录的操作。 -->
<insert id="addMovie" parameterType="com.entity.Movie">
insert into movie(movie_cn_name,movie_fg_name,movie_actor,movie_director,movie_detail,movie_duration,movie_type,movie_score,movie_releaseDate,movie_country,movie_picture)
values(#{movie_cn_name},#{movie_fg_name},#{movie_actor},#{movie_director},#{movie_detail},#{movie_duration},#{movie_type},#{movie_score},#{movie_releaseDate},#{movie_country},#{movie_picture})
</insert>
<!-- 定义名为 deleteMovie 的更新语句,用于将指定电影记录的状态标记为下架(这里将 movie_state 设置为 0通常表示下架状态
参数类型为 long表示传入的参数是一个长整型的电影 ID根据该 ID 更新 movie 表中对应电影记录的 movie_state 字段值,以此实现电影下架的逻辑操作。 -->
<update id="deleteMovie" parameterType="long">
update movie
<set>
movie_state = 0
</set>
where movie_id = #{movie_id}
</update>
<!-- 定义名为 changeMovieBoxOffice 的更新语句,用于更新指定电影的票房数据,将原票房数值加上传入的票房增量值。
这里通过 SQL 语句中的 movie_boxOffice = movie_boxOffice + #{movie_boxOffice} 实现票房的累加更新操作,更新条件是 movie_id 列的值与传入的电影 ID 参数值相等,用于在电影有新的票房收入时更新数据库中的票房数据。 -->
<update id="changeMovieBoxOffice">
update movie set movie_boxOffice = movie_boxOffice + #{movie_boxOffice} where movie_id = #{movie_id}
</update>
<!-- 定义名为 updateMovie 的更新语句,用于更新 movie 表中指定电影记录的部分信息(除了 movie_id、movie_state 等未在 <set> 标签内列出的字段,通常这些字段在更新时可能有特殊逻辑或不常变动)。
参数类型为 com.entity.Movie表示传入的参数是一个 Movie 实体对象,根据该对象中的 movie_cn_name、movie_fg_name、movie_actor、movie_director、movie_detail、movie_duration、movie_type、movie_country 和 movie_picture 等属性值来更新对应电影记录的相应列的值,更新条件是 movie_id 列的值与传入对象的 movie_id 属性值相等,通过 <set> 标签来动态生成需要更新的列,避免不必要的列更新为空值等情况。 -->
<update id="updateMovie" parameterType="com.entity.Movie">
update movie
<set>
movie_cn_name = #{movie_cn_name},
movie_fg_name = #{movie_fg_name},
movie_actor = #{movie_actor},
movie_director = #{movie_director},
movie_detail = #{movie_detail},
movie_duration = #{movie_duration},
movie_type = #{movie_type},
movie_country = #{movie_country},
movie_picture = #{movie_picture}
</set>
where movie_id = #{movie_id}
</update>
<!-- 定义名为 deleteMovieCommentCount 的更新语句用于将指定电影的评论人数movie_commentCount 字段)减 1通常用于在有用户删除对应电影的评论等情况下更新评论人数统计数据。
参数类型为 long表示传入的参数是一个长整型的电影 ID根据该 ID 更新 movie 表中对应电影记录的 movie_commentCount 字段值,实现评论人数的递减操作。 -->
<update id="deleteMovieCommentCount" parameterType="long">
update movie set movie_commentCount = movie_commentCount - 1 where movie_id = #{movie_id}
</update>
<!-- 定义名为 addMovieCommentCount 的更新语句用于将指定电影的评论人数movie_commentCount 字段)加 1比如在有新用户对该电影发表评论时调用此方法来更新评论人数统计数据。
参数类型为 long表示传入的参数是一个长整型的电影 ID根据该 ID 更新 movie 表中对应电影记录的 movie_commentCount 字段值,实现评论人数的递增操作。 -->
<update id="addMovieCommentCount" parameterType="long">
update movie set movie_commentCount = movie_commentCount + 1 where movie_id = #{movie_id}
</update>
<!-- 定义名为 findAllMovies 的查询语句,用于根据电影的状态查询所有符合该状态的电影信息。
参数类型为 java.lang.Integer表示传入的参数是一个整数类型的电影状态值查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象,并以列表形式返回所有符合该状态的电影记录对应的 Movie 对象集合,方便按状态获取电影列表,例如获取所有在线(状态值表示在线的情况)的电影信息等。 -->
<select id="findAllMovies" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select * from movie where movie_state = #{movie_state}
</select>
<!-- 定义名为 findMoviesLikeName 的查询语句用于根据电影的中文名称进行模糊查询并且只查询处于在线状态movie_state = 1通常 1 表示在线)的电影信息。
参数类型为 java.lang.String表示传入的参数是一个字符串类型的电影中文名称通过使用 LIKE 关键字结合通配符 '%${value}%'(此处使用 ${} 是为了直接将传入的字符串拼接进 SQL 语句实现模糊匹配,需注意防止 SQL 注入问题),在 movie 表中查找名称符合模糊匹配条件且状态为在线的电影记录,查询结果通过 BaseResultMap 映射为 Movie 实体对象并返回对应的电影集合,常用于电影搜索功能实现。 -->
<select id="findMoviesLikeName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from movie where movie_cn_name like '%${value}%' and movie_state = 1
</select>
<!-- 定义名为 findMoviesLikeType 的查询语句用于根据电影类型进行模糊查询并且只查询处于在线状态movie_state = 1的电影信息。
参数类型为 java.lang.String表示传入的参数是一个字符串类型的电影类型通过使用 LIKE 关键字结合通配符 '%${value}%' 在 movie 表中查找类型符合模糊匹配条件且状态为在线的电影记录,查询结果通过 BaseResultMap 映射为 Movie 实体对象并返回对应的电影集合,便于用户按类型查找感兴趣的电影。 -->
<select id="findMoviesLikeType" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from movie where movie_type like '%${value}%' and movie_state = 1
</select>
<!-- 定义名为 sortMovieByDate 的查询语句用于按照电影的上映时间movie_releaseDate 字段对所有处于在线状态movie_state = 1的电影进行降序排序并返回排序后的电影信息列表。
查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象,并以列表形式返回排序后的电影记录对应的 Movie 对象集合,方便按照上映时间展示电影,例如展示新上映电影在前的列表等情况。 -->
<select id="sortMovieByDate" resultMap="BaseResultMap">
select * from movie where movie_state = 1 order by movie_releaseDate DESC
</select>
<!-- 定义名为 sortMovieByCount 的查询语句用于按照电影的评论人数movie_commentCount 字段对所有处于在线状态movie_state = 1的电影进行降序排序并返回排序后的电影信息列表。
查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象,并以列表形式返回排序后的电影记录对应的 Movie 对象集合,可用于展示热门评论电影等相关业务场景,例如评论数多的电影排在前面。 -->
<select id="sortMovieByCount" resultMap="BaseResultMap">
select * from movie where movie_state = 1 order by movie_commentCount DESC
</select>
<!-- 定义名为 sortMovieByScore 的查询语句用于按照电影的评分movie_score 字段对所有处于在线状态movie_state = 1的电影进行降序排序并返回排序后的电影信息列表。
查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象,并以列表形式返回排序后的电影记录对应的 Movie 对象集合,有助于展示高分电影在前等排序结果给用户查看,方便用户选择评分较高的电影。 -->
<select id="sortMovieByScore" resultMap="BaseResultMap">
select * from movie where movie_state = 1 order by movie_score DESC
</select>
<!-- 定义名为 sortMovieByBoxOffice 的查询语句用于按照电影的票房movie_boxOffice 字段对所有处于在线状态movie_state = 1的电影进行降序排序并返回排序后的电影信息列表。
查询结果通过 BaseResultMap 定义的映射关系转换为 Movie 实体对象,并以列表形式返回排序后的电影记录对应的 Movie 对象集合,方便展示票房排名情况等业务场景,例如票房排行榜等,让用户可以看到票房较高的电影。 -->
<select id="sortMovieByBoxOffice" resultMap="BaseResultMap">
select * from movie where movie_state = 1 order by movie_boxOffice desc
</select>
<resultMap type="com.entity.Movie" id="BaseResultMap">
<id property="movie_id" column="movie_id" javaType="long"/>
<result property="movie_actor" column="movie_actor" javaType="java.lang.String"/>
<result property="movie_boxOffice" column="movie_boxOffice" javaType="float"/>
<result property="movie_cn_name" column="movie_cn_name" javaType="java.lang.String"/>
<result property="movie_commentCount" column="movie_commentCount" javaType="long"/>
<result property="movie_country" column="movie_country" javaType="java.lang.String"/>
<result property="movie_detail" column="movie_detail" javaType="java.lang.String"/>
<result property="movie_director" column="movie_director" javaType="java.lang.String"/>
<result property="movie_duration" column="movie_duration" javaType="java.lang.String"/>
<result property="movie_fg_name" column="movie_fg_name" javaType="java.lang.String"/>
<result property="movie_picture" column="movie_picture" javaType="java.lang.String"/>
<result property="movie_score" column="movie_score" javaType="float"/>
<result property="movie_type" column="movie_type" javaType="java.lang.String"/>
<result property="movie_releaseDate" column="movie_releaseDate" javaType="java.sql.Date"/>
<result property="movie_state" column="movie_state" javaType="java.lang.Integer"/>
</resultMap>
<select id="findMovieById" parameterType="long" resultMap="BaseResultMap">
select * from movie where movie_id = #{movie_id}
</select>
<select id="findMovieByName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from movie where movie_cn_name = #{movie_cn_name}
</select>
<insert id="addMovie" parameterType="com.entity.Movie">
insert into movie(movie_cn_name,movie_fg_name,movie_actor,movie_director,movie_detail,movie_duration,movie_type,movie_score,movie_releaseDate,movie_country,movie_picture)
values(#{movie_cn_name},#{movie_fg_name},#{movie_actor},#{movie_director},#{movie_detail},#{movie_duration},#{movie_type},#{movie_score},#{movie_releaseDate},#{movie_country},#{movie_picture})
</insert>
<update id="deleteMovie" parameterType="long">
update movie
<set>
movie_state = 0
</set>
where movie_id = #{movie_id}
</update>
<update id="changeMovieBoxOffice">
update movie set movie_boxOffice = movie_boxOffice + #{movie_boxOffice} where movie_id = #{movie_id}
</update>
<update id="updateMovie" parameterType="com.entity.Movie">
update movie
<set>
movie_cn_name = #{movie_cn_name},
movie_fg_name = #{movie_fg_name},
movie_actor = #{movie_actor},
movie_director = #{movie_director},
movie_detail = #{movie_detail},
movie_duration = #{movie_duration},
movie_type = #{movie_type},
movie_country = #{movie_country},
movie_picture = #{movie_picture}
</set>
where movie_id = #{movie_id}
</update>
<update id="deleteMovieCommentCount" parameterType="long">
update movie set movie_commentCount = movie_commentCount -1 where movie_id = #{movie_id}
</update>
<update id="addMovieCommentCount" parameterType="long">
update movie set movie_commentCount = movie_commentCount +1 where movie_id = #{movie_id}
</update>
<select id="findAllMovies" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select * from movie where movie_state = #{movie_state}
</select>
<select id="findMoviesLikeName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from movie where movie_cn_name like '%${value}%' and movie_state = 1
</select>
<select id="findMoviesLikeType" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from movie where movie_type like '%${value}%' and movie_state = 1
</select>
<select id="sortMovieByDate" resultMap="BaseResultMap">
select * from movie where movie_state = 1 order by movie_releaseDate DESC
</select>
<select id="sortMovieByCount" resultMap="BaseResultMap">
select * from movie where movie_state = 1 order by movie_commentCount DESC
</select>
<select id="sortMovieByScore" resultMap="BaseResultMap">
select * from movie where movie_state = 1 order by movie_score DESC
</select>
<select id="sortMovieByBoxOffice" resultMap="BaseResultMap">
select * from movie where movie_state = 1 order by movie_boxOffice desc
</select>
</mapper>

@ -6,89 +6,16 @@ import org.springframework.stereotype.Repository;
import com.entity.Order;
/**
* OrderMapperOrder
* Mapper
* 使`@Repository`Spring便Spring
*/
@Repository
public interface OrderMapper {
/**
* ID
* SQL使MyBatisXMLSQLID`Order`便
* @param order_id
* @return `Order``null`
*/
Order findOrderById(String order_id);
/**
*
* SQL`Order`
* 10
* @param order `Order`
* @return `Integer`
*/
Integer addOrder(Order order);
/**
* 退
* SQLorder_id退退
* 10退
* @param order_id 退
* @return `Integer`
*/
Integer updateOrderStateToRefund(String order_id); //申请退票
/**
* 退
* SQLorder_id退退
* 退
* @param order_id 退
* @return `Integer`
*/
Integer updateOrderStateToRefunded(String order_id); //同意退票
/**
* 退
* SQL退
* `Order``List<Order>`便退便退
* @param user_name 退
* @return `Order``List`退退
*/
List<Order> findRefundOrderByUserName(String user_name);
/**
*
* SQL
* `Order``List<Order>`便
* @param user_name
* @return `Order``List`
*/
List<Order> findOrdersByUserName(String user_name);
/**
*
* SQL`Order``List<Order>`便
* @return `Order``List`
*/
List<Order> findAllOrders();
/**
* ID
* SQLID
* `Order``List<Order>`便
* @param schedule_id
* @return `Order``List`
*/
List<Order> findOrdersByScheduleId(long schedule_id);
/**
*
* SQL10退
* `Order``List<Order>`便
* @param order_state
* @return `Order``List`
*/
List<Order> findOrdersByState(int order_state);
}
Order findOrderById(String order_id);
Integer addOrder(Order order);
Integer updateOrderStateToRefund(String order_id); //申请退票
Integer updateOrderStateToRefunded(String order_id); //同意退票
List<Order> findRefundOrderByUserName(String user_name);
List<Order> findOrdersByUserName(String user_name);
List<Order> findAllOrders();
List<Order> findOrdersByScheduleId(long schedule_id);
List<Order> findOrdersByState(int order_state);
}

@ -2,65 +2,51 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义一个名为 OrderMapper 的映射器,与 com.mapper 包下的 OrderMapper 接口相对应 -->
<mapper namespace="com.mapper.OrderMapper">
<!-- 定义一个 resultMap用于将查询结果映射到 Java 对象 com.entity.Order -->
<resultMap type="com.entity.Order" id="BaseResultMap">
<!-- 指定主键字段 order_id 映射到 Order 类的 order_id 属性 -->
<id property="order_id" column="order_id" javaType="java.lang.String"/>
<!-- 映射其他非主键字段 -->
<result property="order_position" column="order_position" javaType="java.lang.String"/>
<result property="order_state" column="order_state" javaType="java.lang.Integer"/>
<result property="schedule_id" column="schedule_id" javaType="long"/>
<result property="user_id" column="user_id" javaType="long"/>
<result property="order_price" column="order_price" javaType="java.lang.Integer"/>
<result property="order_time" column="order_time" javaType="java.util.Date"/>
</resultMap>
<!-- 根据订单 ID 查询单个订单 -->
<select id="findOrderById" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from orderinfo where order_id = #{order_id}
</select>
<!-- 查询所有订单,并按订单时间降序排列 -->
<select id="findAllOrders" resultMap="BaseResultMap">
select * from orderinfo order by order_time desc
</select>
<!-- 根据日程表 ID 查询订单,排除状态为 2可能表示已退款的订单并按订单时间降序排列 -->
<select id="findOrdersByScheduleId" parameterType="long" resultMap="BaseResultMap">
select * from orderinfo where schedule_id = #{schedule_id} and order_state != 2 order by order_time desc
</select>
<!-- 根据订单状态查询订单,并按订单时间降序排列 -->
<select id="findOrdersByState" parameterType="int" resultMap="BaseResultMap">
select * from orderinfo where order_state = #{order_state} order by order_time desc
</select>
<!-- 根据用户名查询该用户的订单,并按订单时间降序排列 -->
<select id="findOrdersByUserName" parameterType="java.lang.String" resultMap="BaseResultMap">
select orderinfo.* from orderinfo,user where orderinfo.user_id = user.user_id and user.user_name = #{user_name} order by order_time desc
</select>
<!-- 查询特定用户的待退款订单(假设状态 0 表示待退款),并按订单时间降序排列 -->
<select id="findRefundOrderByUserName" parameterType="java.lang.String" resultMap="BaseResultMap">
select orderinfo.* from orderinfo,user where orderinfo.user_id = user.user_id and user.user_name = #{user_name} and orderinfo.order_state = 0 order by order_time desc
</select>
<!-- 插入新订单记录 -->
<insert id="addOrder" parameterType="com.entity.Order">
insert into orderinfo(order_id,order_position,schedule_id,user_id,order_price,order_time)
values(#{order_id},#{order_position},#{schedule_id},#{user_id},#{order_price},#{order_time})
</insert>
<!-- 更新订单状态为待退款(假设状态 0 表示待退款) -->
<update id="updateOrderStateToRefund" parameterType="java.lang.String">
update orderinfo set order_state = 0 where order_id = #{order_id}
</update>
<!-- 更新订单状态为已退款(假设状态 2 表示已退款) -->
<update id="updateOrderStateToRefunded" parameterType="java.lang.String">
update orderinfo set order_state = 2 where order_id = #{order_id}
</update>
<resultMap type="com.entity.Order" id="BaseResultMap">
<id property="order_id" column="order_id" javaType="java.lang.String"/>
<result property="order_position" column="order_position" javaType="java.lang.String"/>
<result property="order_state" column="order_state" javaType="java.lang.Integer"/>
<result property="schedule_id" column="schedule_id" javaType="long"/>
<result property="user_id" column="user_id" javaType="long"/>
<result property="order_price" column="order_price" javaType="java.lang.Integer"/>
<result property="order_time" column="order_time" javaType="java.util.Date"/>
</resultMap>
<select id="findOrderById" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from orderinfo where order_id = #{order_id}
</select>
<select id="findAllOrders" resultMap="BaseResultMap">
select * from orderinfo order by order_time desc
</select>
<select id="findOrdersByScheduleId" parameterType="long" resultMap="BaseResultMap">
select * from orderinfo where schedule_id = #{schedule_id} and order_state != 2 order by order_time desc
</select>
<select id="findOrdersByState" parameterType="int" resultMap="BaseResultMap">
select * from orderinfo where order_state = #{order_state} order by order_time desc
</select>
<select id="findOrdersByUserName" parameterType="java.lang.String" resultMap="BaseResultMap">
select orderinfo.* from orderinfo,user where orderinfo.user_id = user.user_id and user.user_name = #{user_name} order by order_time desc
</select>
<select id="findRefundOrderByUserName" parameterType="java.lang.String" resultMap="BaseResultMap">
select orderinfo.* from orderinfo,user where orderinfo.user_id = user.user_id and user.user_name = #{user_name} and orderinfo.order_state = 0 order by order_time desc
</select>
<insert id="addOrder" parameterType="com.entity.Order">
insert into orderinfo(order_id,order_position,schedule_id,user_id,order_price,order_time)
values(#{order_id},#{order_position},#{schedule_id},#{user_id},#{order_price},#{order_time})
</insert>
<update id="updateOrderStateToRefund" parameterType="java.lang.String">
update orderinfo set order_state = 0 where order_id = #{order_id}
</update>
<update id="updateOrderStateToRefunded" parameterType="java.lang.String">
update orderinfo set order_state = 2 where order_id = #{order_id}
</update>
</mapper>

@ -7,118 +7,18 @@ import org.springframework.stereotype.Repository;
import com.entity.Schedule;
/**
* ScheduleMapperSchedule
* Mapper
* 使`@Repository`Spring便Spring
*/
@Repository
public interface ScheduleMapper {
/**
* ID
* SQL使MyBatisXMLSQLID`Schedule`便
* @param schedule_id
* @return `Schedule``null`
*/
Schedule findScheduleById(long schedule_id);
/**
*
* SQL`Schedule`
* 10
* @param schedule `Schedule`
* @return `Integer`
*/
Integer addSchedule(Schedule schedule);
/**
* `Schedule`
* SQL`Schedule`
*
* @param schedule `Schedule`
* @return `Integer`
*/
Integer updateSchedule(Schedule schedule);
/**
* ID
* SQLID10
* @param schedule_id
* @return `Integer`
*/
Integer deleteSchedule(long schedule_id);
/**
*
* SQLschedule_idSQL
* 退
* @param schedule_id
* @return `Integer`
*/
Integer addScheduleRemain(long schedule_id);
/**
*
* SQLIDschedule_id
*
* @param schedule_id
* @return `Integer`
*/
Integer delScheduleRemain(long schedule_id);
/**
*
* SQL
* `Schedule``List<Schedule>`便便
* @param movie_name
* @return `Schedule``List`
*/
List<Schedule> findScheduleByMovieName(String movie_name);
/**
*
* SQL线
* `Schedule``List<Schedule>`
* @param movie_name
* @return `Schedule``List`
*/
List<Schedule> findOffScheduleByMovieName(String movie_name);
/**
*
* SQL10
* `Schedule``List<Schedule>`便
* @param schedule_state
* @return `Schedule``List`
*/
List<Schedule> findScheduleByState(int schedule_state);
/**
*
* SQL`Schedule``List<Schedule>`便
* @return `Schedule``List`
*/
List<Schedule> findAllSchedule();
/**
* IDID
* `@Param`便SQLSQLIDID
* `Schedule``List<Schedule>`便
* @param cinema_id
* @param movie_id
* @return `Schedule``List`
*/
List<Schedule> findScheduleByCinemaAndMovie(@Param("cinema_id") long cinema_id, @Param("movie_id") long movie_id);
/**
* IDIDID
* `@Param`SQLIDIDID
* `Schedule``List<Schedule>`
* @param hall_id
* @param cinema_id
* @param movie_id
* @return `Schedule``List`
*/
List<Schedule> findScheduleByCinemaAndMovieAndHall(@Param("hall_id") long hall_id, @Param("cinema_id") long cinema_id, @Param("movie_id") long movie_id);
}
Schedule findScheduleById(long schedule_id);
Integer addSchedule(Schedule schedule);
Integer updateSchedule(Schedule schedule);
Integer deleteSchedule(long schedule_id);
Integer addScheduleRemain(long schedule_id);
Integer delScheduleRemain(long schedule_id);
List<Schedule> findScheduleByMovieName(String movie_name);
List<Schedule> findOffScheduleByMovieName(String movie_name);
List<Schedule> findScheduleByState(int schedule_state);
List<Schedule> findAllSchedule();
List<Schedule> findScheduleByCinemaAndMovie(@Param("cinema_id")long cinema_id,@Param("movie_id")long movie_id);
List<Schedule> findScheduleByCinemaAndMovieAndHall(@Param("hall_id")long hall_id,@Param("cinema_id")long cinema_id,@Param("movie_id")long movie_id);
}

@ -2,88 +2,71 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义一个名为 ScheduleMapper 的映射器,与 com.mapper 包下的 ScheduleMapper 接口相对应 -->
<mapper namespace="com.mapper.ScheduleMapper">
<!-- 定义一个 resultMap用于将查询结果映射到 Java 对象 com.entity.Schedule -->
<resultMap type="com.entity.Schedule" id="BaseResultMap">
<!-- 指定主键字段 schedule_id 映射到 Schedule 类的 schedule_id 属性 -->
<id property="schedule_id" column="schedule_id" javaType="long"/>
<!-- 映射其他非主键字段 -->
<result property="hall_id" column="hall_id" javaType="long"/>
<result property="movie_id" column="movie_id" javaType="long"/>
<result property="schedule_price" column="schedule_price" javaType="java.lang.Integer"/>
<result property="schedule_remain" column="schedule_remain" javaType="java.lang.Integer"/>
<result property="schedule_startTime" column="schedule_startTime" javaType="java.lang.String"/>
<result property="schedule_state" column="schedule_state" javaType="java.lang.Integer"/>
</resultMap>
<!-- 根据日程表 ID 查询单个日程表信息 -->
<select id="findScheduleById" parameterType="long" resultMap="BaseResultMap">
select * from schedule where schedule_id = #{schedule_id}
</select>
<!-- 根据日程表状态查询日程表信息 -->
<select id="findScheduleByState" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select * from schedule where schedule_state = #{schedule_state}
</select>
<!-- 根据影院 ID 和电影 ID 查询日程表信息,仅包括状态为 1可能表示正在上映的日程表 -->
<select id="findScheduleByCinemaAndMovie" resultMap="BaseResultMap">
select schedule.* from schedule,hall where schedule.hall_id=hall.hall_id
and hall.cinema_id = #{cinema_id} and movie_id = #{movie_id} and schedule_state = 1
</select>
<!-- 根据影院 ID、电影 ID 和影厅 ID 查询日程表信息,仅包括状态为 1可能表示正在上映的日程表 -->
<select id="findScheduleByCinemaAndMovieAndHall" resultMap="BaseResultMap">
select schedule.* from schedule,hall where schedule.hall_id=hall.hall_id
and hall.cinema_id = #{cinema_id} and movie_id = #{movie_id} and schedule.hall_id = #{hall_id} and schedule_state = 1
</select>
<!-- 查询所有日程表信息 -->
<select id="findAllSchedule" resultMap="BaseResultMap">
select * from schedule
</select>
<!-- 根据电影中文名称模糊查询日程表信息,仅包括状态为 1可能表示正在上映的日程表 -->
<select id="findScheduleByMovieName" parameterType="java.lang.String" resultMap="BaseResultMap">
select schedule.* from schedule,movie
where schedule.movie_id = movie.movie_id and schedule.schedule_state = 1 and movie.movie_cn_name like '%${value}%'
</select>
<!-- 根据电影中文名称模糊查询已下线的日程表信息,仅包括状态为 0可能表示已下线的日程表 -->
<select id="findOffScheduleByMovieName" parameterType="java.lang.String" resultMap="BaseResultMap">
select schedule.* from schedule,movie
where schedule.movie_id = movie.movie_id and schedule.schedule_state = 0 and movie.movie_cn_name like '%${value}%'
</select>
<!-- 插入新的日程表记录 -->
<insert id="addSchedule" parameterType="com.entity.Schedule">
insert into schedule(hall_id,movie_id,schedule_price,schedule_remain,schedule_startTime)
values(#{hall_id},#{movie_id},#{schedule_price},#{schedule_remain},#{schedule_startTime})
</insert>
<!-- 更新日程表的价格 -->
<update id="updateSchedule" parameterType="com.entity.Schedule">
update schedule
<set>
schedule_price = #{schedule_price}
</set>
where schedule_id = #{schedule_id}
</update>
<!-- 将日程表的状态设置为 0可能表示下线实际上是一种逻辑删除 -->
<update id="deleteSchedule" parameterType="long">
update schedule set schedule_state = 0 where schedule_id = #{schedule_id}
</update>
<!-- 增加日程表的剩余座位数 -->
<update id="addScheduleRemain" parameterType="long">
update schedule set schedule_remain = schedule_remain + 1 where schedule_id = #{schedule_id}
</update>
<!-- 减少日程表的剩余座位数 -->
<update id="delScheduleRemain" parameterType="long">
update schedule set schedule_remain = schedule_remain - 1 where schedule_id = #{schedule_id}
</update>
<resultMap type="com.entity.Schedule" id="BaseResultMap">
<id property="schedule_id" column="schedule_id" javaType="long"/>
<result property="hall_id" column="hall_id" javaType="long"/>
<result property="movie_id" column="movie_id" javaType="long"/>
<result property="schedule_price" column="schedule_price" javaType="java.lang.Integer"/>
<result property="schedule_remain" column="schedule_remain" javaType="java.lang.Integer"/>
<result property="schedule_startTime" column="schedule_startTime" javaType="java.lang.String"/>
<result property="schedule_state" column="schedule_state" javaType="java.lang.Integer"/>
</resultMap>
<select id="findScheduleById" parameterType="long" resultMap="BaseResultMap">
select * from schedule where schedule_id = #{schedule_id}
</select>
<select id="findScheduleByState" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select * from schedule where schedule_state = #{schedule_state}
</select>
<select id="findScheduleByCinemaAndMovie" resultMap="BaseResultMap">
select schedule.* from schedule,hall where schedule.hall_id=hall.hall_id
and hall.cinema_id = #{cinema_id} and movie_id = #{movie_id} and schedule_state = 1
</select>
<select id="findScheduleByCinemaAndMovieAndHall" resultMap="BaseResultMap">
select schedule.* from schedule,hall where schedule.hall_id=hall.hall_id
and hall.cinema_id = #{cinema_id} and movie_id = #{movie_id} and schedule.hall_id = #{hall_id} and schedule_state = 1
</select>
<select id="findAllSchedule" resultMap="BaseResultMap">
select * from schedule
</select>
<select id="findScheduleByMovieName" parameterType="java.lang.String" resultMap="BaseResultMap">
select schedule.* from schedule,movie
where schedule.movie_id = movie.movie_id and schedule.schedule_state = 1 and movie.movie_cn_name like '%${value}%'
</select>
<select id="findOffScheduleByMovieName" parameterType="java.lang.String" resultMap="BaseResultMap">
select schedule.* from schedule,movie
where schedule.movie_id = movie.movie_id and schedule.schedule_state = 0 and movie.movie_cn_name like '%${value}%'
</select>
<insert id="addSchedule" parameterType="com.entity.Schedule">
insert into schedule(hall_id,movie_id,schedule_price,schedule_remain,schedule_startTime)
values(#{hall_id},#{movie_id},#{schedule_price},#{schedule_remain},#{schedule_startTime})
</insert>
<update id="updateSchedule" parameterType="com.entity.Schedule">
update schedule
<set>
schedule_price = #{schedule_price}
</set>
where schedule_id = #{schedule_id}
</update>
<update id="deleteSchedule" parameterType="long">
update schedule set schedule_state = 0 where schedule_id = #{schedule_id}
</update>
<update id="addScheduleRemain" parameterType="long">
update schedule set schedule_remain = schedule_remain + 1 where schedule_id = #{schedule_id}
</update>
<update id="delScheduleRemain" parameterType="long">
update schedule set schedule_remain = schedule_remain - 1 where schedule_id = #{schedule_id}
</update>
</mapper>

@ -5,65 +5,13 @@ import java.util.List;
import org.springframework.stereotype.Repository;
import com.entity.User;
/**
* 访DAO
*/
@Repository
public interface UserMapper {
/**
* ID
*
* @param user_id ID
* @return null
*/
User findUserById(long user_id);
/**
*
*
* @param user
* @return 10
*/
Integer addUser(User user);
/**
* ID
*
* @param user_id ID
* @return 10
*/
Integer deleteUser(long user_id);
/**
* ID
*
* @param user
* @return 10
*/
Integer updateUser(User user);
/**
*
*
* @return
*/
List<User> findAllUser();
/**
*
*
* @param name
* @return
*/
List<User> findUserByName(String name);
/**
*
*
* @param name
* @return
*/
List<User> findUserLikeName(String name);
}
User findUserById(long user_id);
Integer addUser(User user);
Integer deleteUser(long user_id);
Integer updateUser(User user);
List<User> findAllUser();
List<User> findUserByName(String name);
List<User> findUserLikeName(String name);
}

@ -1,71 +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">
<!-- 此 XML 文件为 MyBatis 的映射文件,用于定义与数据库交互的 SQL 语句以及结果集映射关系等配置内容,其对应的接口是 com.mapper.UserMapper主要负责处理用户User相关的数据操作。 -->
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.UserMapper">
<!-- 定义名为 BaseResultMap 的结果集映射,用于将从数据库查询返回的结果(按照列的形式)映射到 com.entity.User 实体类对应的属性上,方便 MyBatis 将数据库记录转换为 Java 对象,便于后续在程序中使用。 -->
<resultMap type="com.entity.User" id="BaseResultMap">
<!-- 将数据库表 user 中的 user_id 列的值映射到 User 实体类的 user_id 属性上,属性类型为 long -->
<id property="user_id" column="user_id" javaType="long"/>
<!-- 将数据库表 user 中的 user_name 列的值映射到 User 实体类的 user_name 属性上,属性类型为 java.lang.String -->
<result property="user_name" column="user_name" javaType="java.lang.String"/>
<!-- 将数据库表 user 中的 user_pwd 列的值映射到 User 实体类的 user_pwd 属性上,属性类型为 java.lang.String -->
<result property="user_pwd" column="user_pwd" javaType="java.lang.String"/>
<!-- 将数据库表 user 中的 user_email 列的值映射到 User 实体类的 user_email 属性上,属性类型为 java.lang.String -->
<result property="user_email" column="user_email" javaType="java.lang.String"/>
<!-- 将数据库表 user 中的 user_role 列的值映射到 User 实体类的 user_role 属性上,属性类型为 java.lang.Integer -->
<result property="user_role" column="user_role" javaType="java.lang.Integer"/>
<!-- 将数据库表 user 中的 user_headImg 列的值映射到 User 实体类的 user_headImg 属性上,属性类型为 java.lang.String -->
<result property="user_headImg" column="user_headImg" javaType="java.lang.String"/>
</resultMap>
<!-- 定义名为 findUserById 的查询语句用于根据用户的唯一标识ID从 user 表中查询对应的用户信息。
参数类型为 long表示传入的参数是一个长整型的用户 ID查询结果通过 BaseResultMap 定义的映射关系转换为 User 实体对象返回。 -->
<select id="findUserById" parameterType="long" resultMap="BaseResultMap">
select * from user where user_id = #{id}
</select>
<!-- 定义名为 findAllUser 的查询语句,用于从 user 表中查询所有的用户信息。
查询结果通过 BaseResultMap 定义的映射关系转换为 User 实体对象,并以列表形式返回所有用户记录对应的 User 对象集合。 -->
<select id="findAllUser" resultMap="BaseResultMap">
select * from user
</select>
<!-- 定义名为 findUserByName 的查询语句,用于根据用户的名称(通常为用户名)从 user 表中查询对应的用户信息。
参数类型为 java.lang.String表示传入的参数是一个字符串类型的用户名查询结果通过 BaseResultMap 定义的映射关系转换为 User 实体对象返回。 -->
<select id="findUserByName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from user where user_name = #{name}
</select>
<!-- 定义名为 findUserLikeName 的查询语句,用于根据用户名称进行模糊查询。
参数类型为 java.lang.String表示传入的参数是一个字符串类型的用户名称通过使用 LIKE 关键字结合通配符 '%${value}%'(此处使用 ${} 是为了直接将传入的字符串拼接进 SQL 语句实现模糊匹配,需注意防止 SQL 注入问题),在 user 表中查找名称符合模糊匹配条件的用户记录,查询结果通过 BaseResultMap 映射为 User 实体对象并返回对应的用户集合,常用于用户搜索等功能实现。 -->
<select id="findUserLikeName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from user where user_name like '%${value}%'
</select>
<!-- 定义名为 addUser 的插入语句,用于向 user 表中插入一条新的用户记录。
参数类型为 com.entity.User表示传入的参数是一个 User 实体对象,从该对象中获取 user_name、user_pwd 和 user_email 等属性值,插入到 user 表对应的列中,实现新增用户记录的操作。注意这里插入时未包含 user_role 和 user_headImg 字段,可能在业务逻辑中有默认值设置或者后续更新等操作来完善这两个字段的值。 -->
<insert id="addUser" parameterType="com.entity.User">
insert into user(user_name,user_pwd,user_email)
values(#{user_name},#{user_pwd},#{user_email})
</insert>
<!-- 定义名为 updateUser 的更新语句,用于更新 user 表中指定用户记录的部分信息。
参数类型为 com.entity.User表示传入的参数是一个 User 实体对象,通过 <if> 标签进行条件判断,当传入对象的 user_name 属性不为空时,才会将对应的 user_name 列值更新为传入对象的 user_name 属性值;同理,当 user_pwd 属性不为空时更新 user_pwd 列的值;而 user_email 和 user_headImg 列无论对应属性值是否为空都会进行更新(此处的逻辑可根据业务需求调整),更新条件是 user_id 列的值与传入对象的 user_id 属性值相等,通过 <set> 标签来动态生成需要更新的列,避免不必要的列更新为空值等情况。 -->
<update id="findUserById" parameterType="com.entity.User">
update user
<set>
<if test="user_name!=null">
user_name = #{user_name},
</if>
<if test="user_pwd!=null">
user_pwd = #{user_pwd},
</if>
user_email = #{user_email},
user_headImg = #{user_headImg}
</set>
where user_id = #{user_id}
</update>
<resultMap type="com.entity.User" id="BaseResultMap">
<id property="user_id" column="user_id" javaType="long"/>
<result property="user_name" column="user_name" javaType="java.lang.String"/>
<result property="user_pwd" column="user_pwd" javaType="java.lang.String"/>
<result property="user_email" column="user_email" javaType="java.lang.String"/>
<result property="user_role" column="user_role" javaType="java.lang.Integer"/>
<result property="user_headImg" column="user_headImg" javaType="java.lang.String"/>
</resultMap>
<select id="findUserById" parameterType="long" resultMap="BaseResultMap">
select * from user where user_id = #{id}
</select>
<select id="findAllUser" resultMap="BaseResultMap">
select * from user
</select>
<select id="findUserByName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from user where user_name = #{name}
</select>
<select id="findUserLikeName" parameterType="java.lang.String" resultMap="BaseResultMap">
select * from user where user_name like '%${value}%'
</select>
<insert id="addUser" parameterType="com.entity.User">
insert into user(user_name,user_pwd,user_email)
values(#{user_name},#{user_pwd},#{user_email})
</insert>
<update id="updateUser" parameterType="com.entity.User">
update user
<set>
<if test="user_name!=null">
user_name = #{user_name},
</if>
<if test="user_pwd!=null">
user_pwd = #{user_pwd},
</if>
user_email = #{user_email},
user_headImg = #{user_headImg}
</set>
where user_id = #{user_id}
</update>
</mapper>

@ -4,66 +4,12 @@ import java.util.List;
import com.entity.Cinema;
/**
* ICinemaServiceCinema
* Mapper
*/
public interface ICinemaService {
/**
* ID
* ID`Cinema`便
* @param cinema_id
* @return `Cinema``null`
*/
Cinema findCinemaById(long cinema_id);
/**
*
* `Cinema`10
* @param cinema `Cinema`
* @return `Integer`
*/
Integer addCinema(Cinema cinema);
/**
* `Cinema`
* `Cinema`
* @param cinema `Cinema`
* @return `Integer`
*/
Integer updateCinema(Cinema cinema);
/**
* ID
* ID10
* @param cinema_id
* @return `Integer`
*/
Integer deleteCinema(long cinema_id);
/**
*
* `Cinema``List<Cinema>`便
* @return `Cinema``List`
*/
List<Cinema> findAllCinemas();
/**
*
*
* `Cinema``List<Cinema>`便使
* @param cinema_name
* @return `Cinema``List`
*/
List<Cinema> findCinemasLikeName(String cinema_name);
/**
* ID
* ID
* `Cinema``List<Cinema>`便便
* @param movie_id
* @return `Cinema``List`
*/
List<Cinema> findCinemasByMovieId(long movie_id);
}
Cinema findCinemaById(long cinema_id);
Integer addCinema(Cinema cinema);
Integer updateCinema(Cinema cinema);
Integer deleteCinema(long cinema_id);
List<Cinema> findAllCinemas();
List<Cinema> findCinemasLikeName(String cinema_name);
List<Cinema> findCinemasByMovieId(long movie_id);
}

@ -5,75 +5,13 @@ import java.util.List;
import com.entity.Comment;
import com.github.pagehelper.PageInfo;
/**
* ICommentService
*/
public interface ICommentService {
/**
* ID
*
* @param comment_id ID
* @return Comment null
*/
Comment findCommentById(long comment_id);
/**
*
*
* @param comment Comment
* @return 10
*/
Integer addComemnt(Comment comment);
/**
* ID
*
* @param comment Comment
* @return 10
*/
Integer updateComment(Comment comment);
/**
* ID
*
* @param comment_id ID
* @return 10
*/
Integer deleteComment(long comment_id);
/**
*
*
* @return Comment
*/
List<Comment> findAllComments();
/**
* ID
*
* @param movie_id ID
* @return Comment
*/
List<Comment> findCommentsByMovieId(long movie_id);
/**
*
*
* @param page
* @param limit
* @param keyword
* @return PageInfo
*/
PageInfo<Comment> findAllCommentsBySplitPage(Integer page, Integer limit, String keyword);
/**
*
*
* @param page
* @param limit
* @param user_name
* @return PageInfo
*/
PageInfo<Comment> findCommentsByUserName(Integer page, Integer limit, String user_name);
}
Comment findCommentById(long comment_id);
Integer addComemnt(Comment comment);
Integer updateComment(Comment comment);
Integer deleteComment(long comment_id);
List<Comment> findAllComments();
List<Comment> findCommentsByMovieId(long movie_id);
PageInfo<Comment> findAllCommentsBySplitPage(Integer page,Integer limit,String keyword);
PageInfo<Comment> findCommentsByUserName(Integer page,Integer limit,String user_name);
}

@ -1,66 +1,15 @@
package com.service;
import java.util.List;
import com.entity.Hall;
/**
* IHallService
*/
public interface IHallService {
/**
* ID
*
* @param hall_id ID
* @return Hall null
*/
Hall findHallById(long hall_id);
/**
*
*
* @param cinema_name
* @param hall_name
* @return Hall null
*/
Hall findHallByCinemaAndHallName(String cinema_name, String hall_name);
/**
*
*
* @param hall Hall
* @return 10
*/
Integer addHall(Hall hall);
/**
* ID
*
* @param hall Hall
* @return 10
*/
Integer updateHall(Hall hall);
/**
* ID
*
* @param hall_id ID
* @return 10
*/
Integer deleteHall(long hall_id);
/**
* ID
*
* @param cinema_id ID
* @return Hall
*/
List<Hall> findHallByCinemaId(long cinema_id);
/**
*
*
* @return Hall
*/
List<Hall> findAllHalls();
}
Hall findHallById(long hall_id);
Hall findHallByCinemaAndHallName(String cinema_name,String hall_name);
Integer addHall(Hall hall);
Integer updateHall(Hall hall);
Integer deleteHall(long hall_id);
List<Hall> findHallByCinemaId(long cinema_id);
List<Hall> findAllHalls();
}

@ -4,134 +4,21 @@ import java.util.List;
import com.entity.Movie;
/**
* IMovieServiceMovie
*
*/
public interface IMovieService {
/**
* ID
* ID`Movie`便
* @param movie_id
* @return `Movie``null`
*/
Movie findMovieById(long movie_id);
/**
*
* `Movie`便便使
* @param movie_cn_name
* @return `Movie``null`
*/
Movie findMovieByName(String movie_cn_name);
/**
*
* `Movie`10
* @param movie `Movie`
* @return `Integer`
*/
Integer addMovie(Movie movie);
/**
* ID
* ID10
* @param movie_id
* @return `Integer`
*/
Integer deleteMovie(long movie_id);
/**
* `Movie`
* `Movie`
* @param movie `Movie`
* @return `Integer`
*/
Integer updateMovie(Movie movie);
/**
* ID
* 1
* @param movie_id
* @return `Integer`
*/
Integer delCommentCount(long movie_id);
/**
*
* ID
* @param price
* @param movie_id
* @return `Integer`
*/
Integer changeMovieBoxOffice(float price, long movie_id);
/**
* ID
* 1
* @param movie_id
* @return `Integer`
*/
Integer addCommentCount(long movie_id);
/**
*
* 10
* `Movie``List<Movie>`便
* @param movie_state
* @return `Movie``List`
*/
List<Movie> findAllMovies(int movie_state);
/**
*
*
* `Movie``List<Movie>`便使
* @param name
* @return `Movie``List`
*/
List<Movie> findMoviesLikeName(String name);
/**
*
*
* `Movie``List<Movie>`便使
* @param type
* @return `Movie``List`
*/
List<Movie> findMoviesLikeType(String type);
/**
*
* 使
* `List<Movie>`便
*
* @return `Movie``List`
*/
List<Movie> sortMovieByDate();
/**
*
*
* `List<Movie>`便
* @return `Movie``List`
*/
List<Movie> sortMovieByCount();
/**
*
*
* `List<Movie>`便
* @return `Movie``List`
*/
List<Movie> sortMovieByScore();
/**
*
*
* `List<Movie>`便
* @return `Movie``List`
*/
List<Movie> sortMovieByBoxOffice();
}
Movie findMovieById(long movie_id);
Movie findMovieByName(String movie_cn_name);
Integer addMovie(Movie movie);
Integer deleteMovie(long movie_id);
Integer updateMovie(Movie movie);
Integer delCommentCount(long movie_id);
Integer changeMovieBoxOffice(float price,long movie_id);
Integer addCommentCount(long movie_id);
List<Movie> findAllMovies(int movie_state);
List<Movie> findMoviesLikeName(String name);
List<Movie> findMoviesLikeType(String type);
//上映时间 参评人数 评分
List<Movie> sortMovieByDate();
List<Movie> sortMovieByCount();
List<Movie> sortMovieByScore();
List<Movie> sortMovieByBoxOffice();
}

@ -5,86 +5,14 @@ import java.util.List;
import com.entity.Order;
import com.github.pagehelper.PageInfo;
/**
* IOrderServiceOrder
* ID退退便
*/
public interface IOrderService {
/**
* ID
* ID`Order`便
* @param order_id
* @return `Order``null`
*/
Order findOrderById(String order_id);
/**
*
* `Order`IDID10
* @param order `Order`
* @return `Integer`
*/
Integer addOrder(Order order);
/**
* 退
* order_id退退退10退
* @param order_id 退
* @return `Integer`
*/
Integer updateOrderStateToRefund(String order_id); //申请退票
/**
* 退
* order_id退退退退
* @param order_id 退
* @return `Integer`
*/
Integer updateOrderStateToRefunded(String order_id); //同意退票
/**
*
* pagelimituser_name`Order``PageInfo<Order>``PageInfo`便
* @param page 1
* @param limit
* @param user_name
* @return `PageInfo<Order>`
*/
PageInfo<Order> findOrdersByUserName(Integer page, Integer limit, String user_name);
/**
*
* `Order``List<Order>`便
* @return `Order``List`
*/
List<Order> findAllOrders();
/**
* 退
* user_name退`Order``List<Order>`便退退
* @param user_name 退
* @return `Order``List`退退
*/
List<Order> findRefundOrderByUserName(String user_name);
/**
*
* pagelimitorder_state10退`Order``PageInfo<Order>`便
* @param page 1
* @param limit
* @param order_state
* @return `PageInfo<Order>`
*/
PageInfo<Order> findOrdersByState(Integer page, Integer limit, int order_state);
/**
*
* pagelimitkeyword`Order``PageInfo<Order>`便
* @param page 1
* @param limit
* @param keyword `null`
* @return `PageInfo<Order>`
*/
PageInfo<Order> findAllOrdersBySplitPage(Integer page, Integer limit, String keyword);
}
Order findOrderById(String order_id);
Integer addOrder(Order order);
Integer updateOrderStateToRefund(String order_id); //申请退票
Integer updateOrderStateToRefunded(String order_id); //同意退票
PageInfo<Order> findOrdersByUserName(Integer page,Integer limit,String user_name);
List<Order> findAllOrders();
List<Order> findRefundOrderByUserName(String user_name);
PageInfo<Order> findOrdersByState(Integer page,Integer limit,int order_state);
PageInfo<Order> findAllOrdersBySplitPage(Integer page,Integer limit,String keyword);
}

@ -1,116 +1,21 @@
package com.service;
import java.util.List;
import com.entity.Schedule;
import com.github.pagehelper.PageInfo;
/**
* IScheduleService
*/
public interface IScheduleService {
/**
* ID
*
* @param schedule_id ID
* @return Schedule null
*/
Schedule findScheduleById(long schedule_id);
/**
*
*
* @param schedule Schedule
* @return 10
*/
Integer addSchedule(Schedule schedule);
/**
* ID
*
* @param schedule Schedule
* @return 10
*/
Integer updateSchedule(Schedule schedule);
/**
* ID
*
* @param schedule_id ID
* @return 10
*/
Integer deleteSchedule(long schedule_id);
/**
*
*
* @param schedule_id ID
* @return 10
*/
Integer addScheduleRemain(long schedule_id);
/**
*
*
* @param schedule_id ID
* @return 10
*/
Integer delScheduleRemain(long schedule_id);
/**
*
*
* @param page
* @param limit
* @param movie_name
* @return PageInfo
*/
PageInfo<Schedule> findScheduleByMovieName(Integer page, Integer limit, String movie_name);
/**
*
*
* @param page
* @param limit
* @param movie_name
* @return PageInfo
*/
PageInfo<Schedule> findOffScheduleByMovieName(Integer page, Integer limit, String movie_name);
/**
*
*
* @param page
* @param limit
* @return PageInfo
*/
PageInfo<Schedule> findAllSchedule(Integer page, Integer limit);
/**
*
*
* @param page
* @param limit
* @param schedule_state
* @return PageInfo
*/
PageInfo<Schedule> findAllScheduleByState(Integer page, Integer limit, int schedule_state);
/**
* ID ID
*
* @param cinema_id ID
* @param movie_id ID
* @return Schedule
*/
List<Schedule> findScheduleByCinemaAndMovie(long cinema_id, long movie_id);
/**
* selectSeat ID ID
*
* @param cinema_id ID
* @param movie_id ID
* @return Schedule
*/
List<Schedule> findScheduleByCineamIdAndMovieId(long cinema_id, long movie_id);
}
Schedule findScheduleById(long schedule_id);
Integer addSchedule(Schedule schedule);
Integer updateSchedule(Schedule schedule);
Integer deleteSchedule(long schedule_id);
Integer addScheduleRemain(long schedule_id);
Integer delScheduleRemain(long schedule_id);
PageInfo<Schedule> findScheduleByMovieName(Integer page,Integer limit,String movie_name);
PageInfo<Schedule> findOffScheduleByMovieName(Integer page,Integer limit,String movie_name);
PageInfo<Schedule> findAllSchedule(Integer page,Integer limit);
PageInfo<Schedule> findAllScheduleByState(Integer page,Integer limit,int schedule_state);
List<Schedule> findScheduleByCinemaAndMovie(long cinema_id,long movie_id);
List<Schedule> findScheduleByCineamIdAndMovieId(long cinema_id,long movie_id);
}

@ -1,87 +1,19 @@
package com.service;
import java.util.List;
import com.entity.User;
import com.github.pagehelper.PageInfo;
/**
* IUserServiceUser
* ID便
*/
public interface IUserService {
/**
*
* user_nameuser_pwd`null`
* @param user_name
* @param user_pwd
* @return `User``null`
*/
User login(String user_name, String user_pwd);
/**
*
* `User`10
* @param user `User`
* @return `Integer`
*/
Integer updateUserInfo(User user);
/**
* ID
* ID`User`便
* @param user_id
* @return `User``null`
*/
User findUserById(long user_id);
/**
*
* name`User``List<User>`便使
* @param name
* @return `User``List`
*/
List<User> findUserByName(String name);
/**
*
* name`User``List<User>`便使
* @param name
* @return `User``List`
*/
List<User> findUserLikeName(String name);
/**
*
* `User`10
* @param user `User`
* @return `Integer`
*/
Integer addUser(User user);
/**
* ID
* ID10
* @param user_id
* @return `Integer`
*/
Integer deleteUser(long user_id);
/**
*
* `User``List<User>`便
* @return `User``List`
*/
List<User> findAllUserInfos();
/**
*
* pagelimitkeyword`User``PageInfo<User>`便
* @param page 1
* @param limit
* @param keyword `null`
* @return `PageInfo<User>`
*/
PageInfo<User> findAllUserBySplitPage(Integer page, Integer limit, String keyword);
}
User login(String user_name,String user_pwd);
Integer updateUserInfo(User user);
User findUserById(long user_id);
List<User> findUserByName(String name);
List<User> findUserLikeName(String name);
Integer addUser(User user);
Integer deleteUser(long user_id);
List<User> findAllUserInfos();
PageInfo<User> findAllUserBySplitPage(Integer page,Integer limit,String keyword);
}

@ -16,118 +16,75 @@ import com.mapper.ScheduleMapper;
import com.service.ICinemaService;
@Service
public class CinemaServiceImp implements ICinemaService {
public class CinemaServiceImp implements ICinemaService{
@Autowired
private CinemaMapper cinemaMapper;
@Autowired
private HallMapper hallMapper;
@Autowired
private ScheduleMapper scheduleMapper;
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public Cinema findCinemaById(long cinema_id) {
Cinema cinema = this.cinemaMapper.findCinemaById(cinema_id);
List<Hall> list = this.hallMapper.findHallByCinemaId(cinema_id);
cinema.setHallList(list);
return cinema;
}
@Autowired
private CinemaMapper cinemaMapper; // 依赖注入 CinemaMapper 用于执行与影院相关的数据库操作
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Cinema> findCinemasByMovieId(long movie_id) {
List<Cinema> cinemaList = this.cinemaMapper.findCinemasByMovieId(movie_id);
for(Cinema cinema : cinemaList) {
List<Hall> hallList = this.hallMapper.findHallByCinemaId(cinema.getCinema_id());
for(Hall hall : hallList) {
hall.setScheduleList(this.scheduleMapper.findScheduleByCinemaAndMovieAndHall(hall.getHall_id(), hall.getCinema_id(), movie_id));
}
cinema.setHallList(hallList);
}
return cinemaList;
}
@Autowired
private HallMapper hallMapper; // 依赖注入 HallMapper 用于执行与影厅相关的数据库操作
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer addCinema(Cinema cinema) {
return this.cinemaMapper.addCinema(cinema);
}
@Autowired
private ScheduleMapper scheduleMapper; // 依赖注入 ScheduleMapper 用于执行与日程表相关的数据库操作
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer updateCinema(Cinema cinema) {
return this.cinemaMapper.updateCinema(cinema);
}
/**
* ID
*
* @param cinema_id ID
* @return Cinema null
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public Cinema findCinemaById(long cinema_id) {
Cinema cinema = this.cinemaMapper.findCinemaById(cinema_id);
List<Hall> list = this.hallMapper.findHallByCinemaId(cinema_id);
cinema.setHallList(list); // 设置影院的影厅列表
return cinema;
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer deleteCinema(long cinema_id) {
return this.cinemaMapper.deleteCinema(cinema_id);
}
/**
* ID
*
* @param movie_id ID
* @return Cinema
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public List<Cinema> findCinemasByMovieId(long movie_id) {
List<Cinema> cinemaList = this.cinemaMapper.findCinemasByMovieId(movie_id);
for (Cinema cinema : cinemaList) {
List<Hall> hallList = this.hallMapper.findHallByCinemaId(cinema.getCinema_id());
for (Hall hall : hallList) {
hall.setScheduleList(this.scheduleMapper.findScheduleByCinemaAndMovieAndHall(hall.getHall_id(), hall.getCinema_id(), movie_id));
}
cinema.setHallList(hallList); // 设置影院的影厅列表,包括各影厅的日程表
}
return cinemaList;
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Cinema> findAllCinemas() {
List<Cinema> list = this.cinemaMapper.findAllCinemas();
for(Cinema cinema : list) {
List<Hall> hallList = this.hallMapper.findHallByCinemaId(cinema.getCinema_id());
cinema.setHallList(hallList);
}
return list;
}
/**
*
*
* @param cinema Cinema
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer addCinema(Cinema cinema) {
return this.cinemaMapper.addCinema(cinema);
}
/**
* ID
*
* @param cinema Cinema
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer updateCinema(Cinema cinema) {
return this.cinemaMapper.updateCinema(cinema);
}
/**
* ID
*
* @param cinema_id ID
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer deleteCinema(long cinema_id) {
return this.cinemaMapper.deleteCinema(cinema_id);
}
/**
*
*
* @return Cinema
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public List<Cinema> findAllCinemas() {
List<Cinema> list = this.cinemaMapper.findAllCinemas();
for (Cinema cinema : list) {
List<Hall> hallList = this.hallMapper.findHallByCinemaId(cinema.getCinema_id());
cinema.setHallList(hallList); // 设置影院的影厅列表
}
return list;
}
/**
*
*
* @param cinema_name
* @return Cinema
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public List<Cinema> findCinemasLikeName(String cinema_name) {
List<Cinema> list = this.cinemaMapper.findCinemasLikeName(cinema_name);
for (Cinema cinema : list) {
List<Hall> hallList = this.hallMapper.findHallByCinemaId(cinema.getCinema_id());
cinema.setHallList(hallList); // 设置影院的影厅列表
}
return list;
}
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Cinema> findCinemasLikeName(String cinema_name) {
List<Cinema> list = this.cinemaMapper.findCinemasLikeName(cinema_name);
for(Cinema cinema : list) {
List<Hall> hallList = this.hallMapper.findHallByCinemaId(cinema.getCinema_id());
cinema.setHallList(hallList);
}
return list;
}
}

@ -14,139 +14,77 @@ import com.github.pagehelper.PageInfo;
import com.mapper.CommentMapper;
import com.service.ICommentService;
/**
* CommentServiceImpICommentServiceComment
* CommentMapperSpring
* `@Service`Spring便Spring使
*/
@Service
public class CommentServiceImp implements ICommentService {
public class CommentServiceImp implements ICommentService{
/**
* SpringCommentMapper
*/
@Autowired
private CommentMapper commentMapper;
@Autowired
private CommentMapper commentMapper;
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public Comment findCommentById(long comment_id) {
return this.commentMapper.findCommentById(comment_id);
}
/**
* ID
* `Propagation.REQUIRED``readOnly=true`
* CommentMapper`findCommentById`
* @param comment_id ID
* @return `Comment``null`Mapper
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public Comment findCommentById(long comment_id) {
return this.commentMapper.findCommentById(comment_id);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer addComemnt(Comment comment) {
return this.commentMapper.addComemnt(comment);
}
/**
*
* `Propagation.REQUIRED``rollbackFor=Exception.class`
* CommentMapper`addComemnt`10
* @param comment `Comment`
* @return `Integer`
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public Integer addComemnt(Comment comment) {
return this.commentMapper.addComemnt(comment);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer updateComment(Comment comment) {
return this.commentMapper.updateComment(comment);
}
/**
*
*
* CommentMapper`updateComment`
* @param comment `Comment`
* @return `Integer`
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public Integer updateComment(Comment comment) {
return this.commentMapper.updateComment(comment);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer deleteComment(long comment_id) {
return this.commentMapper.deleteComment(comment_id);
}
/**
* ID
*
* CommentMapper`deleteComment`ID10
* @param comment_id
* @return `Integer`
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public Integer deleteComment(long comment_id) {
return this.commentMapper.deleteComment(comment_id);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Comment> findAllComments() {
return this.commentMapper.findAllComments();
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public PageInfo<Comment> findAllCommentsBySplitPage(Integer page, Integer limit, String keyword) {
PageHelper.startPage(page, limit);
List<Comment> list = new ArrayList<Comment>();
if(keyword != null && !keyword.trim().equals("")) {
System.out.println("keyword:"+keyword);
list = this.commentMapper.findCommentsByUserName(keyword);
}else {
//System.out.println("keyword:"+keyword);
list = this.commentMapper.findAllComments();
}
PageInfo<Comment> info = new PageInfo<Comment>(list);
return info;
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public PageInfo<Comment> findCommentsByUserName(Integer page, Integer limit,String user_name) {
PageHelper.startPage(page,limit);
List<Comment> list = new ArrayList<Comment>();
list = this.commentMapper.findCommentsByUserName(user_name);
PageInfo<Comment> info = new PageInfo<Comment>(list);
return info;
}
/**
*
* `Propagation.REQUIRED`
* CommentMapper`findAllComments`便
* @return `Comment``List`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public List<Comment> findAllComments() {
return this.commentMapper.findAllComments();
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Comment> findCommentsByMovieId(long movie_id) {
return this.commentMapper.findCommentsByMoiveId(movie_id);
}
/**
*
* `Propagation.REQUIRED`
* `PageHelper.startPage(page, limit)`CommentMapper`findCommentsByUserName``findAllComments`
* `PageInfo``PageInfo`便`PageInfo`
* @param page
* @param limit
* @param keyword `null`
* @return `PageInfo<Comment>`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public PageInfo<Comment> findAllCommentsBySplitPage(Integer page, Integer limit, String keyword) {
PageHelper.startPage(page, limit);
List<Comment> list = new ArrayList<Comment>();
if (keyword!= null &&!keyword.trim().equals("")) {
System.out.println("keyword:" + keyword);
list = this.commentMapper.findCommentsByUserName(keyword);
} else {
//System.out.println("keyword:" + keyword);
list = this.commentMapper.findAllComments();
}
PageInfo<Comment> info = new PageInfo<Comment>(list);
return info;
}
/**
*
* `Propagation.REQUIRED`
* `PageHelper.startPage(page,limit)`CommentMapper`findCommentsByUserName``PageInfo`便
* @param page
* @param limit
* @param user_name
* @return `PageInfo<Comment>`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public PageInfo<Comment> findCommentsByUserName(Integer page, Integer limit, String user_name) {
PageHelper.startPage(page, limit);
List<Comment> list = new ArrayList<Comment>();
list = this.commentMapper.findCommentsByUserName(user_name);
PageInfo<Comment> info = new PageInfo<Comment>(list);
return info;
}
/**
* ID
* `Propagation.REQUIRED`
* CommentMapper`findCommentsByMoiveId`便
* @param movie_id ID
* @return `Comment``List`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public List<Comment> findCommentsByMovieId(long movie_id) {
return this.commentMapper.findCommentsByMoiveId(movie_id);
}
}
}

@ -12,125 +12,64 @@ import com.mapper.CinemaMapper;
import com.mapper.HallMapper;
import com.service.IHallService;
/**
* HallServiceImpIHallServiceHall
* SpringHallMapperCinemaMapperSpring
* `@Service`Spring便Spring使
*/
@Service
public class HallServiceImp implements IHallService {
public class HallServiceImp implements IHallService{
@Autowired
private HallMapper hallMapper;
@Autowired
private CinemaMapper cinemaMapper;
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public Hall findHallById(long hall_id) {
Hall hall = this.hallMapper.findHallById(hall_id);
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
return hall;
}
/**
* SpringHallMapper
*/
@Autowired
private HallMapper hallMapper;
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public Hall findHallByCinemaAndHallName(String cinema_name, String hall_name) {
return this.hallMapper.findHallByCinemaAndHallName(cinema_name, hall_name);
}
/**
* SpringCinemaMapper
*/
@Autowired
private CinemaMapper cinemaMapper;
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer addHall(Hall hall) {
return this.hallMapper.addHall(hall);
}
/**
* ID
* `Propagation.REQUIRED``readOnly=true`
* HallMapper`findHallById`IDIDCinemaMapper`findCinemaById`
* @param hall_id ID
* @return `Hall``null`Mapper
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public Hall findHallById(long hall_id) {
Hall hall = this.hallMapper.findHallById(hall_id);
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
return hall;
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer updateHall(Hall hall) {
return this.hallMapper.updateHall(hall);
}
/**
*
* `Propagation.REQUIRED`
* HallMapper`findHallByCinemaAndHallName`便
* @param cinema_name
* @param hall_name
* @return `Hall``null`Mapper
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public Hall findHallByCinemaAndHallName(String cinema_name, String hall_name) {
return this.hallMapper.findHallByCinemaAndHallName(cinema_name, hall_name);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer deleteHall(long hall_id) {
return this.hallMapper.deleteHall(hall_id);
}
/**
*
* `Propagation.REQUIRED``rollbackFor=Exception.class`
* HallMapper`addHall``Hall`10
* @param hall `Hall`
* @return `Integer`
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public Integer addHall(Hall hall) {
return this.hallMapper.addHall(hall);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Hall> findHallByCinemaId(long cinema_id) {
List<Hall> list = this.hallMapper.findHallByCinemaId(cinema_id);
for(Hall hall : list) {
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
}
return list;
}
/**
* `Hall`
*
* HallMapper`updateHall`
* @param hall `Hall`
* @return `Integer`
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public Integer updateHall(Hall hall) {
return this.hallMapper.updateHall(hall);
}
/**
* ID
*
* HallMapper`deleteHall`ID10
* @param hall_id
* @return `Integer`
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public Integer deleteHall(long hall_id) {
return this.hallMapper.deleteHall(hall_id);
}
/**
* ID
* `Propagation.REQUIRED`
* HallMapper`findHallByCinemaId`IDCinemaMapper`findCinemaById`便
* @param cinema_id ID
* @return `Hall``List`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public List<Hall> findHallByCinemaId(long cinema_id) {
List<Hall> list = this.hallMapper.findHallByCinemaId(cinema_id);
for (Hall hall : list) {
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
}
return list;
}
/**
*
* `Propagation.REQUIRED`
* HallMapper`findAllHalls`IDCinemaMapper`findCinemaById`便
* @param list `Hall``List`
* @return
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public List<Hall> findAllHalls() {
List<Hall> list = this.hallMapper.findAllHalls();
for (Hall hall : list) {
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
}
return list;
}
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Hall> findAllHalls() {
List<Hall> list = this.hallMapper.findAllHalls();
for(Hall hall : list) {
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
}
return list;
}
}

@ -1,4 +1,4 @@
package com.service.imp;
package com.service.imp;
import java.util.List;
@ -15,197 +15,109 @@ import com.mapper.UserMapper;
import com.service.IMovieService;
@Service
public class MovieServiceImp implements IMovieService {
@Autowired
private MovieMapper movieMapper; // 依赖注入 MovieMapper 用于执行与电影相关的数据库操作
@Autowired
private CommentMapper commentMapper; // 依赖注入 CommentMapper 用于执行与评论相关的数据库操作
@Autowired
private UserMapper userMapper; // 依赖注入 UserMapper 用于执行与用户相关的数据库操作
/**
* ID
*
* @param movie_id ID
* @return Movie null
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public Movie findMovieById(long movie_id) {
Movie movie = this.movieMapper.findMovieById(movie_id);
List<Comment> list = this.commentMapper.findCommentsByMoiveId(movie_id);
for (Comment comment : list) {
comment.setComment_user(this.userMapper.findUserById(comment.getUser_id())); // 设置评论的用户信息
}
movie.setCommentList(list); // 设置电影的评论列表
return movie;
}
/**
*
*
* @param price
* @param movie_id ID
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer changeMovieBoxOffice(float price, long movie_id) {
return this.movieMapper.changeMovieBoxOffice(price, movie_id);
}
/**
*
*
* @param movie_cn_name
* @return Movie null
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public Movie findMovieByName(String movie_cn_name) {
return this.movieMapper.findMovieByName(movie_cn_name);
}
/**
*
*
* @param movie_id ID
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer addCommentCount(long movie_id) {
return this.movieMapper.addMovieCommentCount(movie_id);
}
/**
*
*
* @param movie_id ID
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer delCommentCount(long movie_id) {
return this.movieMapper.deleteMovieCommentCount(movie_id);
}
/**
*
*
* @param movie Movie
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer addMovie(Movie movie) {
return this.movieMapper.addMovie(movie);
}
/**
* ID
*
* @param movie_id ID
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer deleteMovie(long movie_id) {
return this.movieMapper.deleteMovie(movie_id);
}
/**
* ID
*
* @param movie Movie
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer updateMovie(Movie movie) {
return this.movieMapper.updateMovie(movie);
}
/**
*
*
* @param movie_state
* @return Movie
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public List<Movie> findAllMovies(int movie_state) {
return this.movieMapper.findAllMovies(movie_state);
}
/**
*
*
* @param name
* @return Movie
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public List<Movie> findMoviesLikeName(String name) {
return this.movieMapper.findMoviesLikeName(name);
}
/**
*
*
* @param type
* @return Movie
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public List<Movie> findMoviesLikeType(String type) {
return this.movieMapper.findMoviesLikeType(type);
}
/**
*
*
* @return Movie
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public List<Movie> sortMovieByDate() {
return this.movieMapper.sortMovieByDate();
}
/**
*
*
* @return Movie
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public List<Movie> sortMovieByCount() {
return this.movieMapper.sortMovieByCount();
}
/**
*
*
* @return Movie
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public List<Movie> sortMovieByScore() {
return this.movieMapper.sortMovieByScore();
}
/**
*
*
* @return Movie
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public List<Movie> sortMovieByBoxOffice() {
return this.movieMapper.sortMovieByBoxOffice();
}
}
public class MovieServiceImp implements IMovieService{
@Autowired
private MovieMapper movieMapper;
@Autowired
private CommentMapper commentMapper;
@Autowired
private UserMapper userMapper;
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public Movie findMovieById(long movie_id) {
Movie movie = this.movieMapper.findMovieById(movie_id);
List<Comment> list = this.commentMapper.findCommentsByMoiveId(movie_id);
for(Comment comment : list) {
comment.setComment_user(this.userMapper.findUserById(comment.getUser_id()));
}
movie.setCommentList(list);
return movie;
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer changeMovieBoxOffice(float price, long movie_id) {
return this.movieMapper.changeMovieBoxOffice(price, movie_id);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public Movie findMovieByName(String movie_cn_name) {
return this.movieMapper.findMovieByName(movie_cn_name);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer addCommentCount(long movie_id) {
return this.movieMapper.addMovieCommentCount(movie_id);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer delCommentCount(long movie_id) {
return this.movieMapper.deleteMovieCommentCount(movie_id);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer addMovie(Movie movie) {
return this.movieMapper.addMovie(movie);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer deleteMovie(long movie_id) {
return this.movieMapper.deleteMovie(movie_id);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer updateMovie(Movie movie) {
return this.movieMapper.updateMovie(movie);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Movie> findAllMovies(int movie_state) {
return this.movieMapper.findAllMovies(movie_state);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Movie> findMoviesLikeName(String name) {
return this.movieMapper.findMoviesLikeName(name);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Movie> findMoviesLikeType(String type) {
return this.movieMapper.findMoviesLikeType(type);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Movie> sortMovieByDate() {
return this.movieMapper.sortMovieByDate();
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Movie> sortMovieByCount() {
return this.movieMapper.sortMovieByCount();
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Movie> sortMovieByScore() {
return this.movieMapper.sortMovieByScore();
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Movie> sortMovieByBoxOffice() {
return this.movieMapper.sortMovieByBoxOffice();
}
}

@ -21,222 +21,150 @@ import com.mapper.ScheduleMapper;
import com.mapper.UserMapper;
import com.service.IOrderService;
/**
* OrderServiceImpIOrderServiceOrder
* SpringMapperOrderMapperUserMapperScheduleMapperHallMapperMovieMapperCinemaMapperSpring
* `@Service`Spring便Spring使
*/
@Service
public class OrderServiceImp implements IOrderService {
/**
* SpringOrderMapper
*/
@Autowired
private OrderMapper orderMapper;
/**
* SpringUserMapper
*/
@Autowired
private UserMapper userMapper;
/**
* SpringScheduleMapper
*/
@Autowired
private ScheduleMapper scheduleMapper;
/**
* SpringHallMapper
*/
@Autowired
private HallMapper hallMapper;
/**
* SpringMovieMapper
*/
@Autowired
private MovieMapper movieMapper;
/**
* SpringCinemaMapper
*/
@Autowired
private CinemaMapper cinemaMapper;
/**
* ID
* `Propagation.REQUIRED``readOnly=true`
* OrderMapper`findOrderById`IDUserMapper`findUserById``null`
* @param order_id
* @return `Order``null`Mapper
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public Order findOrderById(String order_id) {
Order order = this.orderMapper.findOrderById(order_id);
if (order!= null) {
order.setOrder_user(this.userMapper.findUserById(order.getUser_id()));
Schedule schedule = this.scheduleMapper.findScheduleById(order.getSchedule_id());
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
order.setOrder_schedule(schedule);
} else {
order = null;
}
return order;
}
/**
* 退
* `Propagation.REQUIRED`
* OrderMapper`findRefundOrderByUserName`退0`findOrderById``null`
* @param user_name 退
* @return `Order``List`退退
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public List<Order> findRefundOrderByUserName(String user_name) {
List<Order> list = this.orderMapper.findRefundOrderByUserName(user_name);
if (list.size() > 0) {
for (Order order : list) {
order.setOrder_user(this.userMapper.findUserById(order.getUser_id()));
Schedule schedule = this.scheduleMapper.findScheduleById(order.getSchedule_id());
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
order.setOrder_schedule(schedule);
}
} else {
list = null;
}
return list;
}
/**
*
* `Propagation.REQUIRED``rollbackFor=Exception.class`
* OrderMapper`addOrder``Order`10
* @param order `Order`
* @return `Integer`
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public Integer addOrder(Order order) {
return this.orderMapper.addOrder(order);
}
/**
* 退
* `Propagation.REQUIRED``rollbackFor=Exception.class`
* OrderMapper`updateOrderStateToRefund`order_id退10退
* @param order_id 退
* @return `Integer`
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public Integer updateOrderStateToRefund(String order_id) {
return this.orderMapper.updateOrderStateToRefund(order_id);
}
/**
* 退
* 退退
* OrderMapper`updateOrderStateToRefunded`order_id退退
* @param order_id 退
* @return `Integer`
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public Integer updateOrderStateToRefunded(String order_id) {
return this.orderMapper.updateOrderStateToRefunded(order_id);
}
/**
*
* `Propagation.REQUIRED`
* `PageHelper.startPage(page, limit)`OrderMapper`findOrdersByUserName``PageInfo``PageInfo`便`PageInfo`
* @param page
* @param limit
* @param user_name
* @return `PageInfo<Order>`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public PageInfo<Order> findOrdersByUserName(Integer page, Integer limit, String user_name) {
PageHelper.startPage(page, limit);
List<Order> list = this.orderMapper.findOrdersByUserName(user_name);
for (Order order : list) {
order.setOrder_user(this.userMapper.findUserById(order.getUser_id()));
Schedule schedule = this.scheduleMapper.findScheduleById(order.getSchedule_id());
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
order.setOrder_schedule(schedule);
}
PageInfo<Order> info = new PageInfo<Order>(list);
return info;
}
/**
*
* `Propagation.REQUIRED`
* OrderMapper`findAllOrders`便
* @return `Order``List`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public List<Order> findAllOrders() {
List<Order> list = this.orderMapper.findAllOrders();
for (Order order : list) {
order.setOrder_user(this.userMapper.findUserById(order.getUser_id()));
Schedule schedule = this.scheduleMapper.findScheduleById(order.getSchedule_id());
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
order.setOrder_schedule(schedule);
}
return list;
}
/**
*
* `Propagation.REQUIRED`
* `PageHelper.startPage(page, limit)`OrderMapper`findOrdersByState``PageInfo`便
* @param page
* @param limit
* @param order_state
* @return `PageInfo<Order>`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public PageInfo<Order> findOrdersByState(Integer page, Integer limit, int order_state) {
PageHelper.startPage(page, limit);
List<Order> list = this.orderMapper.findOrdersByState(order_state);
for (Order order : list) {
order.setOrder_user(this.userMapper.findUserById(order.getUser_id()));
Schedule schedule = this.scheduleMapper.findScheduleById(order.getSchedule_id());
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
order.setOrder_schedule(schedule);
}
PageInfo<Order> info = new PageInfo<Order>(list);
return info;
}
/**
*
* `Propagation.REQUIRED`
* `PageHelper.startPage(page, limit)`OrderMapper`findOrdersByUserName``findAllOrders``PageInfo`便
* @param page
* @param limit
* @param keyword `null`
* @return `PageInfo<Order>`
public class OrderServiceImp implements IOrderService{
@Autowired
private OrderMapper orderMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private ScheduleMapper scheduleMapper;
@Autowired
private HallMapper hallMapper;
@Autowired
private MovieMapper movieMapper;
@Autowired
private CinemaMapper cinemaMapper;
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public Order findOrderById(String order_id) {
Order order = this.orderMapper.findOrderById(order_id);
if(order != null) {
order.setOrder_user(this.userMapper.findUserById(order.getUser_id()));
Schedule schedule = this.scheduleMapper.findScheduleById(order.getSchedule_id());
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
order.setOrder_schedule(schedule);
}else {
order = null;
}
return order;
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Order> findRefundOrderByUserName(String user_name) {
List<Order> list = this.orderMapper.findRefundOrderByUserName(user_name);
if(list.size() > 0) {
for(Order order : list) {
order.setOrder_user(this.userMapper.findUserById(order.getUser_id()));
Schedule schedule = this.scheduleMapper.findScheduleById(order.getSchedule_id());
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
order.setOrder_schedule(schedule);
}
}else {
list = null;
}
return list;
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer addOrder(Order order) {
return this.orderMapper.addOrder(order);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer updateOrderStateToRefund(String order_id) {
return this.orderMapper.updateOrderStateToRefund(order_id);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer updateOrderStateToRefunded(String order_id) {
return this.orderMapper.updateOrderStateToRefunded(order_id);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public PageInfo<Order> findOrdersByUserName(Integer page,Integer limit,String user_name) {
PageHelper.startPage(page, limit);
List<Order> list = this.orderMapper.findOrdersByUserName(user_name);
for(Order order : list) {
order.setOrder_user(this.userMapper.findUserById(order.getUser_id()));
Schedule schedule = this.scheduleMapper.findScheduleById(order.getSchedule_id());
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
order.setOrder_schedule(schedule);
}
PageInfo<Order> info = new PageInfo<Order>(list);
return info;
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Order> findAllOrders() {
List<Order> list = this.orderMapper.findAllOrders();
for(Order order : list) {
order.setOrder_user(this.userMapper.findUserById(order.getUser_id()));
Schedule schedule = this.scheduleMapper.findScheduleById(order.getSchedule_id());
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
order.setOrder_schedule(schedule);
}
return list;
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public PageInfo<Order> findOrdersByState(Integer page,Integer limit,int order_state) {
PageHelper.startPage(page, limit);
List<Order> list = this.orderMapper.findOrdersByState(order_state);
for(Order order : list) {
order.setOrder_user(this.userMapper.findUserById(order.getUser_id()));
Schedule schedule = this.scheduleMapper.findScheduleById(order.getSchedule_id());
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
order.setOrder_schedule(schedule);
}
PageInfo<Order> info = new PageInfo<Order>(list);
return info;
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public PageInfo<Order> findAllOrdersBySplitPage(Integer page, Integer limit, String keyword) {
PageHelper.startPage(page, limit);
List<Order> list = new ArrayList<Order>();
if(keyword != null && !keyword.trim().equals("")) {
list = this.orderMapper.findOrdersByUserName(keyword);
}else {
list = this.orderMapper.findAllOrders();
}
for(Order order : list) {
order.setOrder_user(this.userMapper.findUserById(order.getUser_id()));
Schedule schedule = this.scheduleMapper.findScheduleById(order.getSchedule_id());
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
order.setOrder_schedule(schedule);
}
PageInfo<Order> info = new PageInfo<Order>(list);
return info;
}
}

@ -20,231 +20,153 @@ import com.mapper.ScheduleMapper;
import com.service.IScheduleService;
@Service
public class ScheduleServiceImp implements IScheduleService {
@Autowired
private ScheduleMapper scheduleMapper; // 依赖注入 ScheduleMapper 用于执行与排片相关的数据库操作
@Autowired
private HallMapper hallMapper; // 依赖注入 HallMapper 用于执行与影厅相关的数据库操作
@Autowired
private MovieMapper movieMapper; // 依赖注入 MovieMapper 用于执行与电影相关的数据库操作
@Autowired
private OrderMapper orderMapper; // 依赖注入 OrderMapper 用于执行与订单相关的数据库操作
@Autowired
private CinemaMapper cinemaMapper; // 依赖注入 CinemaMapper 用于执行与影院相关的数据库操作
/**
* ID
*
* @param schedule_id ID
* @return Schedule null
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public Schedule findScheduleById(long schedule_id) {
Schedule schedule = this.scheduleMapper.findScheduleById(schedule_id);
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id())); // 设置影厅所属的影院
schedule.setSchedule_hall(hall); // 设置排片的影厅
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id())); // 设置排片的电影
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule_id);
schedule.setOrderList(list); // 设置排片的订单列表
return schedule;
}
/**
*
*
* @param schedule Schedule
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer addSchedule(Schedule schedule) {
return this.scheduleMapper.addSchedule(schedule);
}
/**
* ID
*
* @param schedule Schedule
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer updateSchedule(Schedule schedule) {
return this.scheduleMapper.updateSchedule(schedule);
}
/**
* ID
*
* @param schedule_id ID
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer deleteSchedule(long schedule_id) {
return this.scheduleMapper.deleteSchedule(schedule_id);
}
/**
*
*
* @param schedule_id ID
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer addScheduleRemain(long schedule_id) {
return this.scheduleMapper.addScheduleRemain(schedule_id);
}
/**
*
*
* @param schedule_id ID
* @return 10
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // 写入操作,遇到异常时回滚
@Override
public Integer delScheduleRemain(long schedule_id) {
return this.scheduleMapper.delScheduleRemain(schedule_id);
}
/**
*
*
* @param page
* @param limit
* @param movie_name
* @return PageInfo
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public PageInfo<Schedule> findScheduleByMovieName(Integer page, Integer limit, String movie_name) {
PageHelper.startPage(page, limit); // 启用分页
List<Schedule> schedules = this.scheduleMapper.findScheduleByMovieName(movie_name);
for (Schedule schedule : schedules) {
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id())); // 设置影厅所属的影院
schedule.setSchedule_hall(hall); // 设置排片的影厅
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id())); // 设置排片的电影
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
schedule.setOrderList(list); // 设置排片的订单列表
}
PageInfo<Schedule> info = new PageInfo<>(schedules);
return info;
}
/**
*
*
* @param page
* @param limit
* @param movie_name
* @return PageInfo
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public PageInfo<Schedule> findOffScheduleByMovieName(Integer page, Integer limit, String movie_name) {
PageHelper.startPage(page, limit); // 启用分页
List<Schedule> schedules = this.scheduleMapper.findOffScheduleByMovieName(movie_name);
for (Schedule schedule : schedules) {
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id())); // 设置影厅所属的影院
schedule.setSchedule_hall(hall); // 设置排片的影厅
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id())); // 设置排片的电影
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
schedule.setOrderList(list); // 设置排片的订单列表
}
PageInfo<Schedule> info = new PageInfo<>(schedules);
return info;
}
/**
*
*
* @param page
* @param limit
* @param schedule_state
* @return PageInfo
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public PageInfo<Schedule> findAllScheduleByState(Integer page, Integer limit, int schedule_state) {
PageHelper.startPage(page, limit); // 启用分页
List<Schedule> schedules = this.scheduleMapper.findScheduleByState(schedule_state);
for (Schedule schedule : schedules) {
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id())); // 设置影厅所属的影院
schedule.setSchedule_hall(hall); // 设置排片的影厅
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id())); // 设置排片的电影
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
schedule.setOrderList(list); // 设置排片的订单列表
}
PageInfo<Schedule> info = new PageInfo<>(schedules);
return info;
}
/**
*
*
* @param page
* @param limit
* @return PageInfo
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public PageInfo<Schedule> findAllSchedule(Integer page, Integer limit) {
PageHelper.startPage(page, limit); // 启用分页
List<Schedule> schedules = this.scheduleMapper.findAllSchedule();
for (Schedule schedule : schedules) {
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id())); // 设置影厅所属的影院
schedule.setSchedule_hall(hall); // 设置排片的影厅
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id())); // 设置排片的电影
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
schedule.setOrderList(list); // 设置排片的订单列表
}
PageInfo<Schedule> info = new PageInfo<>(schedules);
return info;
}
/**
* ID ID
*
* @param cinema_id ID
* @param movie_id ID
* @return Schedule
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public List<Schedule> findScheduleByCinemaAndMovie(long cinema_id, long movie_id) {
return this.scheduleMapper.findScheduleByCinemaAndMovie(cinema_id, movie_id);
}
/**
* selectSeat ID ID
*
* @param cinema_id ID
* @param movie_id ID
* @return Schedule
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) // 读取操作,不需要回滚
@Override
public List<Schedule> findScheduleByCineamIdAndMovieId(long cinema_id, long movie_id) {
List<Schedule> list = this.scheduleMapper.findScheduleByCinemaAndMovie(cinema_id, movie_id);
for (Schedule schedule : list) {
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id())); // 设置影厅所属的影院
schedule.setSchedule_hall(hall); // 设置排片的影厅
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id())); // 设置排片的电影
}
return list;
}
}
public class ScheduleServiceImp implements IScheduleService{
@Autowired
private ScheduleMapper scheduleMapper;
@Autowired
private HallMapper hallMapper;
@Autowired
private MovieMapper movieMapper;
@Autowired
private OrderMapper orderMapper;
@Autowired
private CinemaMapper cinemaMapper;
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public Schedule findScheduleById(long schedule_id) {
Schedule schedule = this.scheduleMapper.findScheduleById(schedule_id);
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule_id);
schedule.setOrderList(list);
return schedule;
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer addSchedule(Schedule schedule) {
return this.scheduleMapper.addSchedule(schedule);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer updateSchedule(Schedule schedule) {
return this.scheduleMapper.updateSchedule(schedule);
}
/**
*
*/
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer deleteSchedule(long schedule_id) {
return this.scheduleMapper.deleteSchedule(schedule_id);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer addScheduleRemain(long schedule_id) {
return this.scheduleMapper.addScheduleRemain(schedule_id);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer delScheduleRemain(long schedule_id) {
return this.scheduleMapper.delScheduleRemain(schedule_id);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public PageInfo<Schedule> findScheduleByMovieName(Integer page,Integer limit,String movie_name) {
PageHelper.startPage(page, limit);
List<Schedule> schedules = this.scheduleMapper.findScheduleByMovieName(movie_name);
for(Schedule schedule: schedules) {
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
schedule.setOrderList(list);
}
PageInfo<Schedule> info = new PageInfo<Schedule>(schedules);
return info;
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public PageInfo<Schedule> findOffScheduleByMovieName(Integer page, Integer limit, String movie_name) {
PageHelper.startPage(page, limit);
List<Schedule> schedules = this.scheduleMapper.findOffScheduleByMovieName(movie_name);
for(Schedule schedule: schedules) {
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
schedule.setOrderList(list);
}
PageInfo<Schedule> info = new PageInfo<Schedule>(schedules);
return info;
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public PageInfo<Schedule> findAllScheduleByState(Integer page,Integer limit,int schedule_state) {
PageHelper.startPage(page, limit);
List<Schedule> schedules = this.scheduleMapper.findScheduleByState(schedule_state);
for(Schedule schedule: schedules) {
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
schedule.setOrderList(list);
}
PageInfo<Schedule> info = new PageInfo<Schedule>(schedules);
return info;
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public PageInfo<Schedule> findAllSchedule(Integer page,Integer limit) {
PageHelper.startPage(page, limit);
List<Schedule> schedules = this.scheduleMapper.findAllSchedule();
for(Schedule schedule: schedules) {
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
schedule.setOrderList(list);
}
PageInfo<Schedule> info = new PageInfo<Schedule>(schedules);
return info;
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Schedule> findScheduleByCinemaAndMovie(long cinema_id, long movie_id) {
return this.scheduleMapper.findScheduleByCinemaAndMovie(cinema_id, movie_id);
}
/**
* selectSeat
*/
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<Schedule> findScheduleByCineamIdAndMovieId(long cinema_id, long movie_id) {
List<Schedule> list = this.scheduleMapper.findScheduleByCinemaAndMovie(cinema_id, movie_id);
for(Schedule schedule: list) {
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
schedule.setSchedule_hall(hall);
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
}
return list;
}
}

@ -14,150 +14,80 @@ import com.github.pagehelper.PageInfo;
import com.mapper.UserMapper;
import com.service.IUserService;
/**
* UserServiceImpIUserServiceUser
* UserMapperSpring
* 使`@Service`Spring便Spring使
*/
@Service
public class UserServiceImp implements IUserService {
public class UserServiceImp implements IUserService{
/**
* SpringUserMapper
*/
@Autowired
private UserMapper usermapper;
@Autowired
private UserMapper usermapper;
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public User login(String user_name, String user_pwd) {
List<User> userList = usermapper.findUserByName(user_name);
for(User user : userList) {
if(user.getUser_pwd().equals(user_pwd)) {
return user;
}
}
return null;
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer updateUserInfo(User user) {
return this.usermapper.updateUser(user);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public User findUserById(long user_id) {
return this.usermapper.findUserById(user_id);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<User> findUserByName(String name) {
return this.usermapper.findUserByName(name);
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer addUser(User user) {
return this.usermapper.addUser(user);
}
/**
*
* `Propagation.REQUIRED``readOnly = true`
* UserMapper`findUserByName``null`
* @param user_name
* @param user_pwd
* @return `User``null`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public User login(String user_name, String user_pwd) {
List<User> userList = usermapper.findUserByName(user_name);
for (User user : userList) {
if (user.getUser_pwd().equals(user_pwd)) {
return user;
}
}
return null;
}
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
@Override
public Integer deleteUser(long user_id) {
return this.usermapper.deleteUser(user_id);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public PageInfo<User> findAllUserBySplitPage(Integer page, Integer limit, String keyword) {
PageHelper.startPage(page, limit);
List<User> list = new ArrayList<User>();
if(keyword != null && !keyword.trim().equals("")) {
list = this.usermapper.findUserLikeName(keyword);
}else {
list = this.usermapper.findAllUser();
}
PageInfo<User> info = new PageInfo<User>(list);
return info;
}
/**
*
* `Propagation.REQUIRED``rollbackFor = Exception.class`
* UserMapper`updateUser`10
* @param user `User`
* @return `Integer`
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public Integer updateUserInfo(User user) {
return this.usermapper.updateUser(user);
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<User> findAllUserInfos() {
return this.usermapper.findAllUser();
}
/**
* ID
* `Propagation.REQUIRED`
* UserMapper`findUserById`ID便使
* @param user_id
* @return `User``null`Mapper
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public User findUserById(long user_id) {
return this.usermapper.findUserById(user_id);
}
/**
*
* `Propagation.REQUIRED`
* UserMapper`findUserByName`便使
* @param name
* @return `User``List`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public List<User> findUserByName(String name) {
return this.usermapper.findUserByName(name);
}
/**
*
* `Propagation.REQUIRED``rollbackFor = Exception.class`
* UserMapper`addUser``User`10
* @param user `User`
* @return `Integer`
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public Integer addUser(User user) {
return this.usermapper.addUser(user);
}
/**
* ID
*
* UserMapper`deleteUser`ID10
* @param user_id
* @return `Integer`
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public Integer deleteUser(long user_id) {
return this.usermapper.deleteUser(user_id);
}
/**
*
* `Propagation.REQUIRED`
* `PageHelper.startPage(page, limit)`UserMapper`findUserLikeName``findAllUser``PageInfo``PageInfo`便`PageInfo`
* @param page
* @param limit
* @param keyword `null`
* @return `PageInfo<User>`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public PageInfo<User> findAllUserBySplitPage(Integer page, Integer limit, String keyword) {
PageHelper.startPage(page, limit);
List<User> list = new ArrayList<User>();
if (keyword!= null &&!keyword.trim().equals("")) {
list = this.usermapper.findUserLikeName(keyword);
} else {
list = this.usermapper.findAllUser();
}
PageInfo<User> info = new PageInfo<User>(list);
return info;
}
/**
*
* `Propagation.REQUIRED`
* UserMapper`findAllUser`便
* @return `User``List`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public List<User> findAllUserInfos() {
return this.usermapper.findAllUser();
}
/**
*
* `Propagation.REQUIRED`
* UserMapper`findUserLikeName`使`LIKE`便
* @param name
* @return `User``List`
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public List<User> findUserLikeName(String name) {
return this.usermapper.findUserLikeName(name);
}
}
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
@Override
public List<User> findUserLikeName(String name) {
return this.usermapper.findUserLikeName(name);
}
}

@ -9,171 +9,110 @@ import java.util.Random;
import com.alibaba.fastjson.JSONObject;
// 定义名为test的公共类属于com.util包
public class test {
// Java程序的入口方法程序从这里开始执行
public static void main(String[] args) {
// 创建一个Date对象表示当前日期和时间
// Date date = new Date();
// 使用Date对象的年、月、日信息创建一个java.sql.Date对象此处代码存在问题构造方法参数已过时推荐使用 Calendar 或者直接传入毫秒值等方式来正确创建 java.sql.Date这里暂按原代码注释逻辑说明
// java.sql.Date zdate = new java.sql.Date(date.getYear(), date.getMonth(), date.getDay());
// 输出原始的Date对象展示完整日期时间信息
// System.out.println(date);
// 输出转换后的java.sql.Date对象按照上述有问题的方式构造出来的
// System.out.println(zdate);
// 循环20次生成并格式化随机数
// for(int i = 0;i<20;i++) {
// 生成一个范围在5到9包含5不包含9之间的随机浮点数
// float random = 5 + (new Random().nextFloat() * 4);
// 创建一个DecimalFormat对象用于格式化数字格式化为保留一位小数的形式
// DecimalFormat fnum = new DecimalFormat("##0.0");
// 使用DecimalFormat对象将随机数格式化为字符串
// String score = fnum.format(random);
// 下面这行被注释掉了,原本功能是将随机数直接转换为字符串(与上面格式化后转字符串的方式不同)
// String rs = String.valueOf(random);
// 输出格式化后的随机数字符串,前面添加了"score:"标识
// System.out.println("score:" + score);
// }
// 创建一个空的JSONObject对象用于存储和操作JSON格式的数据
// JSONObject obj = new JSONObject();
// 创建另一个空的JSONObject对象可能用于存储影院相关信息从后续代码推测
// JSONObject hallobj = new JSONObject();
// 下面这行被注释掉了原本是想创建一个用于存储影院名称列表的ArrayList但是由于后续在循环内又重复创建同名变量所以这里可以考虑删除或者调整使用方式
// ArrayList<String> cinemalist= new ArrayList<String>();
// 外层循环循环2次可能用于模拟2个不同的情况从代码推测可能与影院相关
// for(int i = 0; i < 2;i++) {
// 在每次外层循环中重新创建一个ArrayList用于存储影院的厅信息这里重新创建可能不太合理除非每次循环都需要全新的列表否则可以考虑移到循环外创建一次即可
ArrayList<String> cinemalist= new ArrayList<String>();
// 内层循环循环2次用于向当前影院的厅信息列表中添加厅名称格式为"X号厅"
for(int j=0;j<2;j++) {
cinemalist.add(String.valueOf(j+1)+"号厅");
}
// 将当前影院的厅信息列表添加到hallobj这个JSONObject中键为"影院X"X为当前外层循环的索引值
hallobj.put("影院"+String.valueOf(i),cinemalist);
// }
// 将包含影院厅信息的hallobj对象添加到obj这个总的JSONObject中键为"cinema"
obj.put(" cinema ", hallobj);
// 输出整个JSON对象查看构建好的包含影院信息的JSON结构
System.out.println(obj);
// 从obj中获取键为"cinema"的JSONObject对象也就是前面存放影院厅信息的那个对象
JSONObject obj2 = obj.getJSONObject("cinema");
// 输出获取到的二级JSONObject对象主要是为了查看解析一层后的内容可能用于调试等目的
System.out.println(obj2);
// 解析二级创建一个新的ArrayList用于存储从JSON中获取的具体影院的厅信息从后续代码看是获取"影院0"对应的厅列表)
ArrayList<String> halllist= new ArrayList<String>();
// 从obj2中获取键为"影院0"的值是一个ArrayList<String>类型并赋值给halllist然后可以进一步操作这个列表
halllist = (ArrayList<String>)obj2.get("影院0");
// 输出获取到的厅列表中的第一个元素(主要是示例如何获取具体的厅名称信息)
System.out.println(halllist.get(0));
// 创建一个用于存储整数的ArrayList对象
ArrayList<Integer> arr = new ArrayList<Integer>();
// 循环5次向ArrayList中添加从0到4的整数
for(int i = 0;i < 5;i++) {
arr.add(i);
}
// 输出ArrayList中索引为4的元素也就是最后一个添加进去的元素值为4
System.out.println(arr.get(4));
// 创建一个Date对象表示当前日期和时间
Date date = new Date();
// 创建一个SimpleDateFormat对象用于格式化日期格式为"YYYYMMdd"(注:这里格式应该是"yyyyMMdd",大写的"YYYY"表示周年,不符合常规日期格式化需求,不过先按原代码注释逻辑说明)
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYYMMdd");
// 创建一个空字符串,用于后续拼接格式化后的日期字符串
String str = "";
// 将格式化后的日期字符串拼接到str上
str += dateFormat.format(date);
// 输出拼接后的日期字符串
System.out.println(str);
// 定义一个字符串数组,里面存放了一些座位相关的字符串信息(格式类似"X排X座"
String [] str = {"3排4座","10排1座","5排12座","11排12座"};
// 创建一个ArrayList用于存储处理后的座位索引相关字符串从后续代码看是对座位字符串进行格式化转换后的结果
ArrayList<String> arr = new ArrayList<String>();
// 循环遍历座位字符串数组
for(int i = 0;i < str.length;i++) {
// 下面这行被注释掉了,原本可能是想输出每个座位字符串的长度,用于调试查看情况
// System.out.println(str[i].length());
// 创建一个空字符串,用于后续构建处理后的座位索引字符串
String index = "";
// 根据座位字符串的长度进行不同的处理(目的可能是将座位信息转换为统一格式的索引字符串)
switch(str[i].length()) {
// 如果座位字符串长度为4进行如下处理替换"排"为"0",去掉"座"字符等操作来构建索引字符串)
case 4:
index = "0" + str[i].replaceAll("排", "0");
index = index.replaceAll("座", "");
break;
// 如果座位字符串长度为5再根据中间字符是否是数字进行不同的替换操作来构建索引字符串
case 5:
if(str[i].charAt(2) >= 48 && str[i].charAt(2) <= 57) {
index = "0" + str[i].replaceAll("排", "");
index = index.replaceAll("座", "");
}else {
index = str[i].replaceAll("排", "0");
index = index.replaceAll("座", "");
}
break;
// 如果座位字符串长度为6进行简单的替换操作构建索引字符串去掉"排"和"座"字符)
case 6:
index = str[i].replaceAll("排", "");
index = index.replaceAll("座", "");
break;
}
// 将处理好的索引字符串添加到ArrayList中
arr.add(index);
}
// 输出存储处理后座位索引字符串的ArrayList
System.out.println(arr);
// 下面这行被注释掉了定义一个整数变量表示价格值为29可能是用于后续价格相关计算等用途
// int price = 29;
// 下面这行被注释掉了将价格除以10000转换为以万为单位的浮点数可能是用于统计价格相关数据等情况
// float box = (float)price /10000;
// 下面这行被注释掉了,输出以万为单位的价格浮点数(同样是和价格转换相关的输出操作)
// System.out.println((float)price /10000);;
// 创建一个DecimalFormat对象用于格式化数字格式化为保留四位小数的形式不过从前面代码看这里的random变量未定义应该是代码编写遗漏或者错误暂按格式相关功能注释
// DecimalFormat fnum = new DecimalFormat("##0.0000");
// 使用DecimalFormat对象将随机数格式化为字符串同样由于random未定义这行实际无法正确执行仅按功能意图注释
// String score = fnum.format(random);
public class test {
// 创建一个空的用于存储整数的ArrayList对象
ArrayList<Integer> arr = new ArrayList<>();
// 创建另一个空的用于存储整数索引的ArrayList对象从后续代码看是用于记录值为0的元素索引
ArrayList<Integer> indexz = new ArrayList<>();
// 定义一个整数数组包含了一些整数值包含0元素
int num[] = {1,2,3,0,5,0,6};
// 循环将整数数组中的元素添加到arr这个ArrayList中
for(int i = 0;i<num.length;i++) {
arr.add(num[i]);
}
// 循环遍历arr这个ArrayList查找值为0的元素并将其索引添加到indexz这个ArrayList中
for(int z = 0;z<arr.size();z++) {
if(arr.get(z) == 0) {
indexz.add(z);
}
}
// 输出存储了所有元素的arr这个ArrayList
System.out.println(arr);
// 输出存储了值为0的元素索引的indexz这个ArrayList
System.out.println(indexz);
// 下面这行被注释掉了如果取消注释会移除arr中索引为3的元素可能是一种操作元素的尝试暂被注释掉了
// arr.remove(3);
// 循环遍历indexz这个存储了值为0元素索引的ArrayList
for(int y =0;y<indexz.size();y++) {
// 定义一个临时变量初始值为0从后续代码看可能用于调整移除元素时的索引计算不过代码逻辑有点复杂且可能不太准确暂按原代码注释逻辑说明
int test = 0;
// 计算要移除元素的实际索引用indexz中获取的索引减去test的值这里test的使用方式有点奇怪可能导致索引计算错误等问题
int index = (indexz.get(y))-test;
// 输出要移除元素的索引(可能用于调试查看计算的索引是否正确)
System.out.println(index);
// 根据计算出的索引移除arr中的元素
arr.remove(index);
// 将test的值增加2同样这个操作的目的不太明确可能会导致后续索引计算混乱等问题代码逻辑可能需要调整
test = test + 2;
}
// 输出经过移除操作后的arr这个ArrayList查看最终的元素情况
System.out.println(arr);
}
}
public static void main(String[] args) {
// Date date = new Date();
// java.sql.Date zdate = new java.sql.Date(date.getYear(), date.getMonth(), date.getDay());
// System.out.println(date);
// System.out.println(zdate);
// for(int i = 0;i<20;i++) {
// float random = 5 + (new Random().nextFloat() * 4);
// DecimalFormat fnum = new DecimalFormat("##0.0");
// String score = fnum.format(random);
// //String rs = String.valueOf(random);
// System.out.println("score:" + score);
// }
// JSONObject obj = new JSONObject();
// JSONObject hallobj = new JSONObject();
// //ArrayList<String> cinemalist= new ArrayList<String>();
// for(int i = 0; i < 2;i++) {
// ArrayList<String> cinemalist= new ArrayList<String>();
// for(int j=0;j<2;j++) {
// cinemalist.add(String.valueOf(j+1)+"号厅");
// }
// hallobj.put("影院"+String.valueOf(i),cinemalist);
// }
// obj.put("cinema", hallobj);
// System.out.println(obj);
// JSONObject obj2 = obj.getJSONObject("cinema");
// //解析 1级
// System.out.println(obj2);
// //解析 2级
// ArrayList<String> halllist= new ArrayList<String>();
// halllist = (ArrayList<String>)obj2.get("影院0");
// System.out.println(halllist.get(0));
// ArrayList<Integer> arr = new ArrayList<Integer>();
// for(int i = 0;i < 5;i++) {
// arr.add(i);
// }
// System.out.println(arr.get(4));
// Date date = new Date();
// SimpleDateFormat dateFormat = new SimpleDateFormat("YYYYMMdd");
// String str = "";
// str += dateFormat.format(date);
// System.out.println(str);
// String [] str = {"3排4座","10排1座","5排12座","11排12座"};
// ArrayList<String> arr = new ArrayList<String>();
// for(int i = 0;i < str.length;i++) {
// //System.out.println(str[i].length());
// String index = "";
// switch(str[i].length()) {
// case 4:
// index = "0" + str[i].replaceAll("排", "0");
// index = index.replaceAll("座", "");
// break;
// case 5:
// if(str[i].charAt(2) >= 48 && str[i].charAt(2) <= 57) {
// index = "0" + str[i].replaceAll("排", "");
// index = index.replaceAll("座", "");
// }else {
// index = str[i].replaceAll("排", "0");
// index = index.replaceAll("座", "");
// }
// break;
// case 6:
// index = str[i].replaceAll("排", "");
// index = index.replaceAll("座", "");
// break;
// }
// arr.add(index);
// }
// System.out.println(arr);
//int price = 29;
//float box = (float)price /10000;
//System.out.println((float)price /10000);;
// DecimalFormat fnum = new DecimalFormat("##0.0000");
// String score = fnum.format(random);
ArrayList<Integer> arr = new ArrayList<>();
ArrayList<Integer> indexz = new ArrayList<>();
int num[] = {1,2,3,0,5,0,6};
for(int i = 0;i<num.length;i++) {
arr.add(num[i]);
}
for(int z = 0;z<arr.size();z++) {
if(arr.get(z) == 0) {
indexz.add(z);
}
}
System.out.println(arr);
System.out.println(indexz);
// arr.remove(3);
for(int y =0;y<indexz.size();y++) {
int test = 0;
int index = (indexz.get(y))-test;
System.out.println(index);
arr.remove(index);
test = test + 2;
}
System.out.println(arr);
}
}

@ -3,26 +3,16 @@
<!DOCTYPE html>
<html>
<head>
<!-- 设置页面的字符编码为UTF-8 -->
<meta charset="UTF-8">
<!-- 确保页面在移动设备上正确显示初始缩放比例为1.0 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 兼容IE浏览器的特定模式 -->
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<!-- 引入Bootstrap的最小化样式文件 -->
<link href="../static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- 引入Bootstrap的样式文件可能用于开发调试等一般生产环境用.min版本 -->
<link href="../static/bootstrap/css/bootstrap.css" rel="stylesheet">
<!-- 引入jQuery库的最小化版本用于操作DOM等功能 -->
<script src="../static/bootstrap/js/jquery-3.3.1.min.js"></script>
<!-- 引入Bootstrap的最小化JavaScript文件用于实现Bootstrap相关组件功能 -->
<script src="../static/bootstrap/js/bootstrap.min.js"></script>
<!-- 引入自定义的Api.js文件可能包含项目相关的接口调用等功能 -->
<script src="../static/js/Api.js"></script>
<!-- 设置页面的图标 -->
<link rel="icon" type="image/x-icon" href="../static/images/logo.ico"/>
<!-- 引入自定义的登录页面样式文件 -->
<link href="../static/css/login.css" rel="stylesheet">
<script></script>
@ -30,22 +20,21 @@
</head>
<body>
<!-- 页面中的一个区域用于展示一些宣传性的元素如logo、标题等 -->
<!-- ------------------------------------------------------------------- -->
<div class="screen">
<img class="big_logo"><br/>
<label class="title">鹰 眼 电 影</label><br/>
<label class="ineer_one">回首向来风雨茶香里</label><br/>
<label class="ineer_two">眸中一点可是思念谁</label>
</div>
<!-- 登录页的整体内容区域 -->
<!-- 登录页 -->
<div class="content" style="float: left;">
<!-- 用于切换登录和注册的tab栏 -->
<ul class="tab">
<li class="login">登录</li>
<li class="register">注册</li>
</ul>
<div class="page">
<!-- 登录界面的具体内容 -->
<!-- 登录界面 -->
<div class="childpage" style="display: block">
<div>
<label class="login_title">用户登录</label><br/>
@ -70,7 +59,7 @@
<label class="login_version">@版权所有</label>
</div>
</div>
<!-- 注册界面的具体内容 -->
<!-- 注册界面 -->
<div class="childpage" style="display: none">
<div>
<label class="register_title">用户注册</label><br/>
@ -108,14 +97,15 @@
</div>
<!-- ------------------------------------------------------------------- -->
<script>
// 页面加载完成后执行的初始化函数
//初始化
window.onload = function(){
initWindow(); // 初始化登录框位置
initLogin(); // 初始化登录界面
initWindow(); //初始化登录框位置
initLogin(); //初始化登录界面
  };
// 初始化登录框位置(使其垂直居中、水平处于页面特定位置
//初始化登录框位置垂直居中、水平4/7
function initWindow(){
var middle = 3;
var colorNum = 200;
@ -125,17 +115,13 @@
var screen = document.getElementsByClassName('screen')[0];
var title = document.getElementsByClassName('title')[0];
var bodys = document.getElementsByTagName('body')[0];
// 设置页面背景大小适应页面宽度
bodys.style.cssText = "background-size: " + clientWidth + "px auto;";
// 设置登录内容区域的外边距,使其垂直居中、水平处于页面特定位置
content.style.cssText = "margin:" + (clientHeight - content.clientHeight)/2 +"px " +
clientWidth*4/7 + "px " +
(clientHeight - content.clientHeight)/2 + "px;";
// 设置宣传元素区域的外边距,使其在登录内容区域内相对居中
screen.style.cssText = "margin:" + (content.clientHeight - screen.clientHeight)/2 +"px " +
(clientWidth*4/7 - screen.clientWidth)/2 + "px " +
(content.clientHeight - screen.clientHeight)/2 + "px;";
// 通过定时器改变标题颜色,实现颜色动态变化效果
setInterval(function(){
colorNum += middle;
if(colorNum>185){
@ -147,33 +133,29 @@
},30);
}
// 初始化登录界面主要处理tab切换等相关操作
//初始化登录界面
function initLogin(){
var textNum = document.getElementById('TestNum');
var liArr = document.getElementsByTagName('li');
var divArr = document.getElementsByClassName("page")[0].getElementsByClassName("childpage");
// 点击验证码按钮时更新验证码显示的值
var divArr = document.getElementsByClassName("page")[0].getElementsByClassName("childpage");
textNum.onclick = function(){
textNum.value = TestNum();
}
// 遍历tab栏的li元素添加点击事件处理函数
for(var i=0;i<liArr.length;i++){
liArr[i].index = i;
liArr[i].onclick = function(){
for(var i=0;i<liArr.length;i++){
liArr[i].index = i;
liArr[i].onclick = function(){
textNum.value = TestNum();
// 遍历页面中的子页面(登录和注册页面),先隐藏所有页面
for(var j=0;j<divArr.length;j++){
for(var j=0;j<divArr.length;j++){
liArr[j].style.cssText = "background-color:rgba(255, 255, 255, 0.2);";
divArr[j].style.display = "none";
}
// 设置当前点击的tab对应的页面显示并改变其背景色
divArr[j].style.display = "none";
}
liArr[this.index].style.cssText = "background-color:rgba(255, 255, 255, 0);";
divArr[this.index].style.display = "block";
}
}
divArr[this.index].style.display = "block";
}
}
}
// 生成一个随机的验证码字符串(由数字和字母组成)
//更新验证码
function TestNum(){
var testNum = "";
var selectChar = new Array(0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f','g','h','i','j','k','l',
@ -185,12 +167,11 @@
return testNum;
}
// 登录按钮点击时执行的函数,用于验证登录账号和密码信息
//登录账号和密码信息验证
function loginbtn(){
var user_name = $(".login_page").find("#UserName").val();
var user_pwd = $(".login_page").find("#PassWord").val();
var login_error = $(".login_error");
// 检查账号和密码是否为空,为空则显示相应提示
if((user_name == "") || (user_pwd == "")){
login_error.text("账号和密码不能为空");
}
@ -222,7 +203,7 @@
}
}
// 注册按钮点击时执行的函数,用于验证注册账号、密码、邮箱以及验证码等信息
//注册账号和密码逻信息验证
function registerbtn(){
var textNum = document.getElementById('TestNum');
var user_name = $(".register_page").find("#UserName").val();
@ -231,7 +212,6 @@
var register_error = $(".register_error");
var test = $("#Test").val();
var testbtn = $("#TestNum").val();
// 检查账号、密码、邮箱是否为空,为空则显示相应提示并更新验证码
if((user_name == "") || (user_pwd == "") || (user_email == "")){
register_error.text("账号和密码和邮箱不能为空");
textNum.value = TestNum();
@ -265,5 +245,6 @@
}
</script>
<!-- ------------------------------------------------------------------- -->
</body>
</html>
Loading…
Cancel
Save