├── .DS_Store ├── .gitattributes ├── README.md ├── panda-admin ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── panda │ │ │ ├── PandaAdminApplication.java │ │ │ └── web │ │ │ └── controller │ │ │ ├── BaseController.java │ │ │ └── system │ │ │ ├── SysBillController.java │ │ │ ├── SysCinemaController.java │ │ │ ├── SysHallController.java │ │ │ ├── SysMovieCategoryController.java │ │ │ ├── SysMovieController.java │ │ │ ├── SysResourceController.java │ │ │ ├── SysRoleController.java │ │ │ ├── SysSessionController.java │ │ │ └── SysUserController.java │ └── resources │ │ ├── application-druid.yml │ │ ├── application.yml │ │ ├── logback-spring.xml │ │ └── static │ │ └── images │ │ ├── actor │ │ └── 2020 │ │ │ └── 12 │ │ │ └── 15 │ │ │ ├── 0bea348e519b4e19a9f4745275de1550.jpg │ │ │ ├── 15d4d709de5445e3a3a11848b36b270f.jpg │ │ │ ├── 236137fdcec24986bc814b9771ca1610.jpg │ │ │ ├── 24a9618b56ff4df7a74a067d4c512bda.jpg │ │ │ ├── 2cd2bfc44d144b60acbc9d5e4dee8338.jpg │ │ │ ├── 3288ccae34964023983ec6ad880a71bc.jpg │ │ │ ├── 3397f270491049e386178c7464a06876.jpg │ │ │ ├── 38e18649714344e99f7b34bbb3de82e3.jpg │ │ │ ├── 41d2adfd444e4ff1a25452657f017e6b.jpg │ │ │ ├── 41e4a4fb888742d79b04c14b3864674b.jpg │ │ │ ├── 480e75c3a16c4acab09453cf387a66cb.jpg │ │ │ ├── 4b13b299e81a435aa12b81e4892221da.jpg │ │ │ ├── 54668eee2db144d9934b3c35a088cff3.jpg │ │ │ ├── 55136c5750754172b38d7eb74ff236bd.jpg │ │ │ ├── 577678514b424481a23893b69fad082e.jpg │ │ │ ├── 6b6957b25e2a437a80009906e0645896.jpg │ │ │ ├── 77d24e6c1e1d4ff88494298cbe97bf79.jpg │ │ │ ├── 7ad9949c113143d58079ad0e582544f4.jpg │ │ │ ├── 8e527c37e1b04fe5a589b5c06314c9ea.jpg │ │ │ ├── 9ddfdedcb7e24a5391282109dfd49416.jpg │ │ │ ├── a6e207a71f2d4f93b90d909cfbcc5c54.jpg │ │ │ ├── ab3cddcf04f74b84bf3c527fbfb53710.jpg │ │ │ ├── b12b7d473a0b4795a5f46252ea41635f.jpg │ │ │ ├── c39fd63a52cf4949aa9ad0f3ff47f8aa.jpg │ │ │ ├── c97cfde7f9024504bc8b27b91eb1dd90.jpg │ │ │ ├── e6ac22bf74f344bd8d27e266bb21737d.jpg │ │ │ ├── f1cd4a9370b04c5ca38340a90c4db079.jpg │ │ │ ├── fa0718013075446cab59a00f29b8bdfb.jpg │ │ │ └── fd0e1006adb14f39818608ef8ecfb988.jpg │ │ ├── cinema │ │ └── 2020 │ │ │ └── 12 │ │ │ └── 15 │ │ │ ├── 01afb74db476472e913285607d2f0e11.jpg │ │ │ ├── 04e185afd6a8457a9f960240af8cbebe.jpg │ │ │ ├── 123.jpg │ │ │ ├── 1f3f8b869c174c35ba314c5169dc2cf8.jpg │ │ │ ├── 1f5bf7570a6f4a2db9155b39c4346f96.jpg │ │ │ ├── 4bfaf8909ea845139b176ae0c60d152b.jpg │ │ │ ├── 4dad1006d9b24ee8b72115b57949fcf2.jpg │ │ │ ├── 4f18270b91ea47e691d4f2e71321ec89.jpg │ │ │ ├── 5d8a4ae389b44cf3af73587259a47c02.jpg │ │ │ ├── 5e85858b73aa40c2b65be423d09ca71e.jpg │ │ │ ├── 65c44173e32c469dbac7d075b7c49dda.jpg │ │ │ ├── 6e24bb8ca77a4ba29c03fc4b461153e1.jpg │ │ │ ├── 730319251df54095b3d54a908d78534a.jpg │ │ │ ├── 7637f53964374e1294732dd37509648a.jpg │ │ │ ├── a8a9ce5f97fc4e8f94af491981e0098f.jpg │ │ │ ├── c02cb0c58a5e4c469bdb2dea83ef16eb.jpg │ │ │ ├── d81a78634dd94d2d891664a5a1fa8381.jpg │ │ │ ├── de03f508ee8f4c0181254bcf9cc5a2ab.jpg │ │ │ ├── e55fa50224ce42caa0e1b1871663fb79.jpg │ │ │ ├── f0e69a1d126c42be951337251884a8a6.jpg │ │ │ └── f2a709ff33774840930a85fca3cfe331.jpg │ │ ├── movie │ │ └── 2020 │ │ │ └── 12 │ │ │ └── 15 │ │ │ ├── 00733b7ceb284b26ac43fa93f20fd991.jpg │ │ │ ├── 0b5191875a844e27bd52caf7048b354d.jpg │ │ │ ├── 16fabc3258a843f28beccab37041fa80.jpg │ │ │ ├── 190e45b2f62e414aae5f25c54df23c6d.jpg │ │ │ ├── 208998f6cd4e410f85db05631faca4c4.jpg │ │ │ ├── 2886b23c40ba4c57829c8938b10aeedb.jpg │ │ │ ├── 2ba31ac24b334fef80a4555f7cef5298.jpg │ │ │ ├── 2f69dce23efe4db99e189ca4886bed48.jpg │ │ │ ├── 3c856a4e413b4dd89cfd41a0d71faea9.jpg │ │ │ ├── 4425e22bc1264164a2fbdd01d56cd939.jpg │ │ │ ├── 5711f4fa70ec4d53b714af51b2dc1819.jpg │ │ │ ├── 5c6e503dc6154a9ab120256796acba34.jpg │ │ │ ├── 69aec299204e46bcb9174d80e30961fd.jpg │ │ │ ├── 75caecc71ba345a690e1e2c661ea7f3a.jpg │ │ │ ├── 7d886589922f45fbb4b9bfdc20a62a91.jpg │ │ │ ├── 8341c3cdce0840c7b14dc88ce4dc5e0a.jpg │ │ │ ├── 94baa78550e34794823db457c27870a6.jpg │ │ │ ├── 9fc80b23da4847cc8a98c65abb14148f.jpg │ │ │ ├── a0dc7fecccf2483391ee08070cd66832.jpg │ │ │ ├── ad8e89daada24ab9b76b972894fa4418.jpg │ │ │ ├── b410a941952d4612b07f18b0622bc73e.jpg │ │ │ ├── cd079baa53ab4caa8bf7e984ff59b11c.jpg │ │ │ ├── d40ac8629a9b47629f927454a0c345e9.jpg │ │ │ ├── da999ff2914447e38cc854b1294d6c2a.jpg │ │ │ └── e29341a6bf4640f7a6fb69442cade734.jpg │ │ └── user │ │ └── 2020 │ │ └── 12 │ │ └── 15 │ │ ├── 0b4f389d47724e3486247b64aaf4eedb.jpg │ │ ├── 1a36838e0d0b4e9e927c0ee21dc48b15.jpg │ │ ├── 2832ad8931bf4bcdb7c2dc56be794e85.jpg │ │ ├── 2b2756c9a196478ba7f132d4210c3c86.jpg │ │ ├── 4c988c9f1f454064b5a26e2812ff01a3.jpg │ │ ├── 4f1f61dbc5914122ae0d820ea8734a46.jpg │ │ ├── 5765ed23e48a4626b4c8dc2c5d8ff91a.jpg │ │ ├── 59d6862d547840e6bc86336030b72430.jpg │ │ ├── 609b06dfa09540d89971901712d49300.jpg │ │ ├── 7b39d58bfaa64c3f9d4425131ede7cc2.jpg │ │ ├── 82760d557d8c4620b453a7d7c2cd6340.jpg │ │ ├── 831e066fe440467591adfc040699673f.jpg │ │ ├── 96a9cc5884f14a4db2e48ca0d434d73b.jpg │ │ ├── ba755080ab35404abd8284b6842ca77c.jpg │ │ ├── daec8941dad549bc95cf1b26fd796ff1.jpg │ │ └── eaa033dcf58c473d8c0d65d92f14872d.jpg │ └── test │ └── java │ └── com │ └── panda │ └── PandaAdminApplicationTests.java ├── panda-common ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── panda │ └── common │ ├── constant │ ├── HttpStatus.java │ └── MovieRankingList.java │ ├── controller │ └── FileUploadController.java │ ├── exception │ ├── DataNotFoundException.java │ ├── FileNameLengthLimitExceededException.java │ ├── FileSizeLimitExceededException.java │ └── InvalidExtensionException.java │ ├── file │ ├── FileUploadUtils.java │ └── MimeTypeUtils.java │ ├── page │ ├── Page.java │ └── PageBuilder.java │ ├── response │ └── ResponseResult.java │ └── utils │ ├── ApplicationContextUtils.java │ ├── JwtUtil.java │ ├── SaltUtils.java │ ├── ServletUtil.java │ ├── SessionSeatsUtil.java │ └── StringUtil.java ├── panda-framework ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── panda │ └── framework │ ├── config │ ├── ApplicationConfiguration.java │ ├── CrosConfig.java │ ├── QuartzConfig.java │ └── ShiroConfig.java │ ├── exception │ └── GlobalExceptionHandler.java │ ├── shiro │ ├── JwtFilter.java │ ├── JwtToken.java │ └── realms │ │ └── CustomerRealm.java │ └── util │ └── CancelTimeoutBillUtil.java ├── panda-system ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── panda │ │ └── system │ │ ├── domin │ │ ├── LoginUser.java │ │ ├── SysBill.java │ │ ├── SysCinema.java │ │ ├── SysHall.java │ │ ├── SysMovie.java │ │ ├── SysMovieCategory.java │ │ ├── SysMovieToCategory.java │ │ ├── SysResource.java │ │ ├── SysRole.java │ │ ├── SysSession.java │ │ ├── SysUser.java │ │ └── vo │ │ │ ├── SysBillVo.java │ │ │ ├── SysMovieVo.java │ │ │ ├── SysSessionVo.java │ │ │ └── SysUserVo.java │ │ ├── mapper │ │ ├── SysBillMapper.java │ │ ├── SysCinemaMapper.java │ │ ├── SysHallMapper.java │ │ ├── SysMovieCategoryMapper.java │ │ ├── SysMovieMapper.java │ │ ├── SysResourceMapper.java │ │ ├── SysRoleMapper.java │ │ ├── SysSessionMapper.java │ │ └── SysUserMapper.java │ │ └── service │ │ ├── SysBillService.java │ │ ├── SysCinemaService.java │ │ ├── SysHallService.java │ │ ├── SysMovieCategoryService.java │ │ ├── SysMovieService.java │ │ ├── SysResourceService.java │ │ ├── SysRoleService.java │ │ ├── SysSessionService.java │ │ ├── SysUserService.java │ │ └── impl │ │ ├── SysBillServiceImpl.java │ │ ├── SysCinemaServiceImpl.java │ │ ├── SysHallServiceImpl.java │ │ ├── SysMovieCategoryServiceImpl.java │ │ ├── SysMovieServiceImpl.java │ │ ├── SysResourceServiceImpl.java │ │ ├── SysRoleServiceImpl.java │ │ ├── SysSessionServiceImpl.java │ │ └── SysUserServiceImpl.java │ └── resources │ └── mapper │ ├── SysBillMapper.xml │ ├── SysCinemaMapper.xml │ ├── SysHallMapper.xml │ ├── SysMovieCategoryMapper.xml │ ├── SysMovieMapper.xml │ ├── SysResourceMapper.xml │ ├── SysRoleMapper.xml │ ├── SysSessionMapper.xml │ └── SysUserMapper.xml ├── panda-ui ├── .browserslistrc ├── .editorconfig ├── .gitignore ├── babel.config.js ├── package-lock.json ├── package.json ├── public │ ├── favicon.ico │ └── index.html ├── src │ ├── App.vue │ ├── assets │ │ ├── 404images │ │ │ ├── 404.svg │ │ │ ├── astronaut.svg │ │ │ ├── bg_purple.png │ │ │ ├── logo.svg │ │ │ ├── moon.svg │ │ │ └── rocket.svg │ │ ├── css │ │ │ ├── fonts │ │ │ │ ├── iconfont.css │ │ │ │ ├── iconfont.eot │ │ │ │ ├── iconfont.svg │ │ │ │ ├── iconfont.ttf │ │ │ │ └── iconfont.woff │ │ │ └── global.css │ │ ├── js │ │ │ └── permission.js │ │ ├── login-background.jpg │ │ ├── logo.png │ │ └── welcome.jpg │ ├── components │ │ └── global_variable.vue │ ├── element-variables.scss │ ├── main.js │ ├── plugins │ │ ├── axios.js │ │ └── element.js │ ├── router │ │ └── index.js │ ├── store │ │ └── index.js │ └── views │ │ ├── Error404.vue │ │ ├── Home.vue │ │ ├── Login.vue │ │ ├── Welcome.vue │ │ ├── bill │ │ └── BillInfo.vue │ │ ├── cinema │ │ └── CinemaInfo.vue │ │ ├── hall │ │ ├── HallInfo.vue │ │ └── SessionInfo.vue │ │ ├── movie │ │ ├── MovieCategory.vue │ │ └── MovieInfo.vue │ │ ├── role │ │ ├── ResourceInfo.vue │ │ └── RoleInfo.vue │ │ └── user │ │ └── UserInfo.vue └── vue.config.js ├── panda-user ├── .browserslistrc ├── .gitignore ├── babel.config.js ├── package-lock.json ├── package.json ├── public │ ├── favicon.ico │ └── index.html ├── src │ ├── App.vue │ ├── assets │ │ ├── 404images │ │ │ ├── 404.svg │ │ │ ├── astronaut.svg │ │ │ ├── bg_purple.png │ │ │ ├── logo.svg │ │ │ ├── moon.svg │ │ │ └── rocket.svg │ │ ├── bill-invalid.png │ │ ├── carousel1.jpg │ │ ├── carousel2.jpg │ │ ├── carousel3.jpg │ │ ├── carousel4.jpg │ │ ├── css │ │ │ ├── fonts │ │ │ │ ├── iconfont.css │ │ │ │ ├── iconfont.eot │ │ │ │ ├── iconfont.svg │ │ │ │ ├── iconfont.ttf │ │ │ │ └── iconfont.woff │ │ │ └── global.css │ │ ├── finish.png │ │ ├── homeLogo.jpg │ │ ├── login-background.jpg │ │ ├── logo.jpg │ │ ├── money.png │ │ ├── movie-info-background.jpg │ │ ├── register-footer.jpg │ │ ├── register.png │ │ ├── sofa-empty.png │ │ ├── sofa-forbidden.png │ │ ├── sofa-pick.png │ │ └── sofa-unpick.png │ ├── components │ │ ├── global_variable.vue │ │ └── movie │ │ │ └── movie-item.vue │ ├── element-variables.scss │ ├── main.js │ ├── plugins │ │ ├── axios.js │ │ └── element.js │ ├── router │ │ └── index.js │ ├── store │ │ └── index.js │ └── views │ │ ├── .editorconfig │ │ ├── Error404.vue │ │ ├── Login.vue │ │ ├── Register.vue │ │ ├── Welcome.vue │ │ ├── cinema │ │ ├── AboutUs.vue │ │ └── ChooseSession.vue │ │ ├── home │ │ └── Home.vue │ │ ├── movie │ │ ├── Movie.vue │ │ ├── MovieClassics.vue │ │ ├── MovieInfo.vue │ │ ├── MovieOngoing.vue │ │ └── MovieUpcoming.vue │ │ ├── pay │ │ ├── BillDetail.vue │ │ └── ChooseSeat.vue │ │ ├── rankinglist │ │ ├── DomesticBoxOfficeList.vue │ │ ├── ForeignBoxOfficeList.vue │ │ ├── RankingList.vue │ │ └── TotalBoxOfficeList.vue │ │ ├── search │ │ ├── Search.vue │ │ └── SearchMovie.vue │ │ └── user │ │ ├── BillInfo.vue │ │ ├── UserInfo.vue │ │ └── UserMenu.vue └── vue.config.js └── pom.xml /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/.DS_Store -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=java 2 | *.css linguist-language=java 3 | *.html linguist-language=java 4 | *.vue linguist-language=java -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 全目录 2 | 3 | [更多系统、论文,供君选择 ~~>](https://www.yuque.com/wisebit/blog) 4 | # 189.CinemaMovieTicketSalesManagementSystem 5 | 6 |

群: 983063232(大佬群 2TB学习资料,讲解)(入群获取sql文件)

7 | 8 |

189.影院电影售票管理系统

9 | 10 | 11 |

12 | 13 | 14 | 15 | 16 |

17 | 18 | # 简介 19 | 20 | 21 | > 本代码来源于网络,仅供学习参考使用,请入群(983063232)后联系群主索要sql文件! 22 | > 23 | > 提供1.远程部署/2.修改代码/3.设计文档指导/4.框架代码讲解等服务 24 | > 25 | > 26 | > http://localhost:8888/login 27 | > 28 | > admin 123456 29 | > 30 | > http://localhost:8081/login 31 | > 32 | > 11111111 1111111 33 | > 34 | 35 | 36 | # 环境 37 | 38 | - IntelliJ IDEA 2009.3 39 | 40 | - Mysql 5.7.26 41 | 42 | - Tomcat 7.0.73 43 | 44 | - JDK 1.8 45 | 46 | 47 | 48 | 49 | ## 缩略图 50 | 51 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/9593aaae-7a47-4063-82f4-468dd9a364ff.png) 52 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/2a595bcf-5c72-4be6-8acf-1da8a41ad4e9.png) 53 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/e8485391-3721-4b76-a664-0eef75023332.png) 54 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/acbb8139-8868-4458-9cd6-e755661c42d2.png) 55 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/5ba1e9a6-4663-48e4-9b4a-cf88923e78de.png) 56 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/a6061cc0-7358-460f-a4d1-4798bc585a26.png) 57 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/56094c53-310f-4cea-acd7-38bf4beda823.png) 58 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/4b7d1e30-56a0-46d2-a7a5-5a08681ee631.png) 59 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/43ddfc08-f2e8-461e-b398-8b1a277868b7.png) 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /panda-admin/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | panda 7 | com.panda 8 | 0.0.1-SNAPSHOT 9 | 10 | 11 | panda-admin 12 | panda-admin 13 | 后台服务模块,运行后台项目 14 | 15 | 16 | 17 | 18 | org.springframework.boot 19 | spring-boot-devtools 20 | true 21 | 22 | 23 | 24 | 25 | mysql 26 | mysql-connector-java 27 | 28 | 29 | 30 | 31 | com.panda 32 | panda-framework 33 | 34 | 35 | com.panda 36 | panda-common 37 | 0.0.1-SNAPSHOT 38 | compile 39 | 40 | 41 | com.panda 42 | panda-system 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | org.springframework.boot 51 | spring-boot-maven-plugin 52 | 53 | true 54 | 55 | 56 | 57 | 58 | repackage 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /panda-admin/src/main/java/com/panda/PandaAdminApplication.java: -------------------------------------------------------------------------------- 1 | package com.panda; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class PandaAdminApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(PandaAdminApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /panda-admin/src/main/java/com/panda/web/controller/BaseController.java: -------------------------------------------------------------------------------- 1 | package com.panda.web.controller; 2 | 3 | import com.github.pagehelper.PageHelper; 4 | import com.github.pagehelper.PageInfo; 5 | import com.panda.common.page.Page; 6 | import com.panda.common.page.PageBuilder; 7 | import com.panda.common.response.ResponseResult; 8 | 9 | import java.util.List; 10 | 11 | import static com.panda.common.page.PageBuilder.*; 12 | 13 | /** 14 | * 抽取重复功能为基类 15 | */ 16 | public class BaseController { 17 | 18 | /** 19 | * 开启分页 20 | */ 21 | public void startPage() { 22 | Page page = PageBuilder.buildPage(); 23 | Integer pageNum = page.getPageNum(); 24 | Integer pageSize = page.getPageSize(); 25 | if (pageNum != null && pageSize != null) { 26 | PageHelper.startPage(pageNum, pageSize, page.getOrderByColumn()); 27 | } 28 | } 29 | 30 | /** 31 | * 根据修改行数返回响应消息 32 | * @param rows 33 | * @return 34 | */ 35 | public ResponseResult getResult(int rows) { 36 | return rows == 0 ? ResponseResult.error() : ResponseResult.success(); 37 | } 38 | 39 | /** 40 | * 分页响应消息 41 | * @param data 42 | * @return 43 | */ 44 | public ResponseResult getResult(List data) { 45 | PageInfo pageInfo = new PageInfo(data); 46 | ResponseResult responseResult = ResponseResult.success(data); 47 | responseResult.put(PAGE_NUM, pageInfo.getPageNum()); 48 | responseResult.put(PAGE_SIZE, pageInfo.getPageSize()); 49 | responseResult.put(TOTAL, pageInfo.getTotal()); 50 | return responseResult; 51 | } 52 | 53 | /** 54 | * 对象类型响应消息 55 | * @param data 56 | * @return 57 | */ 58 | public ResponseResult getResult(Object data) { 59 | return ResponseResult.success(data); 60 | } 61 | 62 | } 63 | -------------------------------------------------------------------------------- /panda-admin/src/main/java/com/panda/web/controller/system/SysCinemaController.java: -------------------------------------------------------------------------------- 1 | package com.panda.web.controller.system; 2 | 3 | import com.panda.common.response.ResponseResult; 4 | import com.panda.system.domin.SysCinema; 5 | import com.panda.system.domin.SysSession; 6 | import com.panda.system.service.impl.SysCinemaServiceImpl; 7 | import com.panda.system.service.impl.SysSessionServiceImpl; 8 | import com.panda.web.controller.BaseController; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.validation.annotation.Validated; 11 | import org.springframework.web.bind.annotation.*; 12 | 13 | import java.util.HashMap; 14 | import java.util.List; 15 | 16 | 17 | @RestController 18 | public class SysCinemaController extends BaseController { 19 | 20 | @Autowired 21 | private SysCinemaServiceImpl sysCinemaService; 22 | 23 | @Autowired 24 | private SysSessionServiceImpl sysSessionService; 25 | 26 | @GetMapping("/sysCinema") 27 | public ResponseResult findCinema() { 28 | return getResult(sysCinemaService.findCinema()); 29 | } 30 | 31 | @PutMapping("/sysCinema/update") 32 | public ResponseResult updateCinema(@Validated @RequestBody SysCinema sysCinema) { 33 | return getResult(sysCinemaService.updateCinema(sysCinema)); 34 | } 35 | 36 | @GetMapping(value = {"/sysCinema/find/{cinemaId}/{movieId}", "/sysCinema/find/{cinemaId}"}) 37 | public ResponseResult findCinemaById(@PathVariable Long cinemaId, @PathVariable(required = false) Long movieId) { 38 | SysCinema cinema = sysCinemaService.findCinemaById(cinemaId); 39 | if (movieId == null || movieId == 0) { 40 | movieId = cinema.getSysMovieList().size() > 0 ? cinema.getSysMovieList().get(0).getMovieId() : 0; 41 | } 42 | List sessions = null; 43 | if (movieId != null && movieId != 0) { 44 | sessions = sysSessionService.findSessionByMovieId(movieId); 45 | } 46 | 47 | HashMap response = new HashMap<>(); 48 | response.put("cinema", cinema); 49 | response.put("sessions", sessions); 50 | return getResult(response); 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /panda-admin/src/main/java/com/panda/web/controller/system/SysHallController.java: -------------------------------------------------------------------------------- 1 | package com.panda.web.controller.system; 2 | 3 | import com.panda.common.response.ResponseResult; 4 | import com.panda.system.domin.SysHall; 5 | import com.panda.system.service.impl.SysHallServiceImpl; 6 | import com.panda.web.controller.BaseController; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.validation.annotation.Validated; 9 | import org.springframework.web.bind.annotation.*; 10 | 11 | @RestController 12 | public class SysHallController extends BaseController { 13 | 14 | @Autowired 15 | private SysHallServiceImpl sysHallService; 16 | 17 | @GetMapping("/sysHall") 18 | public ResponseResult findAllHalls(SysHall sysHall) { 19 | startPage(); 20 | return getResult(sysHallService.findAllHalls(sysHall)); 21 | } 22 | 23 | @GetMapping("/sysHall/{hallId}") 24 | public ResponseResult findHallById(@PathVariable Long hallId) { 25 | SysHall sysHall = new SysHall(); 26 | sysHall.setHallId(hallId); 27 | return getResult(sysHallService.findHallById(sysHall)); 28 | } 29 | 30 | @PostMapping("/sysHall") 31 | public ResponseResult addHall(@Validated @RequestBody SysHall sysHall) { 32 | return getResult(sysHallService.addHall(sysHall)); 33 | } 34 | 35 | @PutMapping("/sysHall") 36 | public ResponseResult updateHall(@Validated @RequestBody SysHall sysHall) { 37 | int rows = sysHallService.updateHall(sysHall); 38 | return getResult(rows); 39 | } 40 | 41 | @PostMapping("/sysHall/delete") 42 | public ResponseResult deleteHall(@RequestBody SysHall[] sysHalls) { 43 | return getResult(sysHallService.deleteHall(sysHalls)); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /panda-admin/src/main/java/com/panda/web/controller/system/SysMovieCategoryController.java: -------------------------------------------------------------------------------- 1 | package com.panda.web.controller.system; 2 | 3 | import com.panda.common.response.ResponseResult; 4 | import com.panda.system.domin.SysMovieCategory; 5 | import com.panda.system.domin.SysMovieToCategory; 6 | import com.panda.system.service.impl.SysMovieCategoryServiceImpl; 7 | import com.panda.web.controller.BaseController; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.validation.annotation.Validated; 10 | import org.springframework.web.bind.annotation.*; 11 | 12 | import java.util.List; 13 | 14 | 15 | @RestController 16 | public class SysMovieCategoryController extends BaseController { 17 | 18 | @Autowired 19 | private SysMovieCategoryServiceImpl sysMovieCategoryService; 20 | 21 | @GetMapping("/sysMovieCategory/find") 22 | public ResponseResult findAllCategorys() { 23 | startPage(); 24 | List data = sysMovieCategoryService.findAllCategorys(); 25 | return getResult(data); 26 | } 27 | 28 | @GetMapping("/sysMovieCategory/{id}") 29 | public ResponseResult findCategoryById(@PathVariable Long id) { 30 | return getResult(sysMovieCategoryService.findCategoryById(id)); 31 | } 32 | 33 | @PostMapping("/sysMovieCategory") 34 | public ResponseResult addCategory(@Validated @RequestBody SysMovieCategory sysMovieCategory) { 35 | return getResult(sysMovieCategoryService.addCategory(sysMovieCategory)); 36 | } 37 | 38 | 39 | @PutMapping("/sysMovieCategory") 40 | public ResponseResult updateCategory(@Validated @RequestBody SysMovieCategory sysMovieCategory) { 41 | return getResult(sysMovieCategoryService.updateCategory(sysMovieCategory)); 42 | } 43 | 44 | @DeleteMapping("/sysMovieCategory/{ids}") 45 | public ResponseResult deleteCategory(@PathVariable Long[] ids) { 46 | return getResult(sysMovieCategoryService.deleteCategory(ids)); 47 | } 48 | 49 | @PostMapping("/sysMovieToCategory/{movieId}/{movieCategoryId}") 50 | public ResponseResult addMovieToCategory(@PathVariable Long movieId, @PathVariable Long movieCategoryId) { 51 | return getResult(sysMovieCategoryService.addMovieToCategory(new SysMovieToCategory(movieId, movieCategoryId))); 52 | } 53 | 54 | @DeleteMapping("/sysMovieToCategory/{movieId}/{movieCategoryId}") 55 | public ResponseResult deleteMovieToCategory(@PathVariable Long movieId, @PathVariable Long movieCategoryId) { 56 | return getResult(sysMovieCategoryService.deleteMovieToCategory(new SysMovieToCategory(movieId, movieCategoryId))); 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /panda-admin/src/main/java/com/panda/web/controller/system/SysMovieController.java: -------------------------------------------------------------------------------- 1 | package com.panda.web.controller.system; 2 | 3 | import com.panda.common.constant.MovieRankingList; 4 | import com.panda.common.response.ResponseResult; 5 | import com.panda.system.domin.SysMovie; 6 | import com.panda.system.domin.vo.SysMovieVo; 7 | import com.panda.system.service.impl.SysMovieServiceImpl; 8 | import com.panda.web.controller.BaseController; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.validation.annotation.Validated; 11 | import org.springframework.web.bind.annotation.*; 12 | 13 | import java.lang.reflect.InvocationTargetException; 14 | import java.lang.reflect.Method; 15 | import java.util.List; 16 | 17 | 18 | @RestController 19 | public class SysMovieController extends BaseController { 20 | 21 | @Autowired 22 | private SysMovieServiceImpl sysMovieService; 23 | 24 | @GetMapping("/sysMovie/find") 25 | public ResponseResult findAllMovies(SysMovieVo sysMovieVo) { 26 | startPage(); 27 | List data = sysMovieService.findAllMovies(sysMovieVo); 28 | return getResult(data); 29 | } 30 | 31 | @GetMapping("/sysMovie/find/{id}") 32 | public ResponseResult findMovieById(@PathVariable Long id) { 33 | return getResult(sysMovieService.findMovieById(id)); 34 | } 35 | 36 | @PostMapping("/sysMovie") 37 | public ResponseResult addMovie(@Validated @RequestBody SysMovie sysMovie) { 38 | return getResult(sysMovieService.addMovie(sysMovie)); 39 | } 40 | 41 | @PutMapping("/sysMovie") 42 | public ResponseResult updateMovie(@Validated @RequestBody SysMovie sysMovie) { 43 | return getResult(sysMovieService.updateMovie(sysMovie)); 44 | } 45 | 46 | @DeleteMapping("/sysMovie/{ids}") 47 | public ResponseResult deleteMovie(@PathVariable Long[] ids) { 48 | return getResult(sysMovieService.deleteMovie(ids)); 49 | } 50 | 51 | @GetMapping("/sysMovie/find/rankingList/{listId}") 52 | public ResponseResult findRankingList(@PathVariable Integer listId) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { 53 | if (listId <= 0 || listId > 4) { 54 | //暂时只支持4种榜单 55 | return ResponseResult.error("抱歉,暂时只支持3种榜单,id为[1,3]"); 56 | } 57 | Method getList = sysMovieService.getClass().getMethod(MovieRankingList.listNames[listId - 1]); 58 | startPage(); 59 | List data = (List) getList.invoke(sysMovieService); 60 | return getResult(data); 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /panda-admin/src/main/java/com/panda/web/controller/system/SysResourceController.java: -------------------------------------------------------------------------------- 1 | package com.panda.web.controller.system; 2 | 3 | import com.panda.common.response.ResponseResult; 4 | import com.panda.system.domin.SysResource; 5 | import com.panda.system.service.impl.SysResourceServiceImpl; 6 | import com.panda.web.controller.BaseController; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.validation.annotation.Validated; 9 | import org.springframework.web.bind.annotation.*; 10 | 11 | import java.util.List; 12 | 13 | @RestController 14 | public class SysResourceController extends BaseController { 15 | 16 | @Autowired 17 | SysResourceServiceImpl sysResourceService; 18 | 19 | @GetMapping("/sysResource") 20 | public ResponseResult findAllResources() { 21 | startPage(); 22 | List data = sysResourceService.findAllResources(); 23 | return getResult(data); 24 | } 25 | 26 | @GetMapping("/sysResource/children") 27 | public ResponseResult findWithChildren() { 28 | return getResult((Object) sysResourceService.findWithChildren()); 29 | } 30 | 31 | @GetMapping("/sysResource/{id}") 32 | public ResponseResult findResourceById(@PathVariable Long id) { 33 | return getResult(sysResourceService.findResourceById(id)); 34 | } 35 | 36 | @GetMapping("/sysResource/tree") 37 | public ResponseResult findAllWithAllChildren() { 38 | return getResult(sysResourceService.findAllWithAllChildren()); 39 | } 40 | 41 | @PostMapping("/sysResource") 42 | public ResponseResult addResource(@Validated @RequestBody SysResource sysResource) { 43 | return getResult(sysResourceService.addResource(sysResource)); 44 | } 45 | 46 | @PutMapping("/sysResource") 47 | public ResponseResult updateResource(@Validated @RequestBody SysResource sysResource) { 48 | return getResult(sysResourceService.updateResource(sysResource)); 49 | } 50 | 51 | @DeleteMapping("/sysResource/{ids}") 52 | public ResponseResult deleteResource(@PathVariable Long[] ids) { 53 | return getResult(sysResourceService.deleteResource(ids)); 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /panda-admin/src/main/java/com/panda/web/controller/system/SysRoleController.java: -------------------------------------------------------------------------------- 1 | package com.panda.web.controller.system; 2 | 3 | import com.panda.common.response.ResponseResult; 4 | import com.panda.system.domin.SysRole; 5 | import com.panda.system.service.impl.SysRoleServiceImpl; 6 | import com.panda.web.controller.BaseController; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.validation.annotation.Validated; 9 | import org.springframework.web.bind.annotation.*; 10 | 11 | import java.util.List; 12 | 13 | @RestController 14 | public class SysRoleController extends BaseController { 15 | 16 | @Autowired 17 | SysRoleServiceImpl sysRoleService; 18 | 19 | @GetMapping("/sysRole") 20 | public ResponseResult findAllRoles() { 21 | startPage(); 22 | List data = sysRoleService.findAllRoles(); 23 | return getResult(data); 24 | } 25 | 26 | @GetMapping("/sysRole/{id}") 27 | public ResponseResult findRoleById(@PathVariable Long id) { 28 | return getResult(sysRoleService.findRoleById(id)); 29 | } 30 | 31 | @PostMapping("/sysRole") 32 | public ResponseResult addRole(@Validated @RequestBody SysRole sysRole) { 33 | return getResult(sysRoleService.addRole(sysRole)); 34 | } 35 | 36 | @PutMapping("/sysRole") 37 | public ResponseResult updateRole(@Validated @RequestBody SysRole sysRole) { 38 | return getResult(sysRoleService.updateRole(sysRole)); 39 | } 40 | 41 | @DeleteMapping("/sysRole/{ids}") 42 | public ResponseResult deleteRole(@PathVariable Long[] ids) { 43 | return getResult(sysRoleService.deleteRole(ids)); 44 | } 45 | 46 | /** 47 | * 给指定 id 的角色分配权限,包括增加或者删除权限 48 | * @param roleId 49 | * @param keys 50 | * @return 51 | */ 52 | @PostMapping("/sysRole/{roleId}") 53 | public ResponseResult allotRight(@PathVariable Long roleId, @RequestBody Long[] keys) { 54 | return getResult(sysRoleService.allotRight(roleId, keys)); 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /panda-admin/src/main/java/com/panda/web/controller/system/SysSessionController.java: -------------------------------------------------------------------------------- 1 | package com.panda.web.controller.system; 2 | 3 | import com.panda.common.response.ResponseResult; 4 | import com.panda.common.utils.ApplicationContextUtils; 5 | import com.panda.system.domin.SysSession; 6 | import com.panda.system.domin.vo.SysSessionVo; 7 | import com.panda.system.service.impl.SysSessionServiceImpl; 8 | import com.panda.web.controller.BaseController; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.web.bind.annotation.*; 11 | 12 | import java.util.List; 13 | 14 | 15 | @RestController 16 | public class SysSessionController extends BaseController { 17 | 18 | @Autowired 19 | private SysSessionServiceImpl sysSessionService; 20 | 21 | /** 22 | * 根据vo中的条件查询所有场次,如果在前台购票部分注意设置pageSize=100或者其他大一些的数 23 | * 24 | * @param sysSessionVo 25 | * @return 26 | */ 27 | @GetMapping("/sysSession") 28 | public ResponseResult findByVo(SysSessionVo sysSessionVo) { 29 | startPage(); 30 | List list = sysSessionService.findByVo(sysSessionVo); 31 | return getResult(list); 32 | } 33 | 34 | @GetMapping("/sysSession/find/{id}") 35 | public ResponseResult findSessionById(@PathVariable Long id) { 36 | // 取消所有超时订单并释放占座资源 37 | ApplicationContextUtils.getBean("cancelTimeoutBill"); 38 | return getResult(sysSessionService.findSessionById(id)); 39 | } 40 | 41 | 42 | @GetMapping("/sysSession/isAbleEdit") 43 | public ResponseResult findSessionByMovieIdOrHallId(SysSession sysSession) { 44 | return getResult(sysSessionService.findSessionByMovieIdOrHallId(sysSession)); 45 | } 46 | 47 | @PostMapping("/sysSession") 48 | public ResponseResult addSession(@RequestBody SysSession sysSession) { 49 | return getResult(sysSessionService.addSession(sysSession)); 50 | } 51 | 52 | @PutMapping("/sysSession") 53 | public ResponseResult updateSession(@RequestBody SysSession sysSession) { 54 | return getResult(sysSessionService.updateSession(sysSession)); 55 | } 56 | 57 | @DeleteMapping("/sysSession/{ids}") 58 | public ResponseResult deleteSession(@PathVariable Long[] ids) { 59 | return getResult(sysSessionService.deleteSession(ids)); 60 | } 61 | 62 | } 63 | -------------------------------------------------------------------------------- /panda-admin/src/main/java/com/panda/web/controller/system/SysUserController.java: -------------------------------------------------------------------------------- 1 | package com.panda.web.controller.system; 2 | 3 | import com.panda.common.response.ResponseResult; 4 | import com.panda.system.domin.SysUser; 5 | import com.panda.system.domin.vo.SysUserVo; 6 | import com.panda.system.service.impl.SysUserServiceImpl; 7 | import com.panda.web.controller.BaseController; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.validation.annotation.Validated; 10 | import org.springframework.web.bind.annotation.*; 11 | 12 | import java.util.List; 13 | 14 | @RestController 15 | public class SysUserController extends BaseController { 16 | @Autowired 17 | private SysUserServiceImpl sysUserService; 18 | 19 | @GetMapping("/sysUser") 20 | public ResponseResult findAllUsers(SysUser sysUser) { 21 | startPage(); 22 | List data = sysUserService.findAllUsers(sysUser); 23 | return getResult(data); 24 | } 25 | 26 | @GetMapping("/sysUser/{id}") 27 | public ResponseResult findUserById(@PathVariable Long id) { 28 | return getResult(sysUserService.findUserById(id)); 29 | } 30 | 31 | /** 32 | * 添加用户请求,注册也在这里 33 | * @param sysUser 34 | * @return 35 | */ 36 | @PostMapping("/sysUser") 37 | public ResponseResult addUser(@Validated @RequestBody SysUser sysUser) { 38 | return getResult(sysUserService.addUser(sysUser)); 39 | } 40 | 41 | @PutMapping("/sysUser") 42 | public ResponseResult updateUser(@Validated @RequestBody SysUser sysUser) { 43 | return getResult(sysUserService.updateUser(sysUser)); 44 | } 45 | 46 | @DeleteMapping("/sysUser/{ids}") 47 | public ResponseResult deleteUser(@PathVariable Long[] ids) { 48 | return getResult(sysUserService.deleteUser(ids)); 49 | } 50 | 51 | /** 52 | * 用户登录请求 53 | * 54 | * @param sysUserVo 55 | * @return 56 | */ 57 | @RequestMapping("/sysUser/login") 58 | public ResponseResult login(@RequestBody SysUserVo sysUserVo) { 59 | return getResult(sysUserService.login(sysUserVo)); 60 | } 61 | 62 | /** 63 | * 用户注册请求 64 | * 65 | * @param sysUser 66 | * @return 67 | */ 68 | @PostMapping("/sysUser/register") 69 | public ResponseResult register(@Validated @RequestBody SysUser sysUser) { 70 | // 注册只接收部分参数值,重新建立一个实例对象只接受注册接受的参数 71 | SysUser registerUserInfo = new SysUser(); 72 | registerUserInfo.setUserName(sysUser.getUserName()); 73 | registerUserInfo.setPassword(sysUser.getPassword()); 74 | registerUserInfo.setSex(sysUser.getSex()); 75 | registerUserInfo.setPhoneNumber(sysUser.getPhoneNumber()); 76 | return getResult(sysUserService.addUser(registerUserInfo)); 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /panda-admin/src/main/resources/application-druid.yml: -------------------------------------------------------------------------------- 1 | # 配置数据源 2 | spring: 3 | datasource: 4 | driver-class-name: com.mysql.cj.jdbc.Driver 5 | type: com.alibaba.druid.pool.DruidDataSource 6 | druid: 7 | url: jdbc:mysql://localhost:3306/graduation_movie?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 8 | username: root 9 | password: 123456 10 | 11 | # 初始连接数 12 | initialSize: 5 13 | # 最小连接池数量 14 | minIdle: 10 15 | # 最大连接池数量 16 | maxActive: 20 17 | # 配置获取连接等待超时的时间 18 | maxWait: 60000 19 | # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 20 | timeBetweenEvictionRunsMillis: 60000 21 | # 配置一个连接在池中最小生存的时间,单位是毫秒 22 | minEvictableIdleTimeMillis: 300000 23 | # 配置一个连接在池中最大生存的时间,单位是毫秒 24 | maxEvictableIdleTimeMillis: 900000 25 | # 配置检测连接是否有效 26 | validationQuery: SELECT 1 FROM DUAL 27 | testWhileIdle: true 28 | testOnBorrow: false 29 | testOnReturn: false -------------------------------------------------------------------------------- /panda-admin/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | # Spring 配置 2 | spring: 3 | # 数据源配置文件 4 | profiles: 5 | active: druid 6 | 7 | # 开发工具,配置热部署 8 | devtools: 9 | restart: 10 | enabled: true #热部署 11 | freemarker: 12 | cache: false #页面不开启缓存,修改即生效 13 | 14 | # jackson日期格式配置 15 | jackson: 16 | date-format: yyyy-MM-dd HH:mm:ss 17 | time-zone: GMT+8 18 | 19 | # mvc日期格式配置 20 | mvc: 21 | format: 22 | date: yyyy-MM-dd 23 | date-time: yyyy-MM-dd HH:mm:ss 24 | 25 | # 文件上传大小限制 26 | servlet: 27 | multipart: 28 | enabled: true 29 | max-file-size: 50MB 30 | max-request-size: 50MB 31 | 32 | # Mybatis 配置 33 | mybatis: 34 | type-aliases-package: com.panda.**.domin #指定封装到实体类的包,省去书写全类名 35 | mapper-locations: classpath*:mapper/**/*Mapper.xml #mapper配置文件的位置 36 | configuration: 37 | map-underscore-to-camel-case: true #配置开启驼峰式命名 38 | 39 | # logging 日志配置 40 | logging: 41 | level: 42 | com.panda: trace 43 | org.springframework: warn 44 | 45 | # pagehelper 分页插件配置 46 | pagehelper: 47 | helperDialect: mysql 48 | reasonable: true 49 | supportMethodsArguments: true 50 | params: count=countSql 51 | 52 | server: 53 | port: 8181 54 | -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/0bea348e519b4e19a9f4745275de1550.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/0bea348e519b4e19a9f4745275de1550.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/15d4d709de5445e3a3a11848b36b270f.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/15d4d709de5445e3a3a11848b36b270f.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/236137fdcec24986bc814b9771ca1610.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/236137fdcec24986bc814b9771ca1610.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/24a9618b56ff4df7a74a067d4c512bda.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/24a9618b56ff4df7a74a067d4c512bda.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/2cd2bfc44d144b60acbc9d5e4dee8338.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/2cd2bfc44d144b60acbc9d5e4dee8338.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/3288ccae34964023983ec6ad880a71bc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/3288ccae34964023983ec6ad880a71bc.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/3397f270491049e386178c7464a06876.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/3397f270491049e386178c7464a06876.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/38e18649714344e99f7b34bbb3de82e3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/38e18649714344e99f7b34bbb3de82e3.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/41d2adfd444e4ff1a25452657f017e6b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/41d2adfd444e4ff1a25452657f017e6b.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/41e4a4fb888742d79b04c14b3864674b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/41e4a4fb888742d79b04c14b3864674b.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/480e75c3a16c4acab09453cf387a66cb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/480e75c3a16c4acab09453cf387a66cb.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/4b13b299e81a435aa12b81e4892221da.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/4b13b299e81a435aa12b81e4892221da.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/54668eee2db144d9934b3c35a088cff3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/54668eee2db144d9934b3c35a088cff3.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/55136c5750754172b38d7eb74ff236bd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/55136c5750754172b38d7eb74ff236bd.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/577678514b424481a23893b69fad082e.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/577678514b424481a23893b69fad082e.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/6b6957b25e2a437a80009906e0645896.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/6b6957b25e2a437a80009906e0645896.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/77d24e6c1e1d4ff88494298cbe97bf79.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/77d24e6c1e1d4ff88494298cbe97bf79.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/7ad9949c113143d58079ad0e582544f4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/7ad9949c113143d58079ad0e582544f4.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/8e527c37e1b04fe5a589b5c06314c9ea.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/8e527c37e1b04fe5a589b5c06314c9ea.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/9ddfdedcb7e24a5391282109dfd49416.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/9ddfdedcb7e24a5391282109dfd49416.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/a6e207a71f2d4f93b90d909cfbcc5c54.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/a6e207a71f2d4f93b90d909cfbcc5c54.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/ab3cddcf04f74b84bf3c527fbfb53710.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/ab3cddcf04f74b84bf3c527fbfb53710.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/b12b7d473a0b4795a5f46252ea41635f.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/b12b7d473a0b4795a5f46252ea41635f.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/c39fd63a52cf4949aa9ad0f3ff47f8aa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/c39fd63a52cf4949aa9ad0f3ff47f8aa.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/c97cfde7f9024504bc8b27b91eb1dd90.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/c97cfde7f9024504bc8b27b91eb1dd90.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/e6ac22bf74f344bd8d27e266bb21737d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/e6ac22bf74f344bd8d27e266bb21737d.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/f1cd4a9370b04c5ca38340a90c4db079.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/f1cd4a9370b04c5ca38340a90c4db079.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/fa0718013075446cab59a00f29b8bdfb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/fa0718013075446cab59a00f29b8bdfb.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/actor/2020/12/15/fd0e1006adb14f39818608ef8ecfb988.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/actor/2020/12/15/fd0e1006adb14f39818608ef8ecfb988.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/01afb74db476472e913285607d2f0e11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/01afb74db476472e913285607d2f0e11.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/04e185afd6a8457a9f960240af8cbebe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/04e185afd6a8457a9f960240af8cbebe.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/123.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/123.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/1f3f8b869c174c35ba314c5169dc2cf8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/1f3f8b869c174c35ba314c5169dc2cf8.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/1f5bf7570a6f4a2db9155b39c4346f96.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/1f5bf7570a6f4a2db9155b39c4346f96.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/4bfaf8909ea845139b176ae0c60d152b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/4bfaf8909ea845139b176ae0c60d152b.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/4dad1006d9b24ee8b72115b57949fcf2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/4dad1006d9b24ee8b72115b57949fcf2.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/4f18270b91ea47e691d4f2e71321ec89.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/4f18270b91ea47e691d4f2e71321ec89.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/5d8a4ae389b44cf3af73587259a47c02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/5d8a4ae389b44cf3af73587259a47c02.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/5e85858b73aa40c2b65be423d09ca71e.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/5e85858b73aa40c2b65be423d09ca71e.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/65c44173e32c469dbac7d075b7c49dda.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/65c44173e32c469dbac7d075b7c49dda.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/6e24bb8ca77a4ba29c03fc4b461153e1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/6e24bb8ca77a4ba29c03fc4b461153e1.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/730319251df54095b3d54a908d78534a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/730319251df54095b3d54a908d78534a.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/7637f53964374e1294732dd37509648a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/7637f53964374e1294732dd37509648a.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/a8a9ce5f97fc4e8f94af491981e0098f.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/a8a9ce5f97fc4e8f94af491981e0098f.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/c02cb0c58a5e4c469bdb2dea83ef16eb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/c02cb0c58a5e4c469bdb2dea83ef16eb.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/d81a78634dd94d2d891664a5a1fa8381.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/d81a78634dd94d2d891664a5a1fa8381.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/de03f508ee8f4c0181254bcf9cc5a2ab.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/de03f508ee8f4c0181254bcf9cc5a2ab.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/e55fa50224ce42caa0e1b1871663fb79.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/e55fa50224ce42caa0e1b1871663fb79.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/f0e69a1d126c42be951337251884a8a6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/f0e69a1d126c42be951337251884a8a6.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/cinema/2020/12/15/f2a709ff33774840930a85fca3cfe331.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/cinema/2020/12/15/f2a709ff33774840930a85fca3cfe331.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/00733b7ceb284b26ac43fa93f20fd991.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/00733b7ceb284b26ac43fa93f20fd991.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/0b5191875a844e27bd52caf7048b354d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/0b5191875a844e27bd52caf7048b354d.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/16fabc3258a843f28beccab37041fa80.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/16fabc3258a843f28beccab37041fa80.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/190e45b2f62e414aae5f25c54df23c6d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/190e45b2f62e414aae5f25c54df23c6d.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/208998f6cd4e410f85db05631faca4c4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/208998f6cd4e410f85db05631faca4c4.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/2886b23c40ba4c57829c8938b10aeedb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/2886b23c40ba4c57829c8938b10aeedb.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/2ba31ac24b334fef80a4555f7cef5298.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/2ba31ac24b334fef80a4555f7cef5298.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/2f69dce23efe4db99e189ca4886bed48.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/2f69dce23efe4db99e189ca4886bed48.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/3c856a4e413b4dd89cfd41a0d71faea9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/3c856a4e413b4dd89cfd41a0d71faea9.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/4425e22bc1264164a2fbdd01d56cd939.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/4425e22bc1264164a2fbdd01d56cd939.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/5711f4fa70ec4d53b714af51b2dc1819.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/5711f4fa70ec4d53b714af51b2dc1819.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/5c6e503dc6154a9ab120256796acba34.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/5c6e503dc6154a9ab120256796acba34.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/69aec299204e46bcb9174d80e30961fd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/69aec299204e46bcb9174d80e30961fd.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/75caecc71ba345a690e1e2c661ea7f3a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/75caecc71ba345a690e1e2c661ea7f3a.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/7d886589922f45fbb4b9bfdc20a62a91.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/7d886589922f45fbb4b9bfdc20a62a91.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/8341c3cdce0840c7b14dc88ce4dc5e0a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/8341c3cdce0840c7b14dc88ce4dc5e0a.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/94baa78550e34794823db457c27870a6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/94baa78550e34794823db457c27870a6.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/9fc80b23da4847cc8a98c65abb14148f.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/9fc80b23da4847cc8a98c65abb14148f.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/a0dc7fecccf2483391ee08070cd66832.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/a0dc7fecccf2483391ee08070cd66832.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/ad8e89daada24ab9b76b972894fa4418.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/ad8e89daada24ab9b76b972894fa4418.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/b410a941952d4612b07f18b0622bc73e.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/b410a941952d4612b07f18b0622bc73e.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/cd079baa53ab4caa8bf7e984ff59b11c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/cd079baa53ab4caa8bf7e984ff59b11c.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/d40ac8629a9b47629f927454a0c345e9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/d40ac8629a9b47629f927454a0c345e9.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/da999ff2914447e38cc854b1294d6c2a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/da999ff2914447e38cc854b1294d6c2a.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/movie/2020/12/15/e29341a6bf4640f7a6fb69442cade734.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/movie/2020/12/15/e29341a6bf4640f7a6fb69442cade734.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/0b4f389d47724e3486247b64aaf4eedb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/0b4f389d47724e3486247b64aaf4eedb.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/1a36838e0d0b4e9e927c0ee21dc48b15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/1a36838e0d0b4e9e927c0ee21dc48b15.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/2832ad8931bf4bcdb7c2dc56be794e85.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/2832ad8931bf4bcdb7c2dc56be794e85.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/2b2756c9a196478ba7f132d4210c3c86.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/2b2756c9a196478ba7f132d4210c3c86.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/4c988c9f1f454064b5a26e2812ff01a3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/4c988c9f1f454064b5a26e2812ff01a3.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/4f1f61dbc5914122ae0d820ea8734a46.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/4f1f61dbc5914122ae0d820ea8734a46.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/5765ed23e48a4626b4c8dc2c5d8ff91a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/5765ed23e48a4626b4c8dc2c5d8ff91a.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/59d6862d547840e6bc86336030b72430.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/59d6862d547840e6bc86336030b72430.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/609b06dfa09540d89971901712d49300.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/609b06dfa09540d89971901712d49300.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/7b39d58bfaa64c3f9d4425131ede7cc2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/7b39d58bfaa64c3f9d4425131ede7cc2.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/82760d557d8c4620b453a7d7c2cd6340.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/82760d557d8c4620b453a7d7c2cd6340.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/831e066fe440467591adfc040699673f.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/831e066fe440467591adfc040699673f.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/96a9cc5884f14a4db2e48ca0d434d73b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/96a9cc5884f14a4db2e48ca0d434d73b.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/ba755080ab35404abd8284b6842ca77c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/ba755080ab35404abd8284b6842ca77c.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/daec8941dad549bc95cf1b26fd796ff1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/daec8941dad549bc95cf1b26fd796ff1.jpg -------------------------------------------------------------------------------- /panda-admin/src/main/resources/static/images/user/2020/12/15/eaa033dcf58c473d8c0d65d92f14872d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-admin/src/main/resources/static/images/user/2020/12/15/eaa033dcf58c473d8c0d65d92f14872d.jpg -------------------------------------------------------------------------------- /panda-admin/src/test/java/com/panda/PandaAdminApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.panda; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.boot.test.context.SpringBootTest; 6 | 7 | import javax.sql.DataSource; 8 | import java.sql.SQLException; 9 | 10 | @SpringBootTest 11 | class PandaAdminApplicationTests { 12 | 13 | @Autowired 14 | DataSource dataSource; 15 | 16 | @Test 17 | void contextLoads() throws SQLException { 18 | System.out.println(dataSource.getClass()); 19 | System.out.println(dataSource.getConnection()); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/constant/HttpStatus.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.constant; 2 | 3 | /** 4 | * 定义常量记录Http状态码 5 | */ 6 | public class HttpStatus { 7 | /** 8 | * 成功 9 | */ 10 | public static final int SUCCESS = 200; 11 | 12 | public static final int BAD_REQUEST = 400; 13 | 14 | /** 15 | * 访问受限,授权过期 16 | */ 17 | public static final int FORBIDDEN = 403; 18 | 19 | /** 20 | * 资源,服务未找到 21 | */ 22 | public static final int NOT_FOUND = 404; 23 | 24 | /** 25 | * 系统内部错误 26 | */ 27 | public static final int ERROR = 500; 28 | } 29 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/constant/MovieRankingList.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.constant; 2 | 3 | 4 | public class MovieRankingList { 5 | 6 | public static final String[] listNames = new String[3]; 7 | 8 | static { 9 | listNames[0] = "totalBoxOfficeList"; 10 | listNames[1] = "domesticBoxOfficeList"; 11 | listNames[2] = "foreignBoxOfficeList"; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/exception/DataNotFoundException.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.exception; 2 | 3 | public class DataNotFoundException extends RuntimeException { 4 | 5 | static final long serialVersionUID = -7034897190745456227L; 6 | 7 | public DataNotFoundException() { 8 | super(); 9 | } 10 | 11 | public DataNotFoundException(String message) { 12 | super(message); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/exception/FileNameLengthLimitExceededException.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.exception; 2 | 3 | /** 4 | * 文件名字长度超过限制异常,用于文件校验 5 | */ 6 | public class FileNameLengthLimitExceededException extends RuntimeException { 7 | 8 | private static final long serialVersionUID = 1L; 9 | 10 | public FileNameLengthLimitExceededException() { 11 | } 12 | 13 | public FileNameLengthLimitExceededException(String message) { 14 | super(message); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/exception/FileSizeLimitExceededException.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.exception; 2 | 3 | /** 4 | * 文件大小超过限制异常,用于文件校验 5 | */ 6 | public class FileSizeLimitExceededException extends RuntimeException { 7 | 8 | private static final long serialVersionUID = 1L; 9 | 10 | public FileSizeLimitExceededException() { 11 | } 12 | 13 | public FileSizeLimitExceededException(String message) { 14 | super(message); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/exception/InvalidExtensionException.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.exception; 2 | 3 | /** 4 | * 文件后缀无效异常,用于文件校验 5 | */ 6 | public class InvalidExtensionException extends RuntimeException { 7 | 8 | private static final long serialVersionUID = 1L; 9 | 10 | public InvalidExtensionException() { 11 | } 12 | 13 | public InvalidExtensionException(String message) { 14 | super(message); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/file/MimeTypeUtils.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.file; 2 | 3 | /** 4 | * 媒体类型工具类 5 | */ 6 | public class MimeTypeUtils { 7 | 8 | public static final String IMAGE_PNG = "image/png"; 9 | 10 | public static final String IMAGE_JPG = "image/jpg"; 11 | 12 | public static final String IMAGE_JPEG = "image/jpeg"; 13 | 14 | public static final String IMAGE_BMP = "image/bmp"; 15 | 16 | public static final String IMAGE_GIF = "image/gif"; 17 | 18 | public static final String[] IMAGE_EXTENSION = {"bmp", "gif", "jpg", "jpeg", "png"}; 19 | 20 | public static final String[] DEFAULT_ALLOWED_EXTENSION = {"bmp", "gif", "jpg", "jpeg", "png"}; 21 | 22 | public static String getExtension(String prefix) { 23 | switch (prefix) { 24 | case IMAGE_PNG: 25 | return "png"; 26 | case IMAGE_JPG: 27 | return "jpg"; 28 | case IMAGE_JPEG: 29 | return "jpeg"; 30 | case IMAGE_BMP: 31 | return "bmp"; 32 | case IMAGE_GIF: 33 | return "gif"; 34 | default: 35 | return ""; 36 | } 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/page/Page.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.page; 2 | 3 | import com.panda.common.utils.StringUtil; 4 | 5 | /** 6 | * 获取分页请求参数的实体类 7 | */ 8 | public class Page { 9 | 10 | //页码 11 | private Integer pageNum = 1; 12 | 13 | //页大小 14 | private Integer pageSize = 1000; 15 | 16 | //按列排序 17 | private String orderByColumn; 18 | 19 | //升序还是降序,"asc"表示升序(默认)、"desc"表示降序 20 | private String isAsc = "asc"; 21 | 22 | public Integer getPageNum() { 23 | return pageNum; 24 | } 25 | 26 | public void setPageNum(Integer pageNum) { 27 | this.pageNum = pageNum; 28 | } 29 | 30 | public Integer getPageSize() { 31 | return pageSize; 32 | } 33 | 34 | public void setPageSize(Integer pageSize) { 35 | this.pageSize = pageSize; 36 | } 37 | 38 | /** 39 | * 将isAsc拼接在orderby后边 40 | * 41 | * @return 42 | */ 43 | public String getOrderByColumn() { 44 | if (!StringUtil.isNotEmpty(orderByColumn)) { 45 | return ""; 46 | } 47 | return orderByColumn + " " + isAsc; 48 | } 49 | 50 | public void setOrderByColumn(String orderByColumn) { 51 | this.orderByColumn = orderByColumn; 52 | } 53 | 54 | public String getIsAsc() { 55 | return isAsc; 56 | } 57 | 58 | public void setIsAsc(String isAsc) { 59 | if (StringUtil.isNotEmpty(isAsc)) { 60 | this.isAsc = isAsc; 61 | } 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/page/PageBuilder.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.page; 2 | 3 | import com.panda.common.utils.ServletUtil; 4 | import com.panda.common.utils.StringUtil; 5 | 6 | import javax.servlet.http.HttpServletRequest; 7 | 8 | /** 9 | * 构建页对象,通过ServletUtil减少Controller方法上的请求参数 10 | */ 11 | public class PageBuilder { 12 | 13 | //当前页码 14 | public static final String PAGE_NUM = "pageNum"; 15 | 16 | //页大小 17 | public static final String PAGE_SIZE = "pageSize"; 18 | 19 | //总记录数 20 | public static final String TOTAL = "total"; 21 | 22 | //按列排序 23 | public static final String ORDER_BY_COLUMN = "orderByColumn"; 24 | 25 | //升序还是降序 26 | public static final String IS_ASC = "isAsc"; 27 | 28 | public static Page buildPage() { 29 | Page page = new Page(); 30 | HttpServletRequest request = ServletUtil.getRequest(); 31 | 32 | String pageNum = request.getParameter(PAGE_NUM); 33 | if (StringUtil.isNotEmpty(pageNum)) { 34 | page.setPageNum(Integer.parseInt(pageNum)); 35 | } 36 | 37 | String pageSize = request.getParameter(PAGE_SIZE); 38 | if (StringUtil.isNotEmpty(pageSize)) { 39 | page.setPageSize(Integer.parseInt(pageSize)); 40 | } 41 | 42 | page.setIsAsc(request.getParameter(IS_ASC)); 43 | page.setOrderByColumn(StringUtil.toUnderScoreCase(request.getParameter(ORDER_BY_COLUMN))); 44 | return page; 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/response/ResponseResult.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.response; 2 | 3 | import com.panda.common.constant.HttpStatus; 4 | 5 | import java.util.HashMap; 6 | 7 | /** 8 | * 响应消息结果,使用Map存储 9 | */ 10 | public class ResponseResult extends HashMap { 11 | 12 | private static final long serialVersionUID = 1L; 13 | 14 | //状态码的key 15 | private static final String CODE = "code"; 16 | 17 | //操作结果信息key 18 | private static final String MESSAGE = "msg"; 19 | 20 | //返回数据的key 21 | private static final String DATA = "data"; 22 | 23 | /** 24 | * 空的响应消息结果 25 | */ 26 | public ResponseResult() { 27 | } 28 | 29 | /** 30 | * 不包含数据的响应消息 31 | * 32 | * @param code 33 | * @param msg 34 | */ 35 | public ResponseResult(int code, String msg) { 36 | super.put(CODE, code); 37 | super.put(MESSAGE, msg); 38 | } 39 | 40 | /** 41 | * 构造响应消息 42 | * 43 | * @param code 状态码 44 | * @param msg 响应消息 45 | * @param data 响应数据 46 | */ 47 | public ResponseResult(int code, String msg, Object data) { 48 | super.put(CODE, code); 49 | super.put(MESSAGE, msg); 50 | if (data != null) { 51 | super.put(DATA, data); 52 | } 53 | } 54 | 55 | /* 返回成功消息 */ 56 | public static ResponseResult success() { 57 | return success("操作成功"); 58 | } 59 | 60 | public static ResponseResult success(String msg) { 61 | return success(msg, null); 62 | } 63 | 64 | public static ResponseResult success(Object data) { 65 | return success("操作成功", data); 66 | } 67 | 68 | /** 69 | * 返回成功消息 70 | * 71 | * @param msg 响应消息 72 | * @param data 响应数据 73 | * @return 响应消息对象 74 | */ 75 | public static ResponseResult success(String msg, Object data) { 76 | return new ResponseResult(HttpStatus.SUCCESS, msg, data); 77 | } 78 | 79 | 80 | /* 返回错误消息 */ 81 | public static ResponseResult error() { 82 | return error("操作失败"); 83 | } 84 | 85 | public static ResponseResult error(String msg) { 86 | return error(msg, null); 87 | } 88 | 89 | /** 90 | * 指定返回错误状态码的错误消息 91 | * 92 | * @param code 93 | * @param msg 94 | * @return 95 | */ 96 | public static ResponseResult error(int code, String msg) { 97 | return new ResponseResult(code, msg, null); 98 | } 99 | 100 | /** 101 | * 默认类型错误消息(500) 102 | * 103 | * @param msg 104 | * @param data 105 | * @return 106 | */ 107 | public static ResponseResult error(String msg, Object data) { 108 | return new ResponseResult(HttpStatus.ERROR, msg, data); 109 | } 110 | 111 | } 112 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/utils/ApplicationContextUtils.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.utils; 2 | 3 | import org.springframework.beans.BeansException; 4 | import org.springframework.context.ApplicationContext; 5 | import org.springframework.context.ApplicationContextAware; 6 | import org.springframework.stereotype.Component; 7 | 8 | /** 9 | * Spring工厂工具类,用于getBean 10 | */ 11 | @Component 12 | public class ApplicationContextUtils implements ApplicationContextAware { 13 | 14 | private static ApplicationContext context; 15 | 16 | @Override 17 | public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 18 | context = applicationContext; 19 | } 20 | 21 | public static Object getBean(String beanName) { 22 | return context.getBean(beanName); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/utils/JwtUtil.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.utils; 2 | 3 | import com.auth0.jwt.JWT; 4 | import com.auth0.jwt.JWTVerifier; 5 | import com.auth0.jwt.algorithms.Algorithm; 6 | import com.auth0.jwt.exceptions.JWTDecodeException; 7 | import com.auth0.jwt.interfaces.DecodedJWT; 8 | import lombok.extern.slf4j.Slf4j; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * 签名与校验token工具类 14 | */ 15 | @Slf4j 16 | public class JwtUtil { 17 | /** 18 | * JWT验证过期时间 EXPIRE_TIME 分钟 暂定一小时 19 | */ 20 | private static final long EXPIRE_TIME = 60 * 60 * 1000; 21 | 22 | /** 23 | * 校验token是否正确 24 | * 25 | * @param token 密钥 26 | * @param secret 用户的密码 27 | * @return 是否正确 28 | */ 29 | public static boolean verify(String token, String username, String secret) { 30 | try { 31 | //根据密码生成JWT效验器 32 | Algorithm algorithm = Algorithm.HMAC256(secret); 33 | JWTVerifier verifier = JWT.require(algorithm) 34 | .withClaim("username", username) 35 | .build(); 36 | //效验TOKEN 37 | DecodedJWT jwt = verifier.verify(token); 38 | log.info("登录验证成功!"); 39 | return true; 40 | } catch (Exception exception) { 41 | log.error("JwtUtil登录验证失败!"); 42 | return false; 43 | } 44 | } 45 | 46 | /** 47 | * 获得token中的信息无需secret解密也能获得 48 | * 49 | * @return token中包含的用户名 50 | */ 51 | public static String getUsername(String token) { 52 | try { 53 | DecodedJWT jwt = JWT.decode(token); 54 | return jwt.getClaim("username").asString(); 55 | } catch (JWTDecodeException e) { 56 | return null; 57 | } 58 | } 59 | 60 | /** 61 | * 生成token签名EXPIRE_TIME 分钟后过期 62 | * 63 | * @param username 用户名 64 | * @param secret 用户的密码 65 | * @return 加密的token 66 | */ 67 | public static String sign(String username, String secret) { 68 | Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME); 69 | Algorithm algorithm = Algorithm.HMAC256(secret); 70 | // 附带username信息 71 | return JWT.create() 72 | .withClaim("username", username) 73 | .withExpiresAt(date) 74 | .sign(algorithm); 75 | 76 | } 77 | 78 | public static void main(String[] args) { 79 | /** 80 | * 测试生成一个token 81 | * 结果:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MDc0ODI5OTYsInVzZXJuYW1lIjoi5ZGo5YWrIn0.UP6kFC0BofuX7FLoPDMWCQno-NhVuYA0NlQG8xgt2Rc 82 | */ 83 | String sign = sign("周八", "f93643c0eacc54a5ee1783744466ab9e"); 84 | log.warn("测试生成一个token\n" + sign); 85 | } 86 | 87 | } 88 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/utils/SaltUtils.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.utils; 2 | 3 | import java.util.Random; 4 | 5 | /** 6 | * 生成随机盐工具类 7 | */ 8 | public class SaltUtils { 9 | 10 | public static String getSalt(int n) { 11 | //返回长度为n的随机盐 12 | StringBuilder sb = new StringBuilder(); 13 | char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()".toCharArray(); 14 | for (int i = 0; i < n; i++) { 15 | char c = chars[new Random().nextInt(chars.length)]; 16 | sb.append(c); 17 | } 18 | return sb.toString(); 19 | } 20 | 21 | public static void main(String[] args) { 22 | System.out.println(getSalt(8)); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/utils/ServletUtil.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.utils; 2 | 3 | import org.springframework.web.context.request.RequestContextHolder; 4 | import org.springframework.web.context.request.ServletRequestAttributes; 5 | 6 | import javax.servlet.http.HttpServletRequest; 7 | import javax.servlet.http.HttpServletResponse; 8 | import javax.servlet.http.HttpSession; 9 | 10 | /** 11 | * 从当前绑定的线程上获取请求属性 12 | */ 13 | public class ServletUtil { 14 | 15 | /** 16 | * 获取所有请求属性 17 | * 18 | * @return 请求属性 19 | */ 20 | public static ServletRequestAttributes getAttributes() { 21 | return (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); 22 | } 23 | 24 | /** 25 | * 获取request请求对象 26 | * 27 | * @return 28 | */ 29 | public static HttpServletRequest getRequest() { 30 | return getAttributes().getRequest(); 31 | } 32 | 33 | /** 34 | * 获取response响应对象 35 | * 36 | * @return 37 | */ 38 | public static HttpServletResponse getResponse() { 39 | return getAttributes().getResponse(); 40 | } 41 | 42 | /** 43 | * 获取session域对象 44 | * 45 | * @return 46 | */ 47 | public static HttpSession getSession() { 48 | return getRequest().getSession(); 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/utils/SessionSeatsUtil.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.utils; 2 | 3 | import com.alibaba.fastjson.JSONArray; 4 | import com.alibaba.fastjson.JSONObject; 5 | 6 | import java.util.LinkedHashMap; 7 | import java.util.Map; 8 | 9 | /** 10 | * @description: 11 | * @author: chengho 12 | * @create: 2021-06-02 15:59 13 | */ 14 | public class SessionSeatsUtil { 15 | /** 16 | * @param curSessionSeats 17 | * @param selectSeats 18 | * @return 19 | */ 20 | public static String changeSessionSeats(String curSessionSeats, String selectSeats) { 21 | JSONObject curSessionSeatsJSON = JSONObject.parseObject(curSessionSeats); 22 | // 超时订单已选座位 23 | Map selectedSeatsMap = new LinkedHashMap<>(); 24 | // 获取当前超时订单座位信息 25 | String[] selectedSeats = selectSeats.split(","); 26 | for (int i = 0; i < selectedSeats.length; i++) { 27 | String row = selectedSeats[i].substring(selectedSeats[i].indexOf("\"") + 1, selectedSeats[i].indexOf("排")); 28 | Integer col = Integer.parseInt(selectedSeats[i].substring(selectedSeats[i].indexOf("排") + 1, selectedSeats[i].indexOf("座"))); 29 | selectedSeatsMap.put(row, col); 30 | } 31 | // 显示已选座位坐标 32 | selectedSeatsMap.forEach((key, value) -> { 33 | System.out.println("key = " + key + " value=" + value); 34 | }); 35 | 36 | 37 | Map valueMap = new LinkedHashMap<>(); 38 | valueMap.putAll(curSessionSeatsJSON); 39 | valueMap.forEach((key, value) -> System.out.println("\"" + key + "\":" + " " + value)); 40 | // 取消选座 41 | selectedSeatsMap.forEach((index, value) -> { 42 | ((JSONArray) valueMap.get(index)).set(value - 1, 0); 43 | }); 44 | JSONObject newSessionSeatsJSON = new JSONObject(valueMap); 45 | return JSONObject.toJSONString(newSessionSeatsJSON); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /panda-common/src/main/java/com/panda/common/utils/StringUtil.java: -------------------------------------------------------------------------------- 1 | package com.panda.common.utils; 2 | 3 | /** 4 | * 字符串工具类,抽取一些常用操作 5 | */ 6 | public class StringUtil { 7 | 8 | /** 9 | * 判断val是否不为空(null/"") 10 | * 11 | * @param val 12 | * @return 13 | */ 14 | public static boolean isNotEmpty(String val) { 15 | return val != null && !"".equals(val); 16 | } 17 | 18 | /** 19 | * 将给定的驼峰命名值转换为下划线命名 20 | * 21 | * @param val 22 | * @return 23 | */ 24 | public static String toUnderScoreCase(String val) { 25 | if (!isNotEmpty(val)) { 26 | return val; 27 | } 28 | StringBuilder sb = new StringBuilder(val); 29 | for (int i = 0; i < sb.length(); i++) { 30 | if (sb.charAt(i) >= 'A' && sb.charAt(i) <= 'Z') { 31 | //将大写字母 "A" 替换为 "_a" 32 | sb.replace(i, i + 1, "_" + (char) (sb.charAt(i) + 32)); 33 | } 34 | } 35 | return sb.toString(); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /panda-framework/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | com.panda 7 | panda 8 | 0.0.1-SNAPSHOT 9 | 10 | 11 | panda-framework 12 | panda-framework 13 | 框架核心 14 | 15 | 16 | 17 | 18 | 19 | org.springframework.boot 20 | spring-boot-starter-web 21 | 22 | 23 | 24 | 25 | org.springframework.boot 26 | spring-boot-starter-quartz 27 | 28 | 29 | 30 | 31 | org.springframework.boot 32 | spring-boot-starter-aop 33 | 34 | 35 | 36 | 37 | org.springframework.boot 38 | spring-boot-starter-test 39 | 40 | 41 | 42 | 43 | com.alibaba 44 | druid-spring-boot-starter 45 | 46 | 47 | 48 | 49 | org.mybatis.spring.boot 50 | mybatis-spring-boot-starter 51 | 52 | 53 | 54 | 55 | com.panda 56 | panda-system 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /panda-framework/src/main/java/com/panda/framework/config/ApplicationConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.panda.framework.config; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | 7 | @Configuration 8 | //配置要扫描mapper的包 9 | @MapperScan("com.panda.**.mapper") 10 | public class ApplicationConfiguration { 11 | } 12 | -------------------------------------------------------------------------------- /panda-framework/src/main/java/com/panda/framework/config/CrosConfig.java: -------------------------------------------------------------------------------- 1 | package com.panda.framework.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.web.servlet.config.annotation.CorsRegistry; 5 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 6 | 7 | 8 | @Configuration 9 | public class CrosConfig implements WebMvcConfigurer { 10 | @Override 11 | public void addCorsMappings(CorsRegistry registry) { 12 | registry.addMapping("/**") 13 | .allowedOrigins("http://localhost:8080") 14 | .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS") 15 | .allowCredentials(true) 16 | .maxAge(3600) 17 | .allowedHeaders("*"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /panda-framework/src/main/java/com/panda/framework/config/QuartzConfig.java: -------------------------------------------------------------------------------- 1 | package com.panda.framework.config; 2 | 3 | 4 | import com.alibaba.fastjson.JSONArray; 5 | import com.alibaba.fastjson.JSONObject; 6 | import com.panda.common.exception.DataNotFoundException; 7 | import com.panda.common.utils.ApplicationContextUtils; 8 | import com.panda.system.domin.SysBill; 9 | import com.panda.system.domin.SysSession; 10 | import com.panda.system.service.impl.SysBillServiceImpl; 11 | import com.panda.system.service.impl.SysSessionServiceImpl; 12 | import org.quartz.*; 13 | import org.springframework.beans.factory.annotation.Autowired; 14 | import org.springframework.context.annotation.Bean; 15 | import org.springframework.context.annotation.Configuration; 16 | import org.springframework.scheduling.quartz.QuartzJobBean; 17 | 18 | import java.text.SimpleDateFormat; 19 | import java.util.Date; 20 | import java.util.LinkedHashMap; 21 | import java.util.List; 22 | import java.util.Map; 23 | 24 | @Configuration 25 | public class QuartzConfig { 26 | 27 | @Autowired 28 | private SysBillServiceImpl sysBillService; 29 | 30 | @Autowired 31 | private SysSessionServiceImpl sysSessionService; 32 | 33 | @Bean 34 | public JobDetail jobDetail() { 35 | QuartzJobBean quartzJob = new QuartzJobBean() { 36 | @Override 37 | protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { 38 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 39 | System.out.println("执行取消超时订单处理" + sdf.format(new Date())); 40 | // 取消所有超时订单并释放占座资源 41 | ApplicationContextUtils.getBean("cancelTimeoutBill"); 42 | } 43 | }; 44 | return JobBuilder.newJob(quartzJob.getClass()).storeDurably().build(); 45 | } 46 | 47 | @Bean 48 | public SimpleTrigger trigger() { 49 | //每5分钟执行一次,一直重复执行 50 | SimpleScheduleBuilder scheduleBuilder = 51 | SimpleScheduleBuilder.simpleSchedule() 52 | .withIntervalInSeconds(5 * 60) 53 | .repeatForever(); 54 | return TriggerBuilder.newTrigger() 55 | .forJob(jobDetail()) 56 | .withSchedule(scheduleBuilder).build(); 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /panda-framework/src/main/java/com/panda/framework/shiro/JwtFilter.java: -------------------------------------------------------------------------------- 1 | package com.panda.framework.shiro; 2 | 3 | import com.panda.common.constant.HttpStatus; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter; 6 | import org.springframework.stereotype.Component; 7 | import org.springframework.web.bind.annotation.RequestMethod; 8 | 9 | import javax.servlet.Filter; 10 | import javax.servlet.ServletRequest; 11 | import javax.servlet.ServletResponse; 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpServletResponse; 14 | 15 | /** 16 | * 使用jwt过滤器作为shiro的过滤器 17 | */ 18 | @Slf4j 19 | @Component 20 | public class JwtFilter extends BasicHttpAuthenticationFilter implements Filter { 21 | 22 | @Override 23 | protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception { 24 | HttpServletRequest httpServletRequest = (HttpServletRequest) request; 25 | String token = httpServletRequest.getHeader("Token"); 26 | JwtToken jwtToken = new JwtToken(token); 27 | 28 | //交给realm进行登入 29 | getSubject(request, response).login(jwtToken); 30 | return true; 31 | } 32 | 33 | /** 34 | * 登录认证 35 | * 36 | * @param request 37 | * @param response 38 | * @param mappedValue 39 | * @return 40 | */ 41 | @Override 42 | protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) { 43 | try { 44 | return executeLogin(request, response); 45 | } catch (Exception e) { 46 | log.error("JwtFilter过滤验证失败"); 47 | return false; 48 | } 49 | } 50 | 51 | /** 52 | * 处理跨域 53 | * 54 | * @param request 55 | * @param response 56 | * @return 57 | * @throws Exception 58 | */ 59 | @Override 60 | protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception { 61 | HttpServletRequest httpServletRequest = (HttpServletRequest) request; 62 | HttpServletResponse httpServletResponse = (HttpServletResponse) response; 63 | httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin")); 64 | httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE"); 65 | httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers")); 66 | // 跨域时会首先发送一个option请求, 直接返回正常状态 67 | if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) { 68 | httpServletResponse.setStatus(HttpStatus.SUCCESS); 69 | return false; 70 | } 71 | return super.preHandle(request, response); 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /panda-framework/src/main/java/com/panda/framework/shiro/JwtToken.java: -------------------------------------------------------------------------------- 1 | package com.panda.framework.shiro; 2 | 3 | import org.apache.shiro.authc.AuthenticationToken; 4 | 5 | /** 6 | * 实现shiro的AuthenticationToken接口的类JwtToken 7 | */ 8 | public class JwtToken implements AuthenticationToken { 9 | 10 | private String token; 11 | 12 | public JwtToken(String token) { 13 | this.token = token; 14 | } 15 | 16 | @Override 17 | public Object getPrincipal() { 18 | return token; 19 | } 20 | 21 | @Override 22 | public Object getCredentials() { 23 | return token; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /panda-framework/src/main/java/com/panda/framework/shiro/realms/CustomerRealm.java: -------------------------------------------------------------------------------- 1 | package com.panda.framework.shiro.realms; 2 | 3 | import com.panda.common.utils.JwtUtil; 4 | import com.panda.framework.shiro.JwtToken; 5 | import com.panda.system.domin.SysUser; 6 | import com.panda.system.service.impl.SysUserServiceImpl; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.apache.shiro.authc.AuthenticationException; 9 | import org.apache.shiro.authc.AuthenticationInfo; 10 | import org.apache.shiro.authc.AuthenticationToken; 11 | import org.apache.shiro.authc.SimpleAuthenticationInfo; 12 | import org.apache.shiro.authz.AuthorizationInfo; 13 | import org.apache.shiro.realm.AuthorizingRealm; 14 | import org.apache.shiro.subject.PrincipalCollection; 15 | import org.springframework.beans.factory.annotation.Autowired; 16 | 17 | /** 18 | * 自定义realm 19 | */ 20 | @Slf4j 21 | public class CustomerRealm extends AuthorizingRealm { 22 | 23 | @Autowired 24 | private SysUserServiceImpl sysUserService; 25 | 26 | /** 27 | * 重写此方法避免shiro报错 28 | * 29 | * @param token 30 | * @return 31 | */ 32 | @Override 33 | public boolean supports(AuthenticationToken token) { 34 | return token instanceof JwtToken; 35 | } 36 | 37 | //授权 38 | @Override 39 | protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { 40 | return null; 41 | } 42 | 43 | //身份认证 44 | @Override 45 | protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { 46 | String token = (String) authenticationToken.getCredentials(); 47 | // 解密获得username,用于和数据库进行对比 48 | String username = null; 49 | try { 50 | //这里工具类没有处理空指针等异常这里处理一下(这里处理科学一些) 51 | username = JwtUtil.getUsername(token); 52 | } catch (Exception e) { 53 | throw new AuthenticationException("token拼写错误或者值为空"); 54 | } 55 | if (username == null) { 56 | log.error("token无效(空''或者null都不行!)"); 57 | throw new AuthenticationException("token无效"); 58 | } 59 | SysUser user = sysUserService.findUserByName(username); 60 | if (user == null) { 61 | log.error("用户不存在)"); 62 | throw new AuthenticationException("用户不存在"); 63 | } 64 | if (!JwtUtil.verify(token, username, user.getPassword())) { 65 | log.error("用户名或密码错误(token无效或者与登录者不匹配)"); 66 | throw new AuthenticationException("用户名或密码错误(token无效或者与登录者不匹配)"); 67 | } 68 | return new SimpleAuthenticationInfo(token, token, this.getName()); 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /panda-system/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | panda 7 | com.panda 8 | 0.0.1-SNAPSHOT 9 | 10 | 11 | panda-system 12 | panda-system 13 | 系统代码模块 14 | 15 | 16 | 17 | com.panda 18 | panda-common 19 | 20 | 21 | org.projectlombok 22 | lombok 23 | 24 | 25 | javax.validation 26 | validation-api 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/LoginUser.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.ToString; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * 当前登录用户 12 | */ 13 | @Data 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | @ToString 17 | public class LoginUser implements Serializable { 18 | //登录的用户信息 19 | private SysUser sysUser; 20 | //用户管理的影院id 21 | private Long cinemaId; 22 | //用户管理的影院名称 23 | private String cinemaName; 24 | 25 | //系统颁发的token 26 | private String token; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/SysBill.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.ToString; 7 | 8 | import javax.validation.constraints.NotBlank; 9 | import javax.validation.constraints.NotNull; 10 | import java.io.Serializable; 11 | import java.util.Date; 12 | 13 | /** 14 | * 订单实体类 15 | */ 16 | @Data 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | @ToString 20 | public class SysBill implements Serializable { 21 | 22 | private static final Long serialVersionUID = 1L; 23 | 24 | private Long billId; 25 | 26 | //订单状态,0表示未支付,1表示已完成 27 | private Boolean payState; 28 | 29 | //下订单的用户id 30 | @NotNull(message = "下订单用户不能为空") 31 | private Long userId; 32 | 33 | //订单所属的场次 34 | @NotNull(message = "订单所属场次不能为空") 35 | private Long sessionId; 36 | 37 | //订单的座位,如:1排10号、A排5号 38 | @NotBlank(message = "订单所选座位不能为空") 39 | private String seats; 40 | 41 | private Boolean cancelState; 42 | 43 | private Boolean cancelRole; 44 | 45 | private Date createTime; 46 | 47 | private Date deadline; 48 | 49 | private Date cancelTime; 50 | 51 | // 用户名作模糊查询条件 52 | private String queryByUserName; 53 | 54 | // 管理员操作识别,及备注内容。管理员操作点单,或添加或修改,必须要填写备注信息,购票子系统不需要填写,并清空 55 | private String remark; 56 | // 删除状态,1:删除,0:未删除 57 | private Boolean delState; 58 | 59 | //多表连接 60 | private SysSession sysSession; 61 | 62 | private SysUser sysUser; 63 | 64 | } 65 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/SysCinema.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import lombok.ToString; 8 | 9 | import javax.validation.constraints.NotBlank; 10 | import javax.validation.constraints.NotNull; 11 | import java.io.Serializable; 12 | import java.util.List; 13 | 14 | 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | @Data 18 | @ToString 19 | public class SysCinema implements Serializable { 20 | private final static Long serialVersionUID = 1L; 21 | 22 | private Long cinemaId; 23 | 24 | @NotBlank(message = "影院名称不能为空") 25 | private String cinemaName; 26 | 27 | private String hallCategoryList; 28 | 29 | private String cinemaPicture; 30 | 31 | private String cinemaAddress; 32 | 33 | private String cinemaPhone; 34 | 35 | @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "HH:mm") 36 | private String workStartTime; 37 | 38 | @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "HH:mm") 39 | private String workEndTime; 40 | 41 | //当前影院上映的所有电影,规则:上映的电影指包括今天在内,未来5天有安排目标影片的场次 42 | private List sysMovieList; 43 | 44 | } 45 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/SysHall.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.ToString; 7 | 8 | import javax.validation.constraints.Max; 9 | import javax.validation.constraints.Min; 10 | import javax.validation.constraints.NotBlank; 11 | import java.io.Serializable; 12 | 13 | 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | @Data 17 | @ToString 18 | public class SysHall implements Serializable { 19 | private final static Long serialVersionUID = 1L; 20 | 21 | private Long cinemaId; 22 | 23 | private Long hallId; 24 | 25 | @NotBlank(message = "影厅名称不能为空") 26 | private String hallName; 27 | 28 | private String hallCategory; 29 | 30 | //排开始标号:'1' / 'A' 等 31 | private String rowStart; 32 | 33 | //影厅排数 34 | @Min(value = 3, message = "排数不能小于3") 35 | @Max(value = 50, message = "排数不能大于50") 36 | private Integer rowNums; 37 | 38 | //每排座位数 39 | @Min(value = 3, message = "每排座位数不能小于3") 40 | @Max(value = 50, message = "每排座位数不能大于50") 41 | private Integer seatNumsRow; 42 | 43 | //总可用座位数,可以通过安排座位禁用指定座位 44 | @Min(value = 9, message = "座位数不能小于9") 45 | @Max(value = 2500, message = "座位数不能大于2500") 46 | private Integer seatNums; 47 | 48 | //座位的状态,使用json存储每个座位的状态,0表示可用,2表示禁用(1表示售出,在场次表中统计) 49 | private String seatState; 50 | 51 | private Boolean delState; 52 | 53 | //影厅表的多表连接 54 | private SysCinema sysCinema; 55 | 56 | } 57 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/SysMovie.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.ToString; 7 | 8 | import javax.validation.constraints.NotBlank; 9 | import java.io.Serializable; 10 | import java.util.Date; 11 | import java.util.List; 12 | 13 | 14 | @Data 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | @ToString 18 | public class SysMovie implements Serializable { 19 | 20 | private static final long serialVersionUID = 1L; 21 | 22 | private Long movieId; 23 | 24 | //电影名称 25 | @NotBlank(message = "电影名称不能为空") 26 | private String movieName; 27 | 28 | //电影时长 29 | private Integer movieLength; 30 | 31 | //电影海报 32 | private String moviePoster; 33 | 34 | private String movieArea; 35 | 36 | //上映日期 37 | private Date releaseDate; 38 | 39 | //电影总票房 40 | private Double movieBoxOffice; 41 | 42 | //电影简介 43 | private String movieIntroduction; 44 | 45 | //电影图集 46 | private String moviePictures; 47 | 48 | //电影的类别 49 | private List movieCategoryList; 50 | 51 | } 52 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/SysMovieCategory.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.ToString; 7 | 8 | import javax.validation.constraints.NotBlank; 9 | import java.io.Serializable; 10 | 11 | 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | @Data 15 | @ToString 16 | public class SysMovieCategory implements Serializable { 17 | //序列号 18 | private static final long serialVersionUID = 1L; 19 | //电影分类id 20 | private Long movieCategoryId; 21 | //电影分类名称 22 | @NotBlank(message = "电影分类名称不能为空") 23 | private String movieCategoryName; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/SysMovieToCategory.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.ToString; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * 存储电影与电影类别的多对多联系 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | @ToString 17 | public class SysMovieToCategory implements Serializable { 18 | 19 | private static final Long serialVersionUID = 1L; 20 | 21 | private Long movieId; 22 | 23 | private Long movieCategoryId; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/SysResource.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.ToString; 7 | 8 | import javax.validation.constraints.NotBlank; 9 | import java.io.Serializable; 10 | import java.util.List; 11 | 12 | 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | @ToString 17 | public class SysResource implements Serializable { 18 | 19 | private static final Long serialVersionUID = 1L; 20 | 21 | private Long id; 22 | 23 | @NotBlank(message = "菜单名称不能为空") 24 | private String name; 25 | 26 | private String path; 27 | 28 | //菜单权限等级 29 | private Integer level; 30 | 31 | private Long parentId; 32 | 33 | //父菜单 34 | private SysResource parent; 35 | 36 | //子菜单 37 | private List children; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/SysRole.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.ToString; 7 | 8 | import javax.validation.constraints.NotBlank; 9 | import java.io.Serializable; 10 | import java.util.List; 11 | 12 | 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | @ToString 17 | public class SysRole implements Serializable { 18 | 19 | private static final Long serialVersionUID = 1L; 20 | 21 | private Long roleId; 22 | 23 | //角色名称 24 | @NotBlank(message = "角色名称不能为空") 25 | private String roleName; 26 | 27 | //角色描述 28 | @NotBlank(message = "角色描述不能为空") 29 | private String roleDesc; 30 | 31 | 32 | //角色拥有的权限,分多级权限存储,取名为children方便读取所有权限 33 | private List children; 34 | } 35 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/SysSession.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import lombok.ToString; 8 | 9 | import javax.validation.constraints.NotBlank; 10 | import javax.validation.constraints.NotNull; 11 | import javax.validation.constraints.Size; 12 | import java.io.Serializable; 13 | import java.time.LocalDate; 14 | 15 | /** 16 | * 场次实体类 17 | */ 18 | @Data 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ToString 22 | public class SysSession implements Serializable { 23 | 24 | private static final Long serialVersionUID = 1L; 25 | 26 | //场次编号 27 | private Long sessionId; 28 | 29 | //影厅编号 30 | @NotNull(message = "场次所在影厅不能为空") 31 | private Long hallId; 32 | 33 | //该场次语言版本 34 | @NotBlank(message = "场次电影语言版本不能为空") 35 | private String languageVersion; 36 | 37 | // 电影编号 38 | @NotNull(message = "场次安排电影不能为空") 39 | private Long movieId; 40 | 41 | @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "HH:mm") 42 | private String playTime; 43 | 44 | @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "HH:mm") 45 | private String endTime; 46 | 47 | // 截止时间,此时间之前不可删不可改电影、影厅信息 48 | private String deadline; 49 | 50 | // 场次日期 51 | @NotNull(message = "场次日期不能为空") 52 | @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd") 53 | private LocalDate sessionDate; 54 | 55 | // 场次票价 56 | @NotNull(message = "场次票价不能为空") 57 | @Size(min = 0, message = "场次票价不能为负数") 58 | private Double sessionPrice; 59 | 60 | // 场次提示 61 | private String sessionTips; 62 | 63 | // 场次座位信息 64 | @NotBlank(message = "场次座位信息不能为空") 65 | private String sessionSeats; 66 | 67 | private Integer seatNums; 68 | 69 | // 已售座位数 70 | private Integer sallNums; 71 | 72 | private SysHall sysHall; 73 | 74 | private SysMovie sysMovie; 75 | } 76 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/SysUser.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.ToString; 7 | 8 | import javax.validation.constraints.Email; 9 | import javax.validation.constraints.NotBlank; 10 | import javax.validation.constraints.Pattern; 11 | import java.io.Serializable; 12 | 13 | 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | @Data 17 | @ToString 18 | public class SysUser implements Serializable { 19 | private final static Long serialVersionUID = 1L; 20 | //用户id 21 | private Long userId; 22 | //用户名 23 | @NotBlank(message = "用户名不能为空") 24 | private String userName; 25 | //密码 26 | @NotBlank(message = "密码不能为空") 27 | private String password; 28 | //盐 29 | private String salt; 30 | //邮箱 31 | @Email(message = "邮箱格式有误") 32 | private String email; 33 | //电话号码 34 | @Pattern(regexp = "^1[3|4|5|7|8]\\d{9}$", message = "电话号码格式有错") 35 | private String phoneNumber; 36 | //性别 37 | private Boolean sex; 38 | //用户头像 39 | private String userPicture; 40 | //用户对应的角色id,为简化操作,采用1对1 41 | private Long roleId; 42 | 43 | private String birthday; 44 | 45 | private String autograph; 46 | 47 | //用户的角色 48 | private SysRole sysRole; 49 | } 50 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/vo/SysBillVo.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin.vo; 2 | 3 | import com.panda.system.domin.SysBill; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * 接收前端增加订单的数据 12 | */ 13 | @Data 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class SysBillVo implements Serializable { 17 | 18 | //订单信息 19 | private SysBill sysBill; 20 | 21 | //若成功更新后场次的座位信息 22 | private String sessionSeats; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/vo/SysMovieVo.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.ToString; 7 | 8 | import java.io.Serializable; 9 | import java.util.Date; 10 | 11 | /** 12 | * 封装电影查询的条件 13 | */ 14 | @Data 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | @ToString 18 | public class SysMovieVo implements Serializable { 19 | 20 | private String movieName; 21 | 22 | private String movieArea; 23 | 24 | private Long movieCategoryId; 25 | 26 | private Date startDate; 27 | 28 | private Date endDate; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/vo/SysSessionVo.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin.vo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.io.Serializable; 9 | import java.time.LocalDate; 10 | 11 | 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | @Data 15 | public class SysSessionVo implements Serializable { 16 | 17 | private Long hallId; 18 | 19 | private Long movieId; 20 | 21 | @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd") 22 | private LocalDate sessionDate; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/domin/vo/SysUserVo.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.domin.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.ToString; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * 封装用户登录输入的信息 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | @ToString 17 | public class SysUserVo implements Serializable { 18 | 19 | private String userName; 20 | 21 | private String password; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/mapper/SysBillMapper.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.mapper; 2 | 3 | import com.panda.system.domin.SysBill; 4 | 5 | import java.util.List; 6 | 7 | 8 | public interface SysBillMapper { 9 | 10 | List findAllBills(SysBill sysBill); 11 | 12 | SysBill findBillById(Long id); 13 | 14 | int addBill(SysBill sysBill); 15 | 16 | int updateBill(SysBill sysBill); 17 | 18 | int deleteBill(Long id); 19 | 20 | List findTimeoutBill(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/mapper/SysCinemaMapper.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.mapper; 2 | 3 | import com.panda.system.domin.SysCinema; 4 | 5 | public interface SysCinemaMapper { 6 | 7 | SysCinema findCinema(); 8 | 9 | int updateCinema(SysCinema sysCinema); 10 | 11 | // 前台展示单个影院信息,返回包含影院、上映中的所有电影信息 12 | SysCinema findCinemaById(Long id); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/mapper/SysHallMapper.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.mapper; 2 | 3 | import com.panda.system.domin.SysHall; 4 | 5 | import java.util.List; 6 | 7 | 8 | public interface SysHallMapper { 9 | List findAllHalls(SysHall sysHall); 10 | 11 | SysHall findHallById(SysHall sysHall); 12 | 13 | int addHall(SysHall sysHall); 14 | 15 | int updateHall(SysHall sysHall); 16 | 17 | int deleteHall(SysHall sysHall); 18 | } 19 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/mapper/SysMovieCategoryMapper.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.mapper; 2 | 3 | import com.panda.system.domin.SysMovieCategory; 4 | import com.panda.system.domin.SysMovieToCategory; 5 | 6 | import java.util.List; 7 | 8 | 9 | public interface SysMovieCategoryMapper { 10 | 11 | List findAllCategorys(); 12 | 13 | SysMovieCategory findCategoryById(Long id); 14 | 15 | List findOneMovieCategorys(Long id); 16 | 17 | int addCategory(SysMovieCategory sysMovieCategory); 18 | 19 | int updateCategory(SysMovieCategory sysMovieCategory); 20 | 21 | int deleteCategory(Long id); 22 | 23 | int addMovieToCategory(SysMovieToCategory sysMovieToCategory); 24 | 25 | int deleteMovieToCategory(SysMovieToCategory sysMovieToCategory); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/mapper/SysMovieMapper.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.mapper; 2 | 3 | import com.panda.system.domin.SysMovie; 4 | import com.panda.system.domin.vo.SysMovieVo; 5 | 6 | import java.util.List; 7 | 8 | 9 | public interface SysMovieMapper { 10 | 11 | /** 12 | * 按照传入对象的参数进行条件分页查询 13 | * @param sysMovieVo 14 | * @return 15 | */ 16 | List findAllMovies(SysMovieVo sysMovieVo); 17 | 18 | /** 19 | * 根据id查询 20 | * @param id 21 | * @return 22 | */ 23 | SysMovie findMovieById(Long id); 24 | 25 | /** 26 | * 查询一个电影的信息,不查询相关的其他等信息 27 | * @param id 28 | * @return 29 | */ 30 | SysMovie findOneMovie(Long id); 31 | 32 | int addMovie(SysMovie sysMovie); 33 | 34 | int updateMovie(SysMovie sysMovie); 35 | 36 | int deleteMovie(Long id); 37 | 38 | /** 39 | * 查询影院上映的所有电影 40 | * 41 | * @param id 42 | * @return 43 | */ 44 | List findMovieByCinemaId(Long id); 45 | 46 | /** 47 | * 总票房榜 48 | * @return 49 | */ 50 | List totalBoxOfficeList(); 51 | 52 | /** 53 | * 国内票房榜 已上映的国内电影里,按票房取前10 国内电影 movieArea in (港台+大陆) 54 | * @return 55 | */ 56 | List domesticBoxOfficeList(); 57 | 58 | /** 59 | * 国外票房榜 已上映的国外电影里,按票房取前10 国外电影 movieArea not in (港台+大陆) 60 | * @return 61 | */ 62 | List foreignBoxOfficeList(); 63 | 64 | } 65 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/mapper/SysResourceMapper.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.mapper; 2 | 3 | import com.panda.system.domin.SysResource; 4 | 5 | import java.util.List; 6 | 7 | 8 | public interface SysResourceMapper { 9 | 10 | /** 11 | * 查询所有并包含其父菜单 12 | * 13 | * @return 14 | */ 15 | List findAllResources(); 16 | 17 | /** 18 | * 查出所有菜单并包含其直接children 19 | * 20 | * @return 21 | */ 22 | List findWithChildren(); 23 | 24 | /** 25 | * 查询所有按父子关系的权限 26 | * 27 | * @return 28 | */ 29 | List findAllWithAllChildren(); 30 | 31 | SysResource findResourceById(Long id); 32 | 33 | int addResource(SysResource sysResource); 34 | 35 | int updateResource(SysResource sysResource); 36 | 37 | int deleteResource(Long id); 38 | 39 | } 40 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/mapper/SysRoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.mapper; 2 | 3 | import com.panda.system.domin.SysRole; 4 | 5 | import java.util.List; 6 | 7 | 8 | public interface SysRoleMapper { 9 | 10 | List findAllRoles(); 11 | 12 | SysRole findRoleById(Long id); 13 | 14 | int addRole(SysRole sysRole); 15 | 16 | int updateRole(SysRole sysRole); 17 | 18 | int deleteRole(Long id); 19 | 20 | //给当前角色分配权限 21 | int addRight(Long roleId, Long resourceId); 22 | 23 | int deleteRight(Long roleId, Long resourceId); 24 | 25 | //查询指定角色的所有三级权限id 26 | List findAllRights(Long roleId); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/mapper/SysSessionMapper.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.mapper; 2 | 3 | import com.panda.system.domin.SysSession; 4 | import com.panda.system.domin.vo.SysSessionVo; 5 | 6 | import java.util.List; 7 | 8 | 9 | public interface SysSessionMapper { 10 | 11 | /** 12 | * 根据条件查询 13 | * 14 | * @param sysSessionVo 15 | * @return 16 | */ 17 | List findByVo(SysSessionVo sysSessionVo); 18 | 19 | /** 20 | * 查询一个 21 | * 22 | * @param sysSession 23 | * @return 24 | */ 25 | List findSessionByMovieIdOrHallId(SysSession sysSession); 26 | 27 | /** 28 | * 查询一个 29 | * 30 | * @param id 31 | * @return 32 | */ 33 | SysSession findSessionById(Long id); 34 | 35 | /** 36 | * 查询一个,不查询相关的信息 37 | * 38 | * @param id 39 | * @return 40 | */ 41 | SysSession findOneSession(Long id); 42 | 43 | /** 44 | * 添加 45 | * 46 | * @param sysSession 47 | * @return 48 | */ 49 | int addSession(SysSession sysSession); 50 | 51 | /** 52 | * 修改 53 | * 54 | * @param sysSession 55 | * @return 56 | */ 57 | int updateSession(SysSession sysSession); 58 | 59 | /** 60 | * 删除 61 | * 62 | * @param id 63 | * @return 64 | */ 65 | int deleteSession(Long id); 66 | 67 | /** 68 | * 根据影院id和电影id查询近5天上映的场次信息 69 | * 70 | * @param movieId 71 | * @return 72 | */ 73 | List findSessionByMovieId(Long movieId); 74 | 75 | } 76 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/mapper/SysUserMapper.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.mapper; 2 | 3 | import com.panda.system.domin.LoginUser; 4 | import com.panda.system.domin.SysUser; 5 | import com.panda.system.domin.vo.SysUserVo; 6 | 7 | import java.util.List; 8 | 9 | 10 | public interface SysUserMapper { 11 | List findAllUsers(SysUser sysUser); 12 | 13 | SysUser findUserById(Long id); 14 | 15 | /** 16 | * jwt校验 17 | * @param userName 18 | * @return 19 | */ 20 | SysUser findUserByName(String userName); 21 | 22 | int addUser(SysUser sysUser); 23 | 24 | int updateUser(SysUser sysUser); 25 | 26 | int deleteUser(Long id); 27 | 28 | LoginUser findLoginUser(SysUserVo sysUserVo); 29 | 30 | /** 31 | * 查出指定名字用户的所有id 32 | * 33 | * @param userName 34 | * @return 35 | */ 36 | List checkUserNameUnique(String userName); 37 | } 38 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/SysBillService.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service; 2 | 3 | import com.panda.system.domin.SysBill; 4 | 5 | import java.util.List; 6 | 7 | 8 | public interface SysBillService { 9 | 10 | List findAllBills(SysBill sysBill); 11 | 12 | SysBill findBillById(Long id); 13 | 14 | Object addBill(SysBill sysBill); 15 | 16 | int updateBill(SysBill sysBill); 17 | 18 | int deleteBill(Long[] ids); 19 | 20 | List findTimeoutBill(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/SysCinemaService.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service; 2 | 3 | import com.panda.system.domin.SysCinema; 4 | 5 | 6 | public interface SysCinemaService { 7 | 8 | SysCinema findCinema(); 9 | 10 | int updateCinema(SysCinema sysCinema); 11 | 12 | SysCinema findCinemaById(Long id); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/SysHallService.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service; 2 | 3 | import com.panda.system.domin.SysHall; 4 | 5 | import java.util.List; 6 | 7 | 8 | public interface SysHallService { 9 | List findAllHalls(SysHall sysHall); 10 | 11 | SysHall findHallById(SysHall sysHall); 12 | 13 | int addHall(SysHall sysHall); 14 | 15 | int updateHall(SysHall sysHall); 16 | 17 | int deleteHall(SysHall[] sysHall); 18 | } 19 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/SysMovieCategoryService.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service; 2 | 3 | import com.panda.system.domin.SysMovieCategory; 4 | import com.panda.system.domin.SysMovieToCategory; 5 | 6 | import java.util.List; 7 | 8 | 9 | public interface SysMovieCategoryService { 10 | List findAllCategorys(); 11 | 12 | SysMovieCategory findCategoryById(Long id); 13 | 14 | int addCategory(SysMovieCategory sysMovieCategory); 15 | 16 | int updateCategory(SysMovieCategory sysMovieCategory); 17 | 18 | int deleteCategory(Long[] ids); 19 | 20 | int addMovieToCategory(SysMovieToCategory sysMovieToCategory); 21 | 22 | int deleteMovieToCategory(SysMovieToCategory sysMovieToCategory); 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/SysMovieService.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service; 2 | 3 | import com.panda.system.domin.SysMovie; 4 | import com.panda.system.domin.vo.SysMovieVo; 5 | 6 | import java.util.List; 7 | 8 | 9 | public interface SysMovieService { 10 | 11 | List findAllMovies(SysMovieVo sysMovieVo); 12 | 13 | SysMovie findMovieById(Long id); 14 | 15 | SysMovie findOneMovie(Long id); 16 | 17 | int addMovie(SysMovie sysMovie); 18 | 19 | int updateMovie(SysMovie sysMovie); 20 | 21 | int deleteMovie(Long[] ids); 22 | 23 | //获取单个影院上映的所有电影信息 24 | // List findByCinemaId(Long id); 25 | 26 | 27 | //获取各种榜单 28 | List totalBoxOfficeList(); 29 | 30 | List domesticBoxOfficeList(); 31 | 32 | List foreignBoxOfficeList(); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/SysResourceService.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service; 2 | 3 | import com.panda.system.domin.SysResource; 4 | 5 | import java.util.List; 6 | 7 | 8 | public interface SysResourceService { 9 | List findAllResources(); 10 | 11 | List findWithChildren(); 12 | 13 | List findAllWithAllChildren(); 14 | 15 | SysResource findResourceById(Long id); 16 | 17 | int addResource(SysResource sysResource); 18 | 19 | int updateResource(SysResource sysResource); 20 | 21 | int deleteResource(Long[] ids); 22 | } 23 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/SysRoleService.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service; 2 | 3 | import com.panda.system.domin.SysRole; 4 | 5 | import java.util.List; 6 | 7 | 8 | public interface SysRoleService { 9 | List findAllRoles(); 10 | 11 | SysRole findRoleById(Long id); 12 | 13 | int addRole(SysRole sysRole); 14 | 15 | int updateRole(SysRole sysRole); 16 | 17 | int deleteRole(Long[] ids); 18 | 19 | int allotRight(Long roleId, Long[] resourceIds); 20 | } 21 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/SysSessionService.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service; 2 | 3 | import com.panda.system.domin.SysSession; 4 | import com.panda.system.domin.vo.SysSessionVo; 5 | 6 | import java.util.List; 7 | 8 | 9 | public interface SysSessionService { 10 | 11 | List findByVo(SysSessionVo sysSessionVo); 12 | 13 | List findSessionByMovieIdOrHallId(SysSession sysSession); 14 | 15 | SysSession findSessionById(Long id); 16 | 17 | SysSession findOneSession(Long id); 18 | 19 | int addSession(SysSession sysSession); 20 | 21 | int updateSession(SysSession sysSession); 22 | 23 | int deleteSession(Long[] id); 24 | 25 | List findSessionByMovieId(Long movieId); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/SysUserService.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service; 2 | 3 | import com.panda.system.domin.LoginUser; 4 | import com.panda.system.domin.SysUser; 5 | import com.panda.system.domin.vo.SysUserVo; 6 | 7 | import java.util.List; 8 | 9 | 10 | public interface SysUserService { 11 | List findAllUsers(SysUser sysUser); 12 | 13 | SysUser findUserById(Long id); 14 | 15 | SysUser findUserByName(String userName); 16 | 17 | int addUser(SysUser sysUser); 18 | 19 | int updateUser(SysUser sysUser); 20 | 21 | int deleteUser(Long[] ids); 22 | 23 | LoginUser login(SysUserVo sysUserVo); 24 | 25 | LoginUser findLoginUser(SysUserVo sysUserVo); 26 | 27 | boolean isUserNameUnique(String userName, Long userId); 28 | } 29 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/impl/SysBillServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service.impl; 2 | 3 | import com.panda.system.domin.SysBill; 4 | import com.panda.system.mapper.SysBillMapper; 5 | import com.panda.system.service.SysBillService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | import java.util.List; 10 | 11 | 12 | @Service 13 | public class SysBillServiceImpl implements SysBillService { 14 | 15 | @Autowired 16 | private SysBillMapper sysBillMapper; 17 | 18 | @Override 19 | public List findAllBills(SysBill sysBill) { 20 | return sysBillMapper.findAllBills(sysBill); 21 | } 22 | 23 | @Override 24 | public SysBill findBillById(Long id) { 25 | return sysBillMapper.findBillById(id); 26 | } 27 | 28 | @Override 29 | public Object addBill(SysBill sysBill) { 30 | int rows = sysBillMapper.addBill(sysBill); 31 | return rows > 0 ? sysBill : rows; 32 | } 33 | 34 | @Override 35 | public int updateBill(SysBill sysBill) { 36 | return sysBillMapper.updateBill(sysBill); 37 | } 38 | 39 | @Override 40 | public int deleteBill(Long[] ids) { 41 | int rows = 0; 42 | for (Long id : ids) { 43 | rows += sysBillMapper.deleteBill(id); 44 | } 45 | return rows; 46 | } 47 | 48 | @Override 49 | public List findTimeoutBill() { 50 | return sysBillMapper.findTimeoutBill(); 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/impl/SysCinemaServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service.impl; 2 | 3 | import com.panda.system.domin.SysCinema; 4 | import com.panda.system.mapper.SysCinemaMapper; 5 | import com.panda.system.service.SysCinemaService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | 10 | @Service 11 | public class SysCinemaServiceImpl implements SysCinemaService { 12 | 13 | @Autowired 14 | private SysCinemaMapper sysCinemaMapper; 15 | 16 | @Override 17 | public SysCinema findCinema() { 18 | return sysCinemaMapper.findCinema(); 19 | } 20 | 21 | @Override 22 | public int updateCinema(SysCinema sysCinema) { 23 | return sysCinemaMapper.updateCinema(sysCinema); 24 | } 25 | 26 | @Override 27 | public SysCinema findCinemaById(Long id) { 28 | return sysCinemaMapper.findCinemaById(id); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/impl/SysHallServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service.impl; 2 | 3 | import com.panda.system.domin.SysHall; 4 | import com.panda.system.mapper.SysHallMapper; 5 | import com.panda.system.service.SysHallService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | import java.util.List; 10 | 11 | 12 | @Service 13 | public class SysHallServiceImpl implements SysHallService { 14 | 15 | @Autowired 16 | private SysHallMapper sysHallMapper; 17 | 18 | @Override 19 | public List findAllHalls(SysHall sysHall) { 20 | return sysHallMapper.findAllHalls(sysHall); 21 | } 22 | 23 | @Override 24 | public SysHall findHallById(SysHall sysHall) { 25 | return sysHallMapper.findHallById(sysHall); 26 | } 27 | 28 | @Override 29 | public int addHall(SysHall sysHall) { 30 | return sysHallMapper.addHall(sysHall); 31 | } 32 | 33 | @Override 34 | public int updateHall(SysHall sysHall) { 35 | return sysHallMapper.updateHall(sysHall); 36 | } 37 | 38 | @Override 39 | public int deleteHall(SysHall[] sysHalls) { 40 | int rows = 0; 41 | for (SysHall sysHall : sysHalls) { 42 | rows += sysHallMapper.deleteHall(sysHall); 43 | } 44 | return rows; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/impl/SysMovieCategoryServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service.impl; 2 | 3 | import com.panda.system.domin.SysMovieCategory; 4 | import com.panda.system.domin.SysMovieToCategory; 5 | import com.panda.system.mapper.SysMovieCategoryMapper; 6 | import com.panda.system.service.SysMovieCategoryService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | import java.util.List; 11 | 12 | 13 | @Service 14 | public class SysMovieCategoryServiceImpl implements SysMovieCategoryService { 15 | 16 | @Autowired 17 | private SysMovieCategoryMapper sysMovieCategoryMapper; 18 | 19 | @Override 20 | public List findAllCategorys() { 21 | return sysMovieCategoryMapper.findAllCategorys(); 22 | } 23 | 24 | @Override 25 | public SysMovieCategory findCategoryById(Long id) { 26 | return sysMovieCategoryMapper.findCategoryById(id); 27 | } 28 | 29 | @Override 30 | public int addCategory(SysMovieCategory sysMovieCategory) { 31 | return sysMovieCategoryMapper.addCategory(sysMovieCategory); 32 | } 33 | 34 | @Override 35 | public int updateCategory(SysMovieCategory sysMovieCategory) { 36 | return sysMovieCategoryMapper.updateCategory(sysMovieCategory); 37 | } 38 | 39 | @Override 40 | public int deleteCategory(Long[] ids) { 41 | int rows = 0; 42 | for (Long id : ids) { 43 | rows += sysMovieCategoryMapper.deleteCategory(id); 44 | } 45 | return rows; 46 | } 47 | 48 | 49 | @Override 50 | public int addMovieToCategory(SysMovieToCategory sysMovieToCategory) { 51 | return sysMovieCategoryMapper.addMovieToCategory(sysMovieToCategory); 52 | } 53 | 54 | @Override 55 | public int deleteMovieToCategory(SysMovieToCategory sysMovieToCategory) { 56 | return sysMovieCategoryMapper.deleteMovieToCategory(sysMovieToCategory); 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/impl/SysMovieServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service.impl; 2 | 3 | import com.panda.system.domin.SysMovie; 4 | import com.panda.system.domin.vo.SysMovieVo; 5 | import com.panda.system.mapper.SysMovieMapper; 6 | import com.panda.system.service.SysMovieService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | import java.util.List; 11 | 12 | 13 | @Service 14 | public class SysMovieServiceImpl implements SysMovieService { 15 | 16 | @Autowired 17 | private SysMovieMapper sysMovieMapper; 18 | 19 | @Override 20 | public List findAllMovies(SysMovieVo sysMovieVo) { 21 | return sysMovieMapper.findAllMovies(sysMovieVo); 22 | } 23 | 24 | @Override 25 | public SysMovie findMovieById(Long id) { 26 | return sysMovieMapper.findMovieById(id); 27 | } 28 | 29 | @Override 30 | public SysMovie findOneMovie(Long id) { 31 | return sysMovieMapper.findOneMovie(id); 32 | } 33 | 34 | @Override 35 | public int addMovie(SysMovie sysMovie) { 36 | return sysMovieMapper.addMovie(sysMovie); 37 | } 38 | 39 | @Override 40 | public int updateMovie(SysMovie sysMovie) { 41 | return sysMovieMapper.updateMovie(sysMovie); 42 | } 43 | 44 | @Override 45 | public int deleteMovie(Long[] ids) { 46 | int rows = 0; 47 | for (Long id : ids) { 48 | rows += sysMovieMapper.deleteMovie(id); 49 | } 50 | return rows; 51 | } 52 | 53 | // @Override 54 | // public List findByCinemaId(Long id) { 55 | // return sysMovieMapper.findByCinemaId(id); 56 | // } 57 | 58 | /** 59 | * 总票房榜 60 | * 61 | * @return 62 | */ 63 | @Override 64 | public List totalBoxOfficeList() { 65 | return sysMovieMapper.totalBoxOfficeList(); 66 | } 67 | 68 | /** 69 | * 国内票房榜 已上映的国内电影里,按票房取前10 国内电影 movieArea in (港台+大陆) 70 | * 71 | * @return 72 | */ 73 | @Override 74 | public List domesticBoxOfficeList() { 75 | return sysMovieMapper.domesticBoxOfficeList(); 76 | } 77 | 78 | /** 79 | * 国外票房榜 已上映的国外电影里,按票房取前10 国外电影 movieArea not in (港台+大陆) 80 | * 81 | * @return 82 | */ 83 | @Override 84 | public List foreignBoxOfficeList() { 85 | return sysMovieMapper.foreignBoxOfficeList(); 86 | } 87 | 88 | } 89 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/impl/SysResourceServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service.impl; 2 | 3 | import com.panda.system.domin.SysResource; 4 | import com.panda.system.mapper.SysResourceMapper; 5 | import com.panda.system.service.SysResourceService; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | import java.util.List; 11 | 12 | 13 | @Slf4j 14 | @Service 15 | public class SysResourceServiceImpl implements SysResourceService { 16 | 17 | @Autowired 18 | private SysResourceMapper sysResourceMapper; 19 | 20 | @Override 21 | public List findAllResources() { 22 | return sysResourceMapper.findAllResources(); 23 | } 24 | 25 | @Override 26 | public List findWithChildren() { 27 | return sysResourceMapper.findWithChildren(); 28 | } 29 | 30 | @Override 31 | public List findAllWithAllChildren() { 32 | return sysResourceMapper.findAllWithAllChildren(); 33 | } 34 | 35 | @Override 36 | public SysResource findResourceById(Long id) { 37 | return sysResourceMapper.findResourceById(id); 38 | } 39 | 40 | @Override 41 | public int addResource(SysResource sysResource) { 42 | if (sysResource.getParentId() == 0) { 43 | sysResource.setLevel(1); 44 | } else { 45 | SysResource parent = this.findResourceById(sysResource.getParentId()); 46 | if (parent != null) { 47 | sysResource.setLevel(parent.getLevel() + 1); 48 | } 49 | } 50 | return sysResourceMapper.addResource(sysResource); 51 | } 52 | 53 | @Override 54 | public int updateResource(SysResource sysResource) { 55 | if (sysResource.getParentId() == 0) { 56 | sysResource.setLevel(1); 57 | } else { 58 | SysResource parent = this.findResourceById(sysResource.getParentId()); 59 | if (parent != null) { 60 | sysResource.setLevel(parent.getLevel() + 1); 61 | } 62 | } 63 | log.debug(sysResource.toString()); 64 | return sysResourceMapper.updateResource(sysResource); 65 | } 66 | 67 | @Override 68 | public int deleteResource(Long[] ids) { 69 | int rows = 0; 70 | for (Long id : ids) { 71 | rows += sysResourceMapper.deleteResource(id); 72 | } 73 | return rows; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/impl/SysRoleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service.impl; 2 | 3 | import com.panda.system.domin.SysRole; 4 | import com.panda.system.mapper.SysRoleMapper; 5 | import com.panda.system.service.SysRoleService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | import java.util.HashSet; 10 | import java.util.List; 11 | 12 | 13 | @Service 14 | public class SysRoleServiceImpl implements SysRoleService { 15 | 16 | @Autowired 17 | private SysRoleMapper sysRoleMapper; 18 | 19 | @Override 20 | public List findAllRoles() { 21 | return sysRoleMapper.findAllRoles(); 22 | } 23 | 24 | @Override 25 | public SysRole findRoleById(Long id) { 26 | return sysRoleMapper.findRoleById(id); 27 | } 28 | 29 | @Override 30 | public int addRole(SysRole sysRole) { 31 | return sysRoleMapper.addRole(sysRole); 32 | } 33 | 34 | @Override 35 | public int updateRole(SysRole sysRole) { 36 | return sysRoleMapper.updateRole(sysRole); 37 | } 38 | 39 | @Override 40 | public int deleteRole(Long[] ids) { 41 | int rows = 0; 42 | for (Long id : ids) { 43 | rows += sysRoleMapper.deleteRole(id); 44 | } 45 | return rows; 46 | } 47 | 48 | @Override 49 | public int allotRight(Long roleId, Long[] keys) { 50 | int rows = 0; 51 | HashSet originResources = new HashSet<>(sysRoleMapper.findAllRights(roleId)); 52 | 53 | for (Long id : keys) { 54 | if (originResources.contains(id)) { 55 | originResources.remove(id); 56 | } else { 57 | rows += sysRoleMapper.addRight(roleId, id); 58 | } 59 | } 60 | for (Long id : originResources) { 61 | rows += sysRoleMapper.deleteRight(roleId, id); 62 | } 63 | return rows; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /panda-system/src/main/java/com/panda/system/service/impl/SysSessionServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.panda.system.service.impl; 2 | 3 | import com.panda.system.domin.SysSession; 4 | import com.panda.system.domin.vo.SysSessionVo; 5 | import com.panda.system.mapper.SysSessionMapper; 6 | import com.panda.system.service.SysSessionService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | import java.util.List; 11 | 12 | 13 | @Service 14 | public class SysSessionServiceImpl implements SysSessionService { 15 | 16 | @Autowired 17 | private SysSessionMapper sysSessionMapper; 18 | 19 | @Override 20 | public List findByVo(SysSessionVo sysSessionVo) { 21 | return sysSessionMapper.findByVo(sysSessionVo); 22 | } 23 | 24 | @Override 25 | public List findSessionByMovieIdOrHallId(SysSession sysSession) { 26 | return sysSessionMapper.findSessionByMovieIdOrHallId(sysSession); 27 | } 28 | 29 | @Override 30 | public SysSession findSessionById(Long id) { 31 | return sysSessionMapper.findSessionById(id); 32 | } 33 | 34 | @Override 35 | public SysSession findOneSession(Long id) { 36 | return sysSessionMapper.findOneSession(id); 37 | } 38 | 39 | @Override 40 | public int addSession(SysSession sysSession) { 41 | return sysSessionMapper.addSession(sysSession); 42 | } 43 | 44 | @Override 45 | public int updateSession(SysSession sysSession) { 46 | return sysSessionMapper.updateSession(sysSession); 47 | } 48 | 49 | @Override 50 | public int deleteSession(Long[] ids) { 51 | int rows = 0; 52 | for (Long id : ids) { 53 | rows += sysSessionMapper.deleteSession(id); 54 | } 55 | return rows; 56 | } 57 | 58 | @Override 59 | public List findSessionByMovieId(Long movieId) { 60 | return sysSessionMapper.findSessionByMovieId(movieId); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /panda-system/src/main/resources/mapper/SysCinemaMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 23 | 24 | 25 | update sys_cinema set 26 | cinema_name = #{cinemaName}, cinema_picture = #{cinemaPicture}, 27 | cinema_address = #{cinemaAddress}, cinema_phone = #{cinemaPhone}, 28 | work_start_time = #{workStartTime}, work_end_time = #{workEndTime}, 29 | hall_category_list = #{hallCategoryList} 30 | where cinema_id = #{cinemaId} 31 | 32 | 33 | 36 | 37 | -------------------------------------------------------------------------------- /panda-system/src/main/resources/mapper/SysHallMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 25 | 26 | 29 | 30 | 31 | insert into sys_hall 32 | (hall_name, hall_category, row_start, row_nums, seat_nums_row, seat_nums, seat_state) 33 | values 34 | (#{hallName}, #{hallCategory}, 35 | #{rowStart}, #{rowNums}, #{seatNumsRow}, #{seatNums}, #{seatState}) 36 | 37 | 38 | 39 | update sys_hall set 40 | hall_name = #{hallName}, 41 | hall_category = #{hallCategory}, 42 | row_start = #{rowStart}, 43 | row_nums = #{rowNums}, 44 | seat_nums_row = #{seatNumsRow}, 45 | seat_nums = #{seatNums}, 46 | seat_state = #{seatState} 47 | where hall_id = #{hallId} 48 | 49 | 50 | 51 | update sys_hall set del_state = 1 where hall_id = #{hallId} 52 | 53 | 54 | -------------------------------------------------------------------------------- /panda-system/src/main/resources/mapper/SysMovieCategoryMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 13 | 14 | 18 | 19 | 20 | insert into sys_movie_category(movie_category_name) values(#{movieCategoryName}) 21 | 22 | 23 | 24 | update sys_movie_category set movie_category_name = #{movieCategoryName} where movie_category_id = #{movieCategoryId} 25 | 26 | 27 | 28 | delete from sys_movie_category where movie_category_id = #{movieCategoryId} 29 | 30 | 31 | 32 | insert into sys_movie_to_category values(#{movieId}, #{movieCategoryId}) 33 | 34 | 35 | 36 | delete from sys_movie_to_category where movie_id = #{movieId} and movie_category_id = #{movieCategoryId} 37 | 38 | 39 | -------------------------------------------------------------------------------- /panda-ui/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /panda-ui/.editorconfig: -------------------------------------------------------------------------------- 1 | 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | -------------------------------------------------------------------------------- /panda-ui/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | -------------------------------------------------------------------------------- /panda-ui/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /panda-ui/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "panda-ui", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build" 8 | }, 9 | "dependencies": { 10 | "core-js": "^3.6.5", 11 | "crypto-js": "^4.0.0", 12 | "element-ui": "^2.4.5", 13 | "moment": "^2.29.1", 14 | "nprogress": "^0.2.0", 15 | "vue": "^2.6.11", 16 | "vue-resource": "^1.5.1", 17 | "vue-router": "^3.2.0", 18 | "vuex": "^3.4.0" 19 | }, 20 | "devDependencies": { 21 | "@vue/cli-plugin-babel": "^4.5.0", 22 | "@vue/cli-service": "^4.5.0", 23 | "axios": "^0.18.1", 24 | "echarts": "^5.1.1", 25 | "node-sass": "^4.9.2", 26 | "sass-loader": "^7.0.3", 27 | "vue-cli-plugin-axios": "0.0.4", 28 | "vue-cli-plugin-element": "^1.0.1", 29 | "vue-template-compiler": "^2.6.11" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /panda-ui/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-ui/public/favicon.ico -------------------------------------------------------------------------------- /panda-ui/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /panda-ui/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | 19 | 28 | -------------------------------------------------------------------------------- /panda-ui/src/assets/404images/bg_purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-ui/src/assets/404images/bg_purple.png -------------------------------------------------------------------------------- /panda-ui/src/assets/404images/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panda-ui/src/assets/404images/rocket.svg: -------------------------------------------------------------------------------- 1 | 5 | 6 | rocket_1 -------------------------------------------------------------------------------- /panda-ui/src/assets/css/fonts/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face {font-family: "iconfont"; 2 | src: url('iconfont.eot?t=1607409819552'); /* IE9 */ 3 | src: url('iconfont.eot?t=1607409819552#iefix') format('embedded-opentype'), /* IE6-IE8 */ 4 | url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAMMAAsAAAAABuAAAALAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDBgqBSIFYATYCJAMMCwgABCAFhG0HNRsdBhEVlDlkH0pQAE4AmBGSSIIGggEAAACAeIDW/f+Z3bn3Af5wpNDEaDaohF8ZhegsHM1pCYzoCRWSdWXPOnCf8OWhpMq2ylYp2vyEnJyeAZfT/9ocyDzLcptj8JiACQa6B0ZRogWUIDeMXeAS7hOQr1kPYeToiTPliqxlAWHjujXL5OaiosgKuYJszd4onJCRmxxMHis4Hn4/fGGFXBKZlLV26upRKw19n/dhQ7r//9FCnxAjgIczSNEDkbC4NjtXKjBOKl8b2yuzoiCZK/H/P6FUV2ftPzwSgZBl1ReCLiiX8L7pikj4EMvv+pEUZBExEPMRvfI9iSS3trB0TVE48OzQE3ay/1ar+NCdYnrgbrsgHHh++KlCweHb/vPnq2fPlk+ezJ8+XeQH57j6dE7B0+ed4rNnk/sds4GzZu1wWga+ujau5n91R5ddM66kPFt37tw3XBturqj+9+MwJixeGEaF0b5pTLBLliw02ii47mzf+4Kwa3uYX1S+q3iBTKldJWVFYX7RZylrYdoh7QNpu+TRT/6Nv22Hl5QM/JpbEMHrv97l0Br1z+VKYLJfKus5FHWFZUujKnWlpj/VOtKdABvy8Z8VLPduvLHqtt1Bbk7GkMjRhFSuDmSk90BGgZ7IymUdgnzdTQ4XqCCUhZiHbm4AQakHEsXuIVXqSUb6DzKq/SKrNJSRb3aoOLNApxC2Rgi0FXrg7CF0KWOOQ7Wixin668QWWUXIXaKQYQJMzSgWJpihmGOD3PiWUgyYoBTG4DFMEoJcUISu0gKl8q6us7oXaS6lhZYRBGRTkAc49kDIRTLMn6y0Sp+fQr61hE20tNXEl5AghdMDk8boQU60Wa+2e3lG2vBZFIUBjEBSYAxmoUSCgLx+VgS5FE0wIp3r0u1xrK9WW1+ffkAJ68K6Kg1JSEMUN5IbV7ZIFIUC') format('woff2'), 5 | url('iconfont.woff?t=1607409819552') format('woff'), 6 | url('iconfont.ttf?t=1607409819552') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ 7 | url('iconfont.svg?t=1607409819552#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family: "iconfont" !important; 12 | font-size: 16px; 13 | font-style: normal; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | .icon-lock:before { 19 | content: "\e76b"; 20 | } 21 | 22 | .icon-user:before { 23 | content: "\e609"; 24 | } 25 | 26 | -------------------------------------------------------------------------------- /panda-ui/src/assets/css/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-ui/src/assets/css/fonts/iconfont.eot -------------------------------------------------------------------------------- /panda-ui/src/assets/css/fonts/iconfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | Created by iconfont 9 | 10 | 11 | 12 | 13 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /panda-ui/src/assets/css/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-ui/src/assets/css/fonts/iconfont.ttf -------------------------------------------------------------------------------- /panda-ui/src/assets/css/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-ui/src/assets/css/fonts/iconfont.woff -------------------------------------------------------------------------------- /panda-ui/src/assets/css/global.css: -------------------------------------------------------------------------------- 1 | /*全局样式*/ 2 | 3 | html, body, #app{ 4 | padding: 0px; 5 | margin: 0px; 6 | height: 100%; 7 | } 8 | 9 | .el-breadcrumb{ 10 | margin: 15px 0 10px 15px; 11 | /*margin-bottom: 15px;*/ 12 | font-size: 10px; 13 | } 14 | 15 | .el-card{ 16 | box-shadow: 0 1px 1px rgba(0,0,0,0.15) !important; 17 | border-top: gray solid 0; 18 | border-radius: 0px !important; 19 | } 20 | 21 | .board{ 22 | margin-top: 0px; 23 | border-bottom: gray solid 0; 24 | background-color: white; 25 | padding: 5px 5px; 26 | } 27 | 28 | .el-table{ 29 | margin-top: 15px; 30 | font-size: 40px; 31 | } 32 | 33 | .el-pagination { 34 | margin-top: 15px; 35 | } -------------------------------------------------------------------------------- /panda-ui/src/assets/js/permission.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | /**权限指令**/ 3 | const has = Vue.directive('has', { 4 | // 当被绑定的元素插入到 DOM 中时…… 5 | inserted: function (el, binding, vnode) { 6 | let btnPermission = ''; 7 | // 获取路由按钮权限,路由的js文件中配置,是操作所需要的权限 8 | btnPermission = vnode.context.$route.meta.btnPermission; 9 | if (!Vue.prototype.$_has(btnPermission)) { 10 | console.log("not have this permission"); 11 | el.remove() 12 | } 13 | } 14 | }); 15 | // 权限检查方法 16 | Vue.prototype.$_has = function (value) { 17 | let btnPermission = sessionStorage.getItem("btnPermission"); 18 | if (btnPermission == undefined || btnPermission == null) { 19 | return false; 20 | } 21 | // value 是路由中所需要的权限,btnPermission是实际拥有的权限,在Login.vue登录时授权 22 | // console.log(value + " === test === " + btnPermission) 23 | let res = value == btnPermission 24 | if(res) return true 25 | return false 26 | }; 27 | 28 | export {has} -------------------------------------------------------------------------------- /panda-ui/src/assets/login-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-ui/src/assets/login-background.jpg -------------------------------------------------------------------------------- /panda-ui/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-ui/src/assets/logo.png -------------------------------------------------------------------------------- /panda-ui/src/assets/welcome.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-ui/src/assets/welcome.jpg -------------------------------------------------------------------------------- /panda-ui/src/components/global_variable.vue: -------------------------------------------------------------------------------- 1 | 2 | 10 | -------------------------------------------------------------------------------- /panda-ui/src/element-variables.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Write your variables here. All available variables can be 3 | found in element-ui/packages/theme-chalk/src/common/var.scss. 4 | For example, to overwrite the theme color: 5 | */ 6 | $--color-primary: #409EFF; 7 | 8 | /* icon font path, required */ 9 | $--font-path: '~element-ui/lib/theme-chalk/fonts'; 10 | 11 | @import "~element-ui/packages/theme-chalk/src/index"; 12 | -------------------------------------------------------------------------------- /panda-ui/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import './plugins/axios' 3 | import App from './App.vue' 4 | import router from './router' 5 | import store from './store' 6 | import './plugins/element.js' 7 | // 导入字体图标 8 | import './assets/css/fonts/iconfont.css' 9 | import {Message} from 'element-ui' 10 | import has from './assets/js/permission' 11 | import global_variable from "@/components/global_variable"; 12 | // import echarts from 'echarts' 13 | // Vue.prototype.$echarts = echarts 14 | 15 | Vue.prototype.global = global_variable 16 | 17 | axios.defaults.baseURL = 'http://127.0.0.1:8181/' 18 | axios.interceptors.request.use(config => { 19 | config.headers.Token = window.sessionStorage.getItem('token') 20 | return config 21 | }) 22 | 23 | // 状态码错误信息 24 | const codeMessage = { 25 | 401: '用户没有权限,请登录', 26 | 403: '用户没有权限,请联系管理员', 27 | 404: '访问的资源不存在', 28 | 406: '请求的格式不可得', 29 | 410: '请求的资源被永久删除,且不会再得到的', 30 | 422: '当创建一个对象时,发生一个验证错误', 31 | 500: '服务器发生错误,请检查服务器', 32 | 502: '网关错误', 33 | 503: '服务不可用,服务器暂时过载或维护', 34 | 504: '网关超时' 35 | }; 36 | 37 | axios.interceptors.response.use(response => { 38 | return response 39 | }, error => { 40 | if(error){ 41 | if(!error.response){ 42 | return console.log('Error', error.message); 43 | } 44 | //获取状态码 45 | const status = error.response.status; 46 | const errortext = codeMessage[status] || error.response.statusText; 47 | 48 | //提示错误信息 49 | Message.error(errortext) 50 | 51 | // 错误状态处理 52 | if (status === 401) { 53 | router.push('/login') 54 | } else if (status === 403) { 55 | router.push('/login') 56 | } else if (status >= 404 && status < 422) { 57 | router.push('/404') 58 | } 59 | } 60 | return Promise.reject(error) 61 | }) 62 | 63 | Vue.config.productionTip = false 64 | 65 | new Vue({ 66 | router, 67 | store, 68 | render: h => h(App) 69 | }).$mount('#app') 70 | -------------------------------------------------------------------------------- /panda-ui/src/plugins/axios.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import Vue from 'vue'; 4 | import axios from "axios"; 5 | 6 | // Full config: https://github.com/axios/axios#request-config 7 | // axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || ''; 8 | // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; 9 | // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; 10 | 11 | let config = { 12 | // baseURL: process.env.baseURL || process.env.apiUrl || "" 13 | // timeout: 60 * 1000, // Timeout 14 | // withCredentials: true, // Check cross-site Access-Control 15 | }; 16 | 17 | const _axios = axios.create(config); 18 | 19 | _axios.interceptors.request.use( 20 | function(config) { 21 | // Do something before request is sent 22 | return config; 23 | }, 24 | function(error) { 25 | // Do something with request error 26 | return Promise.reject(error); 27 | } 28 | ); 29 | 30 | // Add a response interceptor 31 | _axios.interceptors.response.use( 32 | function(response) { 33 | // Do something with response data 34 | return response; 35 | }, 36 | function(error) { 37 | // Do something with response error 38 | return Promise.reject(error); 39 | } 40 | ); 41 | 42 | Plugin.install = function(Vue, options) { 43 | Vue.axios = _axios; 44 | window.axios = _axios; 45 | Object.defineProperties(Vue.prototype, { 46 | axios: { 47 | get() { 48 | return _axios; 49 | } 50 | }, 51 | $axios: { 52 | get() { 53 | return _axios; 54 | } 55 | }, 56 | }); 57 | }; 58 | 59 | Vue.use(Plugin) 60 | 61 | export default Plugin; 62 | -------------------------------------------------------------------------------- /panda-ui/src/plugins/element.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Element from 'element-ui' 3 | import '../element-variables.scss' 4 | 5 | Vue.use(Element) 6 | -------------------------------------------------------------------------------- /panda-ui/src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import VueRouter from 'vue-router' 3 | import { Message }from 'element-ui' 4 | import NProgress from 'nprogress' 5 | import 'nprogress/nprogress.css' 6 | 7 | import Login from '../views/Login'; 8 | import Welcome from "../views/Welcome"; 9 | import Home from '../views/Home.vue'; 10 | import CinemaInfo from "../views/cinema/CinemaInfo"; 11 | import MovieInfo from "../views/movie/MovieInfo"; 12 | import MovieCategory from "../views/movie/MovieCategory"; 13 | import HallInfo from "../views/hall/HallInfo"; 14 | import SessionInfo from "../views/hall/SessionInfo"; 15 | import BillInfo from "../views/bill/BillInfo"; 16 | import UserInfo from "../views/user/UserInfo"; 17 | import RoleInfo from "../views/role/RoleInfo"; 18 | import ResourceInfo from "../views/role/ResourceInfo"; 19 | import Error404 from "../views/Error404"; 20 | 21 | Vue.use(VueRouter) 22 | 23 | const routes = [ 24 | { 25 | path: '/', 26 | component: Login, 27 | redirect: '/login' 28 | }, 29 | { 30 | path: '/login', 31 | component: Login 32 | }, 33 | { 34 | path: '/home', 35 | component: Home, 36 | redirect: '/welcome', 37 | children: [ 38 | { path: '/welcome', component: Welcome }, 39 | { path: '/cinema', component: CinemaInfo}, 40 | { path: '/movie', component: MovieInfo}, 41 | { path: '/movieCategory', component: MovieCategory}, 42 | { path: '/hall', component: HallInfo}, 43 | { path: '/session', component: SessionInfo}, 44 | { path: '/user', component: UserInfo}, 45 | { path: '/bill', component: BillInfo}, 46 | { path: '/role', component: RoleInfo}, 47 | { path: '/resource', component: ResourceInfo} 48 | ] 49 | }, 50 | { 51 | path: '/*', 52 | component: Error404 53 | } 54 | ] 55 | 56 | const router = new VueRouter({ 57 | routes, 58 | mode: 'history', 59 | }) 60 | 61 | //挂载路由导航守卫 62 | router.beforeEach((to, from, next) =>{ 63 | //to 将要访问的路径 64 | //from 从哪个页面来 65 | //next 一个放行函数 66 | 67 | if(to.path === '/login' || to.path === '/404') return next(); 68 | 69 | //顶部进度条 70 | NProgress.start() 71 | //获取token 72 | const token = window.sessionStorage.getItem("token") 73 | if(!token){ 74 | Message.error('抱歉,请先登录') 75 | return next('/login'); 76 | } 77 | next(); 78 | }) 79 | 80 | router.afterEach(() => { 81 | NProgress.done() 82 | }) 83 | 84 | const originalPush = VueRouter.prototype.push 85 | VueRouter.prototype.push = function push(location){ 86 | return originalPush.call(this, location).catch(err => err) 87 | } 88 | 89 | 90 | export default router 91 | -------------------------------------------------------------------------------- /panda-ui/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | 4 | Vue.use(Vuex) 5 | 6 | export default new Vuex.Store({ 7 | state: { 8 | }, 9 | mutations: { 10 | }, 11 | actions: { 12 | }, 13 | modules: { 14 | } 15 | }) 16 | -------------------------------------------------------------------------------- /panda-ui/src/views/Welcome.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /panda-ui/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | devServer: { 3 | port: 8888 4 | }, 5 | publicPath:process.env.NODE_ENV === 'production' ? '/panda-ui' : '/' 6 | } 7 | -------------------------------------------------------------------------------- /panda-user/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /panda-user/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | -------------------------------------------------------------------------------- /panda-user/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /panda-user/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "panda-user", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build" 8 | }, 9 | "dependencies": { 10 | "core-js": "^3.6.5", 11 | "crypto-js": "^4.0.0", 12 | "element-ui": "^2.4.5", 13 | "moment": "^2.29.1", 14 | "pinyin": "^2.9.1", 15 | "vue": "^2.6.11", 16 | "vue-router": "^3.2.0", 17 | "vuex": "^3.4.0" 18 | }, 19 | "devDependencies": { 20 | "@vue/cli-plugin-babel": "^4.5.0", 21 | "@vue/cli-service": "^4.5.0", 22 | "axios": "^0.18.0", 23 | "node-sass": "^4.9.2", 24 | "sass-loader": "^7.0.3", 25 | "vue-cli-plugin-axios": "0.0.4", 26 | "vue-cli-plugin-element": "^1.0.1", 27 | "vue-template-compiler": "^2.6.11" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /panda-user/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/public/favicon.ico -------------------------------------------------------------------------------- /panda-user/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /panda-user/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | 14 | 17 | -------------------------------------------------------------------------------- /panda-user/src/assets/404images/bg_purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/404images/bg_purple.png -------------------------------------------------------------------------------- /panda-user/src/assets/404images/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panda-user/src/assets/404images/rocket.svg: -------------------------------------------------------------------------------- 1 | 5 | 6 | rocket_1 -------------------------------------------------------------------------------- /panda-user/src/assets/bill-invalid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/bill-invalid.png -------------------------------------------------------------------------------- /panda-user/src/assets/carousel1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/carousel1.jpg -------------------------------------------------------------------------------- /panda-user/src/assets/carousel2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/carousel2.jpg -------------------------------------------------------------------------------- /panda-user/src/assets/carousel3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/carousel3.jpg -------------------------------------------------------------------------------- /panda-user/src/assets/carousel4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/carousel4.jpg -------------------------------------------------------------------------------- /panda-user/src/assets/css/fonts/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face {font-family: "iconfont"; 2 | src: url('iconfont.eot?t=1607409819552'); /* IE9 */ 3 | src: url('iconfont.eot?t=1607409819552#iefix') format('embedded-opentype'), /* IE6-IE8 */ 4 | url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAMMAAsAAAAABuAAAALAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDBgqBSIFYATYCJAMMCwgABCAFhG0HNRsdBhEVlDlkH0pQAE4AmBGSSIIGggEAAACAeIDW/f+Z3bn3Af5wpNDEaDaohF8ZhegsHM1pCYzoCRWSdWXPOnCf8OWhpMq2ylYp2vyEnJyeAZfT/9ocyDzLcptj8JiACQa6B0ZRogWUIDeMXeAS7hOQr1kPYeToiTPliqxlAWHjujXL5OaiosgKuYJszd4onJCRmxxMHis4Hn4/fGGFXBKZlLV26upRKw19n/dhQ7r//9FCnxAjgIczSNEDkbC4NjtXKjBOKl8b2yuzoiCZK/H/P6FUV2ftPzwSgZBl1ReCLiiX8L7pikj4EMvv+pEUZBExEPMRvfI9iSS3trB0TVE48OzQE3ay/1ar+NCdYnrgbrsgHHh++KlCweHb/vPnq2fPlk+ezJ8+XeQH57j6dE7B0+ed4rNnk/sds4GzZu1wWga+ujau5n91R5ddM66kPFt37tw3XBturqj+9+MwJixeGEaF0b5pTLBLliw02ii47mzf+4Kwa3uYX1S+q3iBTKldJWVFYX7RZylrYdoh7QNpu+TRT/6Nv22Hl5QM/JpbEMHrv97l0Br1z+VKYLJfKus5FHWFZUujKnWlpj/VOtKdABvy8Z8VLPduvLHqtt1Bbk7GkMjRhFSuDmSk90BGgZ7IymUdgnzdTQ4XqCCUhZiHbm4AQakHEsXuIVXqSUb6DzKq/SKrNJSRb3aoOLNApxC2Rgi0FXrg7CF0KWOOQ7Wixin668QWWUXIXaKQYQJMzSgWJpihmGOD3PiWUgyYoBTG4DFMEoJcUISu0gKl8q6us7oXaS6lhZYRBGRTkAc49kDIRTLMn6y0Sp+fQr61hE20tNXEl5AghdMDk8boQU60Wa+2e3lG2vBZFIUBjEBSYAxmoUSCgLx+VgS5FE0wIp3r0u1xrK9WW1+ffkAJ68K6Kg1JSEMUN5IbV7ZIFIUC') format('woff2'), 5 | url('iconfont.woff?t=1607409819552') format('woff'), 6 | url('iconfont.ttf?t=1607409819552') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ 7 | url('iconfont.svg?t=1607409819552#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family: "iconfont" !important; 12 | font-size: 16px; 13 | font-style: normal; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | .icon-lock:before { 19 | content: "\e76b"; 20 | } 21 | 22 | .icon-user:before { 23 | content: "\e609"; 24 | } 25 | 26 | -------------------------------------------------------------------------------- /panda-user/src/assets/css/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/css/fonts/iconfont.eot -------------------------------------------------------------------------------- /panda-user/src/assets/css/fonts/iconfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | Created by iconfont 9 | 10 | 11 | 12 | 13 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /panda-user/src/assets/css/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/css/fonts/iconfont.ttf -------------------------------------------------------------------------------- /panda-user/src/assets/css/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/css/fonts/iconfont.woff -------------------------------------------------------------------------------- /panda-user/src/assets/css/global.css: -------------------------------------------------------------------------------- 1 | /* 全局样式表 */ 2 | html, body, #app{ 3 | height: 100%; 4 | margin: 0; 5 | padding: 0; 6 | } -------------------------------------------------------------------------------- /panda-user/src/assets/finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/finish.png -------------------------------------------------------------------------------- /panda-user/src/assets/homeLogo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/homeLogo.jpg -------------------------------------------------------------------------------- /panda-user/src/assets/login-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/login-background.jpg -------------------------------------------------------------------------------- /panda-user/src/assets/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/logo.jpg -------------------------------------------------------------------------------- /panda-user/src/assets/money.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/money.png -------------------------------------------------------------------------------- /panda-user/src/assets/movie-info-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/movie-info-background.jpg -------------------------------------------------------------------------------- /panda-user/src/assets/register-footer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/register-footer.jpg -------------------------------------------------------------------------------- /panda-user/src/assets/register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/register.png -------------------------------------------------------------------------------- /panda-user/src/assets/sofa-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/sofa-empty.png -------------------------------------------------------------------------------- /panda-user/src/assets/sofa-forbidden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/sofa-forbidden.png -------------------------------------------------------------------------------- /panda-user/src/assets/sofa-pick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/sofa-pick.png -------------------------------------------------------------------------------- /panda-user/src/assets/sofa-unpick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/CinemaMovieTicketSalesManagementSystem/a06790dc48f273988d12cf9bd81695696ef72f0f/panda-user/src/assets/sofa-unpick.png -------------------------------------------------------------------------------- /panda-user/src/components/global_variable.vue: -------------------------------------------------------------------------------- 1 | 2 | 10 | -------------------------------------------------------------------------------- /panda-user/src/element-variables.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Write your variables here. All available variables can be 3 | found in element-ui/packages/theme-chalk/src/common/var.scss. 4 | For example, to overwrite the theme color: 5 | */ 6 | 7 | /* icon font path, required */ 8 | $--font-path: '~element-ui/lib/theme-chalk/fonts'; 9 | 10 | @import "~element-ui/packages/theme-chalk/src/index"; 11 | -------------------------------------------------------------------------------- /panda-user/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import './plugins/axios' 3 | import App from './App.vue' 4 | import router from './router' 5 | import store from './store' 6 | import './plugins/element.js' 7 | import {Message} from 'element-ui' 8 | import './assets/css/fonts/iconfont.css' 9 | import global_variable from "@/components/global_variable"; 10 | 11 | Vue.prototype.global = global_variable 12 | 13 | Vue.config.productionTip = false 14 | 15 | axios.defaults.baseURL = 'http://127.0.0.1:8181/' 16 | axios.interceptors.request.use(config => { 17 | config.headers.Token = window.sessionStorage.getItem('token') 18 | return config 19 | }) 20 | 21 | // 状态码错误信息 22 | const codeMessage = { 23 | 401: '用户没有权限,请登录', 24 | 403: '用户没有权限,请联系管理员', 25 | 404: '访问的资源不存在', 26 | 406: '请求的格式不可得', 27 | 410: '请求的资源被永久删除,且不会再得到的', 28 | 422: '当创建一个对象时,发生一个验证错误', 29 | 500: '服务器发生错误,请检查服务器', 30 | 502: '网关错误', 31 | 503: '服务不可用,服务器暂时过载或维护', 32 | 504: '网关超时' 33 | }; 34 | 35 | axios.interceptors.response.use(response => { 36 | return response 37 | }, error => { 38 | if(error){ 39 | if(!error.response){ 40 | return console.log('Error', error.message); 41 | } 42 | //获取状态码 43 | const status = error.response.status; 44 | const errortext = codeMessage[status] || error.response.statusText; 45 | 46 | //提示错误信息 47 | Message.error(errortext) 48 | 49 | // 错误状态处理 50 | if (status === 401) { 51 | router.push('/login') 52 | } else if (status === 403) { 53 | router.push('/login') 54 | } else if (status >= 404 && status < 422) { 55 | router.push('/404') 56 | } 57 | } 58 | return Promise.reject(error) 59 | }) 60 | 61 | new Vue({ 62 | router, 63 | store, 64 | render: h => h(App) 65 | }).$mount('#app') 66 | -------------------------------------------------------------------------------- /panda-user/src/plugins/axios.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import Vue from 'vue'; 4 | import axios from "axios"; 5 | 6 | // Full config: https://github.com/axios/axios#request-config 7 | // axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || ''; 8 | // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; 9 | // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; 10 | 11 | let config = { 12 | // baseURL: process.env.baseURL || process.env.apiUrl || "" 13 | // timeout: 60 * 1000, // Timeout 14 | // withCredentials: true, // Check cross-site Access-Control 15 | }; 16 | 17 | const _axios = axios.create(config); 18 | 19 | _axios.interceptors.request.use( 20 | function(config) { 21 | // Do something before request is sent 22 | return config; 23 | }, 24 | function(error) { 25 | // Do something with request error 26 | return Promise.reject(error); 27 | } 28 | ); 29 | 30 | // Add a response interceptor 31 | _axios.interceptors.response.use( 32 | function(response) { 33 | // Do something with response data 34 | return response; 35 | }, 36 | function(error) { 37 | // Do something with response error 38 | return Promise.reject(error); 39 | } 40 | ); 41 | 42 | Plugin.install = function(Vue, options) { 43 | Vue.axios = _axios; 44 | window.axios = _axios; 45 | Object.defineProperties(Vue.prototype, { 46 | axios: { 47 | get() { 48 | return _axios; 49 | } 50 | }, 51 | $axios: { 52 | get() { 53 | return _axios; 54 | } 55 | }, 56 | }); 57 | }; 58 | 59 | Vue.use(Plugin) 60 | 61 | export default Plugin; 62 | -------------------------------------------------------------------------------- /panda-user/src/plugins/element.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Element from 'element-ui' 3 | import '../element-variables.scss' 4 | 5 | Vue.use(Element) 6 | -------------------------------------------------------------------------------- /panda-user/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | 4 | Vue.use(Vuex) 5 | 6 | export default new Vuex.Store({ 7 | state: { 8 | }, 9 | mutations: { 10 | }, 11 | actions: { 12 | }, 13 | modules: { 14 | } 15 | }) 16 | -------------------------------------------------------------------------------- /panda-user/src/views/.editorconfig: -------------------------------------------------------------------------------- 1 | 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | -------------------------------------------------------------------------------- /panda-user/src/views/movie/MovieClassics.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 82 | 83 | 104 | -------------------------------------------------------------------------------- /panda-user/src/views/movie/MovieOngoing.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 84 | 85 | 106 | -------------------------------------------------------------------------------- /panda-user/src/views/movie/MovieUpcoming.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 82 | 83 | 104 | -------------------------------------------------------------------------------- /panda-user/src/views/rankinglist/ForeignBoxOfficeList.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 48 | 49 | 126 | -------------------------------------------------------------------------------- /panda-user/src/views/rankinglist/RankingList.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 45 | 46 | 58 | -------------------------------------------------------------------------------- /panda-user/src/views/rankinglist/TotalBoxOfficeList.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 47 | 48 | 125 | -------------------------------------------------------------------------------- /panda-user/src/views/search/Search.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 62 | 63 | 106 | -------------------------------------------------------------------------------- /panda-user/src/views/user/UserMenu.vue: -------------------------------------------------------------------------------- 1 | 17 | 39 | 40 | 52 | -------------------------------------------------------------------------------- /panda-user/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | devServer: { 3 | port: 8081 4 | } 5 | } --------------------------------------------------------------------------------