├── .gitignore
├── README.assets
├── image-1.png
├── image-2.png
├── image-20220526180504178.png
├── image-3.png
├── image-4.png
├── image-5.png
├── image-6.png
└── image.png
├── README.md
└── api
├── api.iml
├── pom.xml
└── src
└── main
├── java
└── com
│ └── movie
│ └── api
│ ├── ApiApplication.java
│ ├── annotation
│ └── DisableBaseResponse.java
│ ├── auth
│ └── AuthorizationFilter.java
│ ├── config
│ ├── SecurityConfiguration.java
│ └── SwaggerConfiguration.java
│ ├── constant
│ ├── FilmStatus.java
│ ├── OrderStatus.java
│ └── Roles.java
│ ├── controller
│ ├── ActivityController.java
│ ├── AdminController.java
│ ├── ArrangementController.java
│ ├── CartController.java
│ ├── DailyWorkController.java
│ ├── FilmController.java
│ ├── FilmEvaluateController.java
│ ├── LeavingMessageController.java
│ ├── OrderController.java
│ ├── OrderExceptionController.java
│ ├── PosterController.java
│ ├── RegistrationController.java
│ ├── RoleController.java
│ ├── UploadController.java
│ ├── UserController.java
│ ├── WorkerController.java
│ └── WorkerEvaluateController.java
│ ├── handler
│ ├── GlobalExceptionHandler.java
│ └── GlobalResponseHandler.java
│ ├── mapper
│ ├── ActivityMapper.java
│ ├── AdminMapper.java
│ ├── ArrangementMapper.java
│ ├── CartMapper.java
│ ├── DailyWorkMapper.java
│ ├── FilmEvaluateMapper.java
│ ├── FilmMapper.java
│ ├── LeavingMessageMapper.java
│ ├── OrderExceptionMapper.java
│ ├── OrderMapper.java
│ ├── PosterMapper.java
│ ├── RegistrationMapper.java
│ ├── RoleMapper.java
│ ├── UploadMapper.java
│ ├── UserMapper.java
│ ├── WorkerEvaluateMapper.java
│ └── WorkerMapper.java
│ ├── model
│ ├── dto
│ │ ├── CreateCartDto.java
│ │ ├── LoginDto.java
│ │ └── UpdateRolesDto.java
│ ├── entity
│ │ ├── Activity.java
│ │ ├── Admin.java
│ │ ├── Arrangement.java
│ │ ├── Cart.java
│ │ ├── DailyWork.java
│ │ ├── Film.java
│ │ ├── FilmEvaluate.java
│ │ ├── LeavingMessage.java
│ │ ├── Order.java
│ │ ├── OrderException.java
│ │ ├── Poster.java
│ │ ├── Registration.java
│ │ ├── Role.java
│ │ ├── Upload.java
│ │ ├── User.java
│ │ ├── Worker.java
│ │ └── WorkerEvaluate.java
│ ├── support
│ │ └── ResponseResult.java
│ └── vo
│ │ ├── ActiveUserVO.java
│ │ ├── ArrangementVO.java
│ │ ├── CartVO.java
│ │ ├── FilmEvaluateVO.java
│ │ ├── LeavingMessageVO.java
│ │ ├── OrderVO.java
│ │ └── WorkerEvaluateVO.java
│ ├── service
│ ├── ActivityService.java
│ ├── AdminService.java
│ ├── ArrangementService.java
│ ├── CartService.java
│ ├── DailyWorkService.java
│ ├── FilmEvaluateService.java
│ ├── FilmService.java
│ ├── LeavingMessageService.java
│ ├── OrderExceptionService.java
│ ├── OrderService.java
│ ├── PosterService.java
│ ├── RegistrationService.java
│ ├── RoleService.java
│ ├── UploadService.java
│ ├── UserService.java
│ ├── WorkerEvaluateService.java
│ ├── WorkerService.java
│ └── impl
│ │ ├── ActivityServiceImpl.java
│ │ ├── AdminServiceImpl.java
│ │ ├── ArrangementServiceImpl.java
│ │ ├── CartServiceImpl.java
│ │ ├── DailyWorkServiceImpl.java
│ │ ├── FilmEvaluateServiceImpl.java
│ │ ├── FilmServiceImpl.java
│ │ ├── LeavingMessageServiceImpl.java
│ │ ├── OrderExceptionServiceImpl.java
│ │ ├── OrderServiceImpl.java
│ │ ├── PosterServiceImpl.java
│ │ ├── RegistrationServiceImpl.java
│ │ ├── RoleServiceImpl.java
│ │ ├── UploadServiceImpl.java
│ │ ├── UserServiceImpl.java
│ │ ├── WorkerEvaluateServiceImpl.java
│ │ └── WorkerServiceImpl.java
│ └── utils
│ ├── DataTimeUtil.java
│ ├── JwtTokenUtil.java
│ └── ResponseUtil.java
└── resources
└── application.yml
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
--------------------------------------------------------------------------------
/README.assets/image-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/i-ku/movie/6d1e8ac4894aee9050dc2191db8c5a61c91e407f/README.assets/image-1.png
--------------------------------------------------------------------------------
/README.assets/image-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/i-ku/movie/6d1e8ac4894aee9050dc2191db8c5a61c91e407f/README.assets/image-2.png
--------------------------------------------------------------------------------
/README.assets/image-20220526180504178.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/i-ku/movie/6d1e8ac4894aee9050dc2191db8c5a61c91e407f/README.assets/image-20220526180504178.png
--------------------------------------------------------------------------------
/README.assets/image-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/i-ku/movie/6d1e8ac4894aee9050dc2191db8c5a61c91e407f/README.assets/image-3.png
--------------------------------------------------------------------------------
/README.assets/image-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/i-ku/movie/6d1e8ac4894aee9050dc2191db8c5a61c91e407f/README.assets/image-4.png
--------------------------------------------------------------------------------
/README.assets/image-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/i-ku/movie/6d1e8ac4894aee9050dc2191db8c5a61c91e407f/README.assets/image-5.png
--------------------------------------------------------------------------------
/README.assets/image-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/i-ku/movie/6d1e8ac4894aee9050dc2191db8c5a61c91e407f/README.assets/image-6.png
--------------------------------------------------------------------------------
/README.assets/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/i-ku/movie/6d1e8ac4894aee9050dc2191db8c5a61c91e407f/README.assets/image.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 影院选座购票系统
2 |
3 | ## 系统设计
4 |
5 | 基于SpringBoot+MyBatis-Plus 的前后端电影项目,前端使用Vue+element ui,主要有影视管理、院线拍片、选座购票、影视管理、订单管理等功能,系统功能完善,界面美观大方。
6 |
7 | ## 功能介绍
8 |
9 | ### 前台功能
10 |
11 | 前台首页展示
12 |
13 | 
14 |
15 | 前台登录界面
16 |
17 | 
18 |
19 | 用户选择电影后进入购票页面
20 |
21 | 
22 |
23 | 点击选座购票,选择喜欢的座位后,可以加入到购物车
24 |
25 | 
26 |
27 | 
28 |
29 | 随后点击全部结算,支付成功后可以在订单页面中查看
30 |
31 | 
32 |
33 | ### 后台管理
34 |
35 | 
36 |
37 | 后台管理主要有影视管理、用户管理、订单管理等功能,不再一一展开。代码已经开源,对项目部署运行有什么疑问,可以添加微信交流,微信:beyond-expression
38 |
39 |
--------------------------------------------------------------------------------
/api/api.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/api/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 | com.movie
6 | api
7 | 0.0.1-SNAPSHOT
8 |
9 |
10 | org.springframework.boot
11 | spring-boot-starter-parent
12 | 2.4.2
13 |
14 |
15 |
16 | 8
17 | 2.9.2
18 | 0.9.1
19 | 3.4.2
20 | 1.2.73
21 | 1.4.7.RELEASE
22 |
23 |
24 |
25 |
26 |
27 |
28 | org.springframework.boot
29 | spring-boot-starter-web
30 |
31 |
32 |
33 |
34 | org.springframework.boot
35 | spring-boot-starter-data-redis
36 |
37 |
38 |
39 |
40 | org.springframework.boot
41 | spring-boot-starter-security
42 |
43 |
44 |
45 |
46 | io.jsonwebtoken
47 | jjwt
48 | ${jwt.version}
49 |
50 |
51 |
52 |
53 | com.baomidou
54 | mybatis-plus-boot-starter
55 | ${mybatis-plus.version}
56 |
57 |
58 |
59 |
60 | mysql
61 | mysql-connector-java
62 | runtime
63 |
64 |
65 |
66 |
67 | org.projectlombok
68 | lombok
69 | true
70 |
71 |
72 |
73 |
74 | io.springfox
75 | springfox-swagger2
76 | ${swagger.version}
77 |
78 |
79 |
80 |
81 | io.springfox
82 | springfox-swagger-ui
83 | ${swagger.version}
84 |
85 |
86 |
87 |
88 | com.alibaba
89 | fastjson
90 | ${fastjson.version}
91 |
92 |
93 |
94 |
95 |
96 | javax.xml.bind
97 | jaxb-api
98 | 2.3.0
99 |
100 |
101 | com.sun.xml.bind
102 | jaxb-impl
103 | 2.3.0
104 |
105 |
106 | com.sun.xml.bind
107 | jaxb-core
108 | 2.3.0
109 |
110 |
111 | javax.activation
112 | activation
113 | 1.1.1
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 | org.springframework.boot
122 | spring-boot-maven-plugin
123 |
124 |
125 |
126 | org.projectlombok
127 | lombok
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 | maven-ali
139 | http://maven.aliyun.com/nexus/content/groups/public//
140 |
141 | true
142 |
143 |
144 | true
145 | always
146 | fail
147 |
148 |
149 |
150 |
151 |
152 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/ApiApplication.java:
--------------------------------------------------------------------------------
1 | package com.movie.api;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.cache.annotation.EnableCaching;
7 |
8 | //@EnableCaching
9 | @SpringBootApplication
10 | @MapperScan("com.movie.api.mapper")
11 | public class ApiApplication {
12 |
13 | public static void main(String[] args) {
14 | SpringApplication.run(ApiApplication.class, args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/annotation/DisableBaseResponse.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.annotation;
2 |
3 | import java.lang.annotation.*;
4 |
5 | /**
6 | * 作用: 不需要GlobalResponseHandler统一拦截返回JSON的方法
7 | * 例如: 获取二进制图片 Response需要写入文件流 不需要返回json
8 | */
9 | @Target(ElementType.METHOD)
10 | @Retention(RetentionPolicy.RUNTIME)
11 | public @interface DisableBaseResponse {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/auth/AuthorizationFilter.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.auth;
2 |
3 | import com.movie.api.model.support.ResponseResult;
4 | import com.movie.api.utils.JwtTokenUtil;
5 | import com.movie.api.utils.ResponseUtil;
6 | import org.springframework.security.authentication.AuthenticationManager;
7 | import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
8 | import org.springframework.security.core.authority.SimpleGrantedAuthority;
9 | import org.springframework.security.core.context.SecurityContextHolder;
10 | import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
11 |
12 | import javax.servlet.FilterChain;
13 | import javax.servlet.ServletException;
14 | import javax.servlet.http.HttpServletRequest;
15 | import javax.servlet.http.HttpServletResponse;
16 | import java.io.IOException;
17 | import java.util.ArrayList;
18 |
19 | /**
20 | * Authorization 授权 发放token
21 | */
22 | public class AuthorizationFilter extends BasicAuthenticationFilter {
23 |
24 | public AuthorizationFilter(AuthenticationManager authenticationManager) {
25 | super(authenticationManager);
26 | }
27 |
28 | @Override
29 | protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
30 | throws IOException, ServletException {
31 |
32 | //从Request Header 取出Token
33 | String token = request.getHeader(JwtTokenUtil.TOKEN_HEADER);
34 |
35 | //Token为空放行
36 | //如果接下来进入的URL不是公共的地址SpringSecurity会返回403的错误
37 | if (token == null || "null".equals(token)) {
38 | chain.doFilter(request, response);
39 | return;
40 | }
41 |
42 | //判断JWT Token是否过期
43 | if (JwtTokenUtil.isExpiration(token)) {
44 | ResponseUtil.writeJson(response, new ResponseResult<>(403, "令牌已过期, 请重新登录"));
45 | return;
46 | }
47 |
48 | //解析JWT获取用户信息
49 | String username = JwtTokenUtil.getUsername(token);
50 | ArrayList authorities = new ArrayList<>();
51 | for (String role : JwtTokenUtil.getTokenRoles(token)) {
52 | authorities.add(new SimpleGrantedAuthority(role));
53 | }
54 |
55 | //向SpringSecurity的Context中加入认证信息
56 | SecurityContextHolder.getContext().setAuthentication(
57 | new UsernamePasswordAuthenticationToken(username, null, authorities));
58 | super.doFilterInternal(request, response, chain);
59 | }
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/config/SecurityConfiguration.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.config;
2 |
3 | import com.movie.api.auth.AuthorizationFilter;
4 | import com.movie.api.model.support.ResponseResult;
5 | import com.movie.api.utils.ResponseUtil;
6 | import org.springframework.context.annotation.Bean;
7 | import org.springframework.context.annotation.Configuration;
8 | import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
9 | import org.springframework.security.config.annotation.web.builders.HttpSecurity;
10 | import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
11 | import org.springframework.security.config.http.SessionCreationPolicy;
12 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
13 | import org.springframework.web.cors.CorsConfiguration;
14 | import org.springframework.web.cors.CorsConfigurationSource;
15 | import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
16 |
17 | /**
18 | * SpringSecurity配置
19 | */
20 | @Configuration
21 | @EnableGlobalMethodSecurity(prePostEnabled = true)
22 | public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
23 |
24 | @Bean
25 | public BCryptPasswordEncoder bCryptPasswordEncoder() {
26 | return new BCryptPasswordEncoder();
27 | }
28 |
29 | /**
30 | * HTTP验证规则
31 | *
32 | * @param http h
33 | * @throws Exception e
34 | */
35 | @Override
36 | protected void configure(HttpSecurity http) throws Exception {
37 |
38 | //开启跨域
39 | http.csrf().disable().cors();
40 |
41 | //允许跨域使用iframe
42 | http.headers().frameOptions().disable();
43 |
44 | //禁用session
45 | http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
46 |
47 | //身份验证失败
48 | http.exceptionHandling().authenticationEntryPoint((request, response, authException) -> {
49 | ResponseUtil.writeJson(response, new ResponseResult<>(403, "身份认证失败, 请重新登录"));
50 | });
51 |
52 | http.addFilter(new AuthorizationFilter(authenticationManagerBean()));
53 |
54 | }
55 |
56 | /**
57 | * SpringSecurity有默认的跨域配置 会无法放行RequestHeader带有"Authorization"请求
58 | * 防止前端请求api报出cors error
59 | *
60 | * @return *
61 | */
62 | @Bean
63 | CorsConfigurationSource corsConfigurationSource() {
64 | final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
65 | final CorsConfiguration corsConfiguration = new CorsConfiguration();
66 | corsConfiguration.addAllowedHeader("*");
67 | corsConfiguration.addAllowedHeader("DELETE");
68 | corsConfiguration.addAllowedMethod("*");
69 | corsConfiguration.addAllowedOrigin("*");
70 | source.registerCorsConfiguration("/**", corsConfiguration);
71 | return source;
72 | }
73 |
74 | }
75 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/config/SwaggerConfiguration.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.config;
2 |
3 | import org.springframework.context.annotation.Bean;
4 | import org.springframework.context.annotation.Configuration;
5 | import springfox.documentation.builders.ApiInfoBuilder;
6 | import springfox.documentation.builders.PathSelectors;
7 | import springfox.documentation.builders.RequestHandlerSelectors;
8 | import springfox.documentation.spi.DocumentationType;
9 | import springfox.documentation.spring.web.plugins.Docket;
10 | import springfox.documentation.swagger2.annotations.EnableSwagger2;
11 |
12 | /**
13 | * swagger配置
14 | */
15 | @Configuration
16 | @EnableSwagger2
17 | public class SwaggerConfiguration {
18 |
19 | @Bean
20 | public Docket docket(){
21 | return new Docket(DocumentationType.SWAGGER_2)
22 | .select()
23 | .apis(RequestHandlerSelectors.basePackage("com.movie.api.controller"))
24 | .paths(PathSelectors.any())
25 | .build()
26 | .apiInfo(new ApiInfoBuilder().title("movie电影系统 - api文档").version("v1.0").build());
27 | }
28 |
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/constant/FilmStatus.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.constant;
2 |
3 | /**
4 | * 电影状态
5 | */
6 | public final class FilmStatus {
7 |
8 | //上架
9 | public final static Integer ON_SHELF = 2;
10 |
11 | //审核
12 | public final static Integer TO_EXAMINE = 1;
13 |
14 | //下架
15 | public final static Integer OFF_SHELF = 0;
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/constant/OrderStatus.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.constant;
2 |
3 | /**
4 | * 订单状态
5 | */
6 | public final class OrderStatus {
7 |
8 | //15分钟未支付 支付失败
9 | public final static long EXPIRATION_TIME = 1000 * 60 * 15;
10 |
11 | //初始化订单 等待支付
12 | public final static Integer PAYMENT_WAITING = 0;
13 |
14 | //支付失败
15 | public final static Integer PAYMENT_FAILED = 1;
16 |
17 | //支付成功
18 | public final static Integer PAYMENT_SUCCESSFUL = 2;
19 |
20 | //被管理员撤销
21 | public final static Integer COUNTERMAND = 3;
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/constant/Roles.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.constant;
2 |
3 | import java.util.List;
4 |
5 | /**
6 | * 权限常量
7 | * SpringSecurity 要求加上 "ROLE_" 前缀
8 | */
9 | public final class Roles {
10 |
11 | //管理员
12 | public final static String ROLE_ADMIN = "ROLE_ADMIN";
13 |
14 | //普通用户
15 | public final static String ROLE_USER = "ROLE_USER";
16 |
17 | //普通员工
18 | public final static String ROLE_WORKER = "ROLE_WORKER";
19 |
20 | //查询用户
21 | public final static String ROLE_FIND_USER = "ROLE_FIND_USER";
22 |
23 | //新增电影
24 | public final static String ROLE_ADD_FILM = "ROLE_ADD_FILM";
25 |
26 | //添加拍片
27 | public final static String ROLE_ADD_ARRANGEMENT = "ROLE_ADD_ARRANGEMENT";
28 |
29 | //删除电影
30 | public final static String ROLE_DELETE_FILM = "ROLE_DELETE_FILM";
31 |
32 | public final static String[] roles = {
33 | ROLE_FIND_USER,
34 | ROLE_ADD_FILM,
35 | ROLE_DELETE_FILM,
36 | ROLE_ADD_ARRANGEMENT,
37 | };
38 |
39 | }
40 |
41 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/ActivityController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.entity.Activity;
4 | import com.movie.api.service.ActivityService;
5 | import io.swagger.annotations.Api;
6 | import io.swagger.annotations.ApiOperation;
7 | import org.springframework.web.bind.annotation.*;
8 |
9 | import javax.annotation.Resource;
10 | import java.util.List;
11 |
12 | @RestController
13 | @Api(tags = "活动接口")
14 | @RequestMapping("/api/activity")
15 | public class ActivityController {
16 |
17 | @Resource
18 | private ActivityService activityService;
19 |
20 | @PostMapping("")
21 | @ApiOperation("新增活动")
22 | public void create(@RequestBody Activity activity) {
23 | activityService.create(activity);
24 | }
25 |
26 | @GetMapping("")
27 | @ApiOperation("获取全部活动")
28 | public List findAll() {
29 | return activityService.findAll();
30 | }
31 |
32 | @GetMapping("{id}")
33 | @ApiOperation("根据id查找活动")
34 | public Activity findById(@PathVariable String id) {
35 | return activityService.findById(id);
36 | }
37 |
38 | @DeleteMapping("{id}")
39 | @ApiOperation("删除活动")
40 | public void delete(@PathVariable String id) {
41 | activityService.deleteById(id);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/AdminController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.dto.LoginDto;
4 | import com.movie.api.service.AdminService;
5 | import io.swagger.annotations.Api;
6 | import io.swagger.annotations.ApiOperation;
7 | import org.springframework.web.bind.annotation.*;
8 |
9 | import javax.annotation.Resource;
10 | import java.util.HashMap;
11 | import java.util.Map;
12 |
13 | @RestController
14 | @Api(tags = "管理员接口")
15 | @RequestMapping("/api/admin")
16 | public class AdminController {
17 |
18 | @Resource
19 | private AdminService adminService;
20 |
21 | @PostMapping("/login")
22 | @ApiOperation("管理员登陆")
23 | public Map login(@RequestBody LoginDto loginDto) throws Exception {
24 | HashMap map = new HashMap<>();
25 | map.put("token", adminService.login(loginDto));
26 | return map;
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/ArrangementController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.entity.Arrangement;
4 | import com.movie.api.model.vo.ArrangementVO;
5 | import com.movie.api.service.ArrangementService;
6 | import com.movie.api.service.FilmService;
7 | import io.swagger.annotations.Api;
8 | import io.swagger.annotations.ApiOperation;
9 | import org.springframework.web.bind.annotation.*;
10 |
11 | import javax.annotation.Resource;
12 | import java.util.HashMap;
13 | import java.util.List;
14 | import java.util.Map;
15 |
16 | @RestController
17 | @Api(tags = "电影排片场次接口")
18 | @RequestMapping("/api/arrangement")
19 | public class ArrangementController {
20 |
21 | @Resource
22 | private ArrangementService arrangementService;
23 |
24 | @Resource
25 | private FilmService filmService;
26 |
27 | @PostMapping("")
28 | @ApiOperation("新增电影场次")
29 | public void save(@RequestBody Arrangement arrangement) {
30 | arrangementService.save(arrangement);
31 | }
32 |
33 | @PutMapping("")
34 | @ApiOperation("修改排片信息")
35 | public Arrangement update(@RequestBody Arrangement arrangement) {
36 | return arrangementService.Update(arrangement);
37 | }
38 |
39 | @DeleteMapping("")
40 | @ApiOperation("根据id删除排片")
41 | public void delete(@RequestParam String id) {
42 | arrangementService.deleteById(id);
43 | }
44 |
45 | @GetMapping("")
46 | @ApiOperation("列出电影排片")
47 | public List list() {
48 | return arrangementService.findAll();
49 | }
50 |
51 | @GetMapping("/{id}")
52 | @ApiOperation("查询拍片")
53 | public Map findById(@PathVariable String id) {
54 | HashMap map = new HashMap<>();
55 | Arrangement arrangement = arrangementService.findById(id);
56 | map.put("film", filmService.findById(arrangement.getFid()));
57 | map.put("arrangement", arrangement);
58 | return map;
59 | }
60 |
61 | @GetMapping("/getSeats")
62 | @ApiOperation("获取座位情况")
63 | public List getSeats(String id) {
64 | return arrangementService.getSeatsHaveSelected(id);
65 | }
66 |
67 | @GetMapping("/film/{fid}")
68 | @ApiOperation("查询某个电影的所有拍片")
69 | public ArrangementVO findByFilmId(@PathVariable String fid) {
70 | return arrangementService.findByFilmId(fid);
71 | }
72 |
73 | }
74 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/CartController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.entity.Cart;
4 | import com.movie.api.model.vo.CartVO;
5 | import com.movie.api.service.CartService;
6 | import io.swagger.annotations.Api;
7 | import io.swagger.annotations.ApiOperation;
8 | import org.springframework.web.bind.annotation.*;
9 |
10 | import javax.annotation.Resource;
11 | import java.util.List;
12 |
13 | @RestController
14 | @Api(tags = "用户购物车接口")
15 | @RequestMapping("/api/cart")
16 | public class CartController {
17 |
18 | @Resource
19 | private CartService cartService;
20 |
21 | @PostMapping
22 | @ApiOperation("添加购物车")
23 | public void save(@RequestBody Cart cart) throws Exception {
24 | cartService.save(cart);
25 | }
26 |
27 | @GetMapping("")
28 | @ApiOperation("根据用户id查询购物车")
29 | public List list(@RequestParam String uid) {
30 | return cartService.findAllByUserId(uid);
31 | }
32 |
33 | @DeleteMapping("")
34 | @ApiOperation("删除购物车")
35 | public void delete(String id) {
36 | cartService.deleteById(id);
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/DailyWorkController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.entity.DailyWork;
4 | import com.movie.api.service.DailyWorkService;
5 | import io.swagger.annotations.Api;
6 | import io.swagger.annotations.ApiOperation;
7 | import org.springframework.web.bind.annotation.*;
8 |
9 | import javax.annotation.Resource;
10 | import java.util.List;
11 |
12 | @RestController
13 | @Api(tags = "每日工作接口")
14 | @RequestMapping("/api/daily")
15 | public class DailyWorkController {
16 |
17 | @Resource
18 | private DailyWorkService dailyWorkService;
19 |
20 | @PostMapping("")
21 | @ApiOperation("添加每日工作")
22 | public void create(@RequestBody DailyWork dailyWork){
23 | dailyWorkService.save(dailyWork);
24 | }
25 |
26 | @DeleteMapping("/{id}")
27 | @ApiOperation("根据id删除每日工作")
28 | public void delete(@PathVariable String id){
29 | dailyWorkService.deleteById(id);
30 | }
31 |
32 | @GetMapping("")
33 | @ApiOperation("查询所有")
34 | public List findAll(){
35 | return dailyWorkService.findAll();
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/FilmController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.entity.Film;
4 | import com.movie.api.service.FilmService;
5 | import io.swagger.annotations.Api;
6 | import io.swagger.annotations.ApiOperation;
7 | import org.springframework.web.bind.annotation.*;
8 |
9 | import javax.annotation.Resource;
10 | import java.util.List;
11 |
12 | @RestController
13 | @Api(tags = "电影接口")
14 | @RequestMapping("/api/film")
15 | public class FilmController {
16 |
17 | @Resource
18 | private FilmService filmService;
19 |
20 | @PostMapping("")
21 | @ApiOperation(value = "保存电影")
22 | public void save(@RequestBody Film film) {
23 | filmService.save(film);
24 | }
25 |
26 | @GetMapping("")
27 | @ApiOperation("列出所有电影")
28 | public List list(String region, String type) {
29 | if (region != null && type != null) {
30 | return filmService.findByRegionAndType(region, type);
31 | }
32 | return filmService.findAll();
33 | }
34 |
35 | @GetMapping("/hot/{limit}")
36 | @ApiOperation("获取热榜电影")
37 | public List listHots(@PathVariable Integer limit) {
38 | return filmService.findHots(limit);
39 | }
40 |
41 | @GetMapping("/name/{name}")
42 | @ApiOperation("搜索电影")
43 | public List search(@PathVariable String name) {
44 | return filmService.findLikeName(name);
45 | }
46 |
47 | @GetMapping("/{id}")
48 | @ApiOperation(value = "根据id查找电影")
49 | public Film findById(@PathVariable String id) {
50 | return filmService.findById(id);
51 | }
52 |
53 | @PutMapping("")
54 | @ApiOperation(value = "更新电影")
55 | public void update(@RequestBody Film film) {
56 | filmService.update(film);
57 | }
58 |
59 | @DeleteMapping("/{id}")
60 | @ApiOperation(value = "根据id删除电影")
61 | public void deleteById(@PathVariable String id) {
62 | filmService.deleteById(id);
63 | }
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/FilmEvaluateController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.entity.FilmEvaluate;
4 | import com.movie.api.model.vo.FilmEvaluateVO;
5 | import com.movie.api.service.FilmEvaluateService;
6 | import io.swagger.annotations.Api;
7 | import io.swagger.annotations.ApiOperation;
8 | import org.springframework.web.bind.annotation.*;
9 |
10 | import javax.annotation.Resource;
11 | import java.util.List;
12 |
13 | @RestController
14 | @Api(tags = "电影评价接口")
15 | @RequestMapping("/api/fe")
16 | public class FilmEvaluateController {
17 |
18 | @Resource
19 | private FilmEvaluateService filmEvaluateService;
20 |
21 | @PostMapping("")
22 | @ApiOperation("评论电影")
23 | public void save(@RequestBody FilmEvaluate filmEvaluate) throws Exception {
24 | filmEvaluateService.save(filmEvaluate);
25 | }
26 |
27 | @GetMapping("")
28 | @ApiOperation("获取电影评论")
29 | public List list(@RequestParam(name = "fid") String fid) {
30 | if (fid != null) {
31 | return filmEvaluateService.findAllByFilmId(fid);
32 | }
33 | return null;
34 | }
35 |
36 | @DeleteMapping("/{id}")
37 | @ApiOperation("根据id删除评论")
38 | public void remove(@PathVariable String id) {
39 | filmEvaluateService.deleteById(id);
40 | }
41 |
42 | @DeleteMapping("")
43 | @ApiOperation("删除该电影的所有评分")
44 | public void removeAll(@RequestParam(name = "fid") String fid) {
45 | filmEvaluateService.deleteAllByFilmId(fid);
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/LeavingMessageController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.entity.LeavingMessage;
4 | import com.movie.api.model.vo.ActiveUserVO;
5 | import com.movie.api.model.vo.LeavingMessageVO;
6 | import com.movie.api.service.LeavingMessageService;
7 | import io.swagger.annotations.Api;
8 | import io.swagger.annotations.ApiOperation;
9 | import org.springframework.web.bind.annotation.*;
10 |
11 | import javax.annotation.Resource;
12 | import java.util.List;
13 |
14 | @RestController
15 | @Api(tags = "留言接口")
16 | @RequestMapping("/api/lm")
17 | public class LeavingMessageController {
18 |
19 | @Resource
20 | private LeavingMessageService leavingMessageService;
21 |
22 | @PostMapping("")
23 | @ApiOperation(value = "新增留言接口")
24 | public void save(@RequestBody LeavingMessage leavingMessage) {
25 | leavingMessageService.save(leavingMessage);
26 | }
27 |
28 | @PutMapping("")
29 | @ApiOperation("回复留言")
30 | public void reply(@RequestBody LeavingMessage leavingMessage) {
31 | leavingMessageService.reply(leavingMessage);
32 | }
33 |
34 | @GetMapping("")
35 | @ApiOperation("获取所有影院留言")
36 | public List list() {
37 | return leavingMessageService.findAll();
38 | }
39 |
40 | @GetMapping("/active")
41 | @ApiOperation("获取活跃留言的用户")
42 | public List findActiveUsers() {
43 | return leavingMessageService.findActiveUsers();
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/OrderController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.entity.Cart;
4 | import com.movie.api.model.entity.Order;
5 | import com.movie.api.model.vo.OrderVO;
6 | import com.movie.api.service.OrderService;
7 | import io.swagger.annotations.Api;
8 | import io.swagger.annotations.ApiOperation;
9 | import org.springframework.web.bind.annotation.*;
10 |
11 | import javax.annotation.Resource;
12 | import java.util.List;
13 |
14 | @RestController
15 | @Api(tags = "订单接口")
16 | @RequestMapping("/api/order")
17 | public class OrderController {
18 |
19 | @Resource
20 | private OrderService orderService;
21 |
22 | @PostMapping("")
23 | @ApiOperation(value = "创建订单")
24 | public void save(@RequestBody Cart cart) throws Exception {
25 | orderService.create(cart);
26 | }
27 |
28 | @GetMapping("")
29 | @ApiOperation(value = "查询所有订单")
30 | public List findAll() {
31 | return orderService.findAll();
32 | }
33 |
34 | @PutMapping("")
35 | @ApiOperation(value = "查询所有订单")
36 | public void update(@RequestBody Order order) {
37 | orderService.update(order);
38 | }
39 |
40 | @GetMapping("/user/{id}")
41 | @ApiOperation(value = "查询用户订单")
42 | public List findByUser(@PathVariable String id) {
43 | return orderService.findByUser(id);
44 | }
45 |
46 | @GetMapping("/pay")
47 | @ApiOperation(value = "支付订单")
48 | public Order save(String id) throws Exception {
49 | return orderService.pay(id);
50 | }
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/OrderExceptionController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.entity.OrderException;
4 | import com.movie.api.service.OrderExceptionService;
5 | import io.swagger.annotations.Api;
6 | import io.swagger.annotations.ApiOperation;
7 | import org.springframework.web.bind.annotation.*;
8 |
9 | import javax.annotation.Resource;
10 | import java.util.List;
11 |
12 | @RestController
13 | @Api(tags = "订单异常上报接口")
14 | @RequestMapping("/api/oe")
15 | public class OrderExceptionController {
16 |
17 | @Resource
18 | private OrderExceptionService orderExceptionService;
19 |
20 | @PostMapping("")
21 | @ApiOperation("添加异常订单")
22 | public OrderException create(@RequestBody OrderException orderException) {
23 | return orderExceptionService.create(orderException);
24 | }
25 |
26 | @GetMapping("")
27 | @ApiOperation("查询所有异常订单")
28 | public List findAll() {
29 | return orderExceptionService.findAll();
30 | }
31 |
32 | @PutMapping("")
33 | @ApiOperation("工作人员处理异常订单")
34 | public void handle(@RequestBody OrderException orderException) {
35 | orderExceptionService.handleException(orderException);
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/PosterController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.entity.Poster;
4 | import com.movie.api.service.PosterService;
5 | import io.swagger.annotations.Api;
6 | import io.swagger.annotations.ApiOperation;
7 | import org.springframework.web.bind.annotation.*;
8 |
9 | import javax.annotation.Resource;
10 | import java.util.List;
11 |
12 | @RestController
13 | @Api(tags = "首页海报接口")
14 | @RequestMapping("/api/poster")
15 | public class PosterController {
16 |
17 | @Resource
18 | private PosterService posterService;
19 |
20 | @PostMapping("")
21 | @ApiOperation("添加首页海报")
22 | public void save(@RequestBody Poster poster) {
23 | posterService.save(poster);
24 | }
25 |
26 | @PutMapping("")
27 | @ApiOperation("更新海报")
28 | public void update(@RequestBody Poster poster) {
29 | posterService.update(poster);
30 | }
31 |
32 | @GetMapping("")
33 | @ApiOperation("获取所有海报")
34 | public List list(String status) {
35 | if (status != null) {
36 | return posterService.findByStatus(Boolean.parseBoolean(status));
37 | }
38 | return posterService.findAll();
39 | }
40 |
41 | @DeleteMapping("/{id}")
42 | @ApiOperation(("删除海报"))
43 | public void delete(@PathVariable String id) {
44 | posterService.deleteById(id);
45 | }
46 |
47 | @DeleteMapping("")
48 | @ApiOperation(("删除所有海报"))
49 | public void deleteAll() {
50 | posterService.deleteAll();
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/RegistrationController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.entity.Registration;
4 | import com.movie.api.service.RegistrationService;
5 | import io.swagger.annotations.Api;
6 | import io.swagger.annotations.ApiOperation;
7 | import org.springframework.web.bind.annotation.*;
8 |
9 | import javax.annotation.Resource;
10 | import java.util.List;
11 |
12 | @RestController
13 | @Api(tags = "活动接口")
14 | @RequestMapping("/api/registration")
15 | public class RegistrationController {
16 |
17 | @Resource
18 | private RegistrationService registrationService;
19 |
20 | @PostMapping("")
21 | @ApiOperation("报名活动")
22 | public void create(@RequestBody Registration registration) throws Exception {
23 | registrationService.create(registration);
24 | }
25 |
26 | @GetMapping("")
27 | @ApiOperation("查询所有报名信息")
28 | public List create() {
29 | return registrationService.findAll();
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/RoleController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.constant.Roles;
4 | import com.movie.api.model.entity.Role;
5 | import com.movie.api.service.RoleService;
6 | import io.swagger.annotations.Api;
7 | import io.swagger.annotations.ApiOperation;
8 | import org.springframework.security.access.prepost.PreAuthorize;
9 | import org.springframework.web.bind.annotation.*;
10 |
11 | import javax.annotation.Resource;
12 | import java.util.List;
13 |
14 | /**
15 | * 对工作人员的权限管理
16 | * 所有接口都需要管理员权限验证
17 | */
18 | @RestController
19 | @Api(tags = "权限接口")
20 | @RequestMapping("/api/role")
21 | public class RoleController {
22 |
23 | @Resource
24 | private RoleService roleService;
25 |
26 | @GetMapping("/system")
27 | @ApiOperation("查看系统设置有哪些权限")
28 | @PreAuthorize("hasAnyRole('ROLE_ADMIN')")
29 | public String[] listSystemRoles() {
30 | return Roles.roles;
31 | }
32 |
33 | @PostMapping("")
34 | @ApiOperation("添加权限")
35 | @PreAuthorize("hasAnyRole('ROLE_ADMIN')")
36 | public Role create(@RequestBody Role role) throws Exception {
37 | return roleService.create(role);
38 | }
39 |
40 | @GetMapping("")
41 | @ApiOperation("查询员工的权限")
42 | @PreAuthorize("hasAnyRole('ROLE_ADMIN')")
43 | public List listByWorkerId(String wid) {
44 | return roleService.listRolesByWorkerId(wid);
45 | }
46 |
47 | @DeleteMapping("/{id}")
48 | @ApiOperation("删除权限")
49 | @PreAuthorize("hasAnyRole('ROLE_ADMIN')")
50 | public void delete(@PathVariable String id) throws Exception {
51 | roleService.deleteById(id);
52 | }
53 |
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/UploadController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.annotation.DisableBaseResponse;
4 | import com.movie.api.mapper.UploadMapper;
5 | import com.movie.api.model.entity.Upload;
6 | import com.movie.api.service.UploadService;
7 | import io.swagger.annotations.Api;
8 | import io.swagger.annotations.ApiOperation;
9 | import org.springframework.beans.factory.annotation.Value;
10 | import org.springframework.security.access.prepost.PreAuthorize;
11 | import org.springframework.web.bind.annotation.*;
12 | import org.springframework.web.multipart.MultipartFile;
13 |
14 | import javax.annotation.Resource;
15 | import javax.annotation.security.PermitAll;
16 | import javax.servlet.http.HttpServletResponse;
17 | import java.io.ByteArrayInputStream;
18 | import java.io.InputStream;
19 | import java.io.OutputStream;
20 |
21 | /**
22 | * 上传图片存放为二进制到mysql
23 | */
24 | @RestController
25 | @Api(tags = "上传接口")
26 | @RequestMapping("/api/upload")
27 | public class UploadController {
28 |
29 | @Value("${server.port}")
30 | private String serverPort;
31 |
32 | @Resource
33 | private UploadService uploadService;
34 |
35 | @Resource
36 | private UploadMapper uploadMapper;
37 |
38 | @PostMapping("")
39 | @ApiOperation(value = "上传图片")
40 | @PreAuthorize("hasAnyRole('ROLE_ADMIN', 'ROLE_USER', 'ROLE_WORKER')")
41 | @DisableBaseResponse
42 | public String upload(MultipartFile file) throws Exception {
43 | if (file == null) throw new Exception("请求参数缺失");
44 | if (file.isEmpty()) {
45 | throw new Exception("上传失败,请选择文件");
46 | }
47 | return "http://localhost:" + serverPort + "/api/upload?id=" + uploadService.checkAndSaveUpload(file);
48 | }
49 |
50 | @DeleteMapping("")
51 | @ApiOperation(value = "删除图片")
52 | public void delete(@RequestParam("id") String id) {
53 | uploadService.deleteById(id);
54 | }
55 |
56 | @GetMapping("")
57 | @ApiOperation(value = "获取图片")
58 | @PermitAll
59 | @DisableBaseResponse
60 | public void get(@RequestParam("id") String id, HttpServletResponse response) throws Exception {
61 | if ("".equals(id)) {
62 | return;
63 | }
64 | Upload upload = uploadMapper.selectById(id);
65 | if (upload == null) {
66 | throw new Exception("图片不存在");
67 | }
68 | byte[] data = upload.getBytes();
69 | response.setContentType("image/jpeg");
70 | response.setCharacterEncoding("UTF-8");
71 | OutputStream outputStream = response.getOutputStream();
72 | InputStream in = new ByteArrayInputStream(data);
73 | int len;
74 | byte[] buf = new byte[1024];
75 | while ((len = in.read(buf, 0, 1024)) != -1) {
76 | outputStream.write(buf, 0, len);
77 | }
78 | outputStream.close();
79 | }
80 |
81 | }
82 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/UserController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.constant.Roles;
4 | import com.movie.api.model.dto.LoginDto;
5 | import com.movie.api.model.entity.User;
6 | import com.movie.api.service.UserService;
7 | import com.movie.api.utils.JwtTokenUtil;
8 | import io.swagger.annotations.Api;
9 | import io.swagger.annotations.ApiOperation;
10 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
11 | import org.springframework.web.bind.annotation.*;
12 |
13 | import javax.annotation.Resource;
14 | import java.util.ArrayList;
15 | import java.util.HashMap;
16 | import java.util.List;
17 | import java.util.Map;
18 |
19 | @RestController
20 | @Api(tags = "用户接口")
21 | @RequestMapping("/api/user")
22 | public class UserController {
23 |
24 | @Resource
25 | private UserService userService;
26 |
27 | @Resource
28 | private BCryptPasswordEncoder bCryptPasswordEncoder;
29 |
30 | @PostMapping("/login")
31 | @ApiOperation("用户登录")
32 | public Map login(@RequestBody LoginDto dto) throws Exception {
33 | User user = userService.login(dto);
34 | Map map = new HashMap<>();
35 | //是否选择记住我
36 | long exp = dto.isRemember() ? JwtTokenUtil.REMEMBER_EXPIRATION_TIME : JwtTokenUtil.EXPIRATION_TIME;
37 | List roles = new ArrayList<>();
38 | roles.add(Roles.ROLE_USER);
39 | map.put("token", JwtTokenUtil.createToken(dto.getUsername(), roles, exp));
40 | map.put("user", user);
41 | return map;
42 | }
43 |
44 | @GetMapping("")
45 | @ApiOperation(value = "查找所有用户")
46 | public List findAll() {
47 | return userService.findAll();
48 | }
49 |
50 | @PutMapping("")
51 | @ApiOperation(value = "更新用户")
52 | public User updateUser(@RequestBody User user) {
53 | return userService.update(user);
54 | }
55 |
56 | @GetMapping("/{id}")
57 | @ApiOperation(value = "查找用户")
58 | public User findById(@PathVariable String id) {
59 | return userService.findById(id);
60 | }
61 |
62 | @PostMapping("/register")
63 | @ApiOperation(value = "用户注册")
64 | public User save(@RequestBody User user) throws Exception {
65 | return userService.save(user);
66 | }
67 |
68 | }
69 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/WorkerController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.constant.Roles;
4 | import com.movie.api.model.dto.LoginDto;
5 | import com.movie.api.model.entity.Role;
6 | import com.movie.api.model.entity.Worker;
7 | import com.movie.api.service.RoleService;
8 | import com.movie.api.service.WorkerService;
9 | import com.movie.api.utils.JwtTokenUtil;
10 | import io.swagger.annotations.Api;
11 | import io.swagger.annotations.ApiOperation;
12 | import org.springframework.web.bind.annotation.*;
13 |
14 | import javax.annotation.Resource;
15 | import java.util.ArrayList;
16 | import java.util.HashMap;
17 | import java.util.List;
18 | import java.util.Map;
19 |
20 | @RestController
21 | @Api(tags = "员工接口")
22 | @RequestMapping("/api/worker")
23 | public class WorkerController {
24 |
25 | @Resource
26 | private WorkerService workerService;
27 |
28 | @Resource
29 | private RoleService roleService;
30 |
31 | @PostMapping("/login")
32 | @ApiOperation("员工登录")
33 | public Map login(@RequestBody LoginDto dto) throws Exception {
34 | Worker worker = workerService.login(dto);
35 | Map map = new HashMap<>();
36 | //是否选择记住我
37 | long exp = dto.isRemember() ? JwtTokenUtil.REMEMBER_EXPIRATION_TIME : JwtTokenUtil.EXPIRATION_TIME;
38 |
39 | //查询登录的客服具有哪些权限
40 | List roles = new ArrayList<>();
41 | //添加最基本的客服权限
42 | roles.add(Roles.ROLE_WORKER);
43 |
44 | for (Role role : roleService.listRolesByWorkerId(worker.getId())){
45 | roles.add(role.getValue());
46 | }
47 | map.put("token", JwtTokenUtil.createToken(dto.getUsername(), roles, exp));
48 | map.put("worker", worker);
49 | return map;
50 | }
51 |
52 | @PostMapping("")
53 | @ApiOperation("添加员工")
54 | public Worker create(@RequestBody Worker worker) throws Exception {
55 | return workerService.create(worker);
56 | }
57 |
58 | @GetMapping("")
59 | @ApiOperation("查询全部员工")
60 | public List list(){
61 | return workerService.findAll();
62 | }
63 |
64 | @GetMapping("/{id}")
65 | @ApiOperation("根据id查询员工")
66 | public Worker findById(@PathVariable String id){
67 | return workerService.findById(id);
68 | }
69 |
70 | @DeleteMapping("/{id}")
71 | @ApiOperation("根据id删除员工")
72 | public void deleteById(@PathVariable String id){
73 | workerService.deleteById(id);
74 | }
75 |
76 | @PutMapping("")
77 | @ApiOperation("更新员工信息")
78 | public void update(@RequestBody Worker worker) throws Exception {
79 | workerService.update(worker);
80 | }
81 |
82 | }
83 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/controller/WorkerEvaluateController.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.controller;
2 |
3 | import com.movie.api.model.entity.WorkerEvaluate;
4 | import com.movie.api.service.WorkerEvaluateService;
5 | import io.swagger.annotations.Api;
6 | import io.swagger.annotations.ApiOperation;
7 | import org.springframework.web.bind.annotation.*;
8 |
9 | import javax.annotation.Resource;
10 | import java.util.List;
11 |
12 | @RestController
13 | @Api(tags = "客服评价接口")
14 | @RequestMapping("/api/we")
15 | public class WorkerEvaluateController {
16 |
17 | @Resource
18 | private WorkerEvaluateService workerEvaluateService;
19 |
20 | @PostMapping("")
21 | @ApiOperation(value = "保存客服评价")
22 | public void save(@RequestBody WorkerEvaluate workerEvaluate) {
23 | workerEvaluateService.save(workerEvaluate);
24 | }
25 |
26 | @GetMapping("")
27 | @ApiOperation(value = "查看客服评价")
28 | public List save(String id) {
29 | return workerEvaluateService.findByWorkerId(id);
30 | }
31 |
32 | @DeleteMapping("{id}")
33 | @ApiOperation(value = "删除客服评价")
34 | public void deleteById(@PathVariable String id) {
35 | workerEvaluateService.deleteById(id);
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/handler/GlobalExceptionHandler.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.handler;
2 |
3 | import com.movie.api.annotation.DisableBaseResponse;
4 | import com.movie.api.model.support.ResponseResult;
5 | import org.slf4j.Logger;
6 | import org.slf4j.LoggerFactory;
7 | import org.springframework.security.access.AccessDeniedException;
8 | import org.springframework.web.bind.annotation.ExceptionHandler;
9 | import org.springframework.web.bind.annotation.ResponseBody;
10 | import org.springframework.web.bind.annotation.RestControllerAdvice;
11 |
12 | /**
13 | * 捕获controller异常
14 | * controller抛出异常执行下边的函数
15 | * 返回Response写入ApiResult
16 | */
17 | @ResponseBody
18 | @RestControllerAdvice
19 | public class GlobalExceptionHandler {
20 |
21 | private final Logger logger = LoggerFactory.getLogger(getClass());
22 |
23 | @ExceptionHandler(value = Exception.class)
24 | @DisableBaseResponse
25 | public Object handleException(Exception e) {
26 | if (e.getClass().equals(AccessDeniedException.class)){
27 | return new ResponseResult<>(403, "你没有访问权限");
28 | }
29 | logger.error(e.getMessage());
30 | return new ResponseResult<>(400, e.getMessage());
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/api/src/main/java/com/movie/api/handler/GlobalResponseHandler.java:
--------------------------------------------------------------------------------
1 | package com.movie.api.handler;
2 |
3 | import com.movie.api.annotation.DisableBaseResponse;
4 | import com.movie.api.model.support.ResponseResult;
5 | import org.springframework.core.MethodParameter;
6 | import org.springframework.http.MediaType;
7 | import org.springframework.http.server.ServerHttpRequest;
8 | import org.springframework.http.server.ServerHttpResponse;
9 | import org.springframework.web.bind.annotation.ControllerAdvice;
10 | import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
11 |
12 | /**
13 | * 统一拦截Controller中所有方法的返回值
14 | * 封装后返回ResponseResult
15 | */
16 | @ControllerAdvice(basePackages = "com.movie.api")
17 | public class GlobalResponseHandler implements ResponseBodyAdvice