diff --git a/AnnouncementController.java b/AnnouncementController.java new file mode 100644 index 0000000..819784e --- /dev/null +++ b/AnnouncementController.java @@ -0,0 +1,26 @@ +package com.qsd.orange.controller; + +import com.qsd.orange.service.AnnouncementService; +import com.qsd.orange.global.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("announcement") +public class AnnouncementController { + + @Autowired + private AnnouncementService announcementService; + + @GetMapping("all") + public R all( + @RequestParam(value = "page", required = false, defaultValue = "1") Integer page, + @RequestParam(value = "limit", required = false, defaultValue = "9") Integer limit + ){ + return R.success().page(announcementService.all(page, limit)); + } + +} diff --git a/CarController.java b/CarController.java new file mode 100644 index 0000000..0c2e633 --- /dev/null +++ b/CarController.java @@ -0,0 +1,56 @@ +package com.qsd.orange.controller; + +import com.qsd.orange.po.BusCar; +import com.qsd.orange.service.CarService; +import com.qsd.orange.global.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.userdetails.User; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping("car") +public class CarController { + + @Autowired + private CarService carService; + + @GetMapping("all") + public R all( + @RequestParam(value = "page", required = false, defaultValue = "1") Integer page, + @RequestParam(value = "limit", required = false, defaultValue = "9") Integer limit, + @RequestParam(value = "status", required = false, defaultValue = "-1")Integer status + ){ + return R.success().page(carService.queryAllCar(page, limit, status)); + } + + @GetMapping("search") + public R search( + @RequestParam(value = "page", required = false, defaultValue = "1") Integer page, + @RequestParam(value = "limit", required = false, defaultValue = "9") Integer limit, + @RequestParam(value = "status", required = false, defaultValue = "-1") Integer status, + @RequestParam(value = "brand", required = false, defaultValue = "") String brand, + @RequestParam(value = "color", required = false, defaultValue = "") String color + ){ + return R.success().page(carService.queryCar(page, limit, status, brand, color)); + } + + @GetMapping("search/number") + public R number( + @RequestParam(value = "page", required = false, defaultValue = "1") Integer page, + @RequestParam(value = "limit", required = false, defaultValue = "9") Integer limit, + @RequestParam(value = "number", required = false, defaultValue = "") String number + ){ + return R.success().page(carService.queryCarByNumber(page, limit, number)); + } + + @PostMapping("add") + public R add(@Valid BusCar car, Authentication authentication){ + User users = (User)authentication.getPrincipal(); + String username = users.getUsername(); + return R.choose(carService.add(username, car) > 0); + } + +} diff --git a/CheckController.java b/CheckController.java new file mode 100644 index 0000000..c567b8d --- /dev/null +++ b/CheckController.java @@ -0,0 +1,32 @@ +package com.qsd.orange.controller; + +import com.qsd.orange.service.CheckService; +import com.qsd.orange.global.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.userdetails.User; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("check") +public class CheckController { + + @Autowired + private CheckService checkService; + + @PostMapping("add") + public R add( + String id, + @RequestParam(value = "problem", required = false, defaultValue = "无") String problem, + @RequestParam(value = "compensate", required = false, defaultValue = "0") Double compensate, + @RequestParam(value = "description", required = false, defaultValue = "无") String description, + Authentication authentication + ){ + User users = (User)authentication.getPrincipal(); + return R.choose(checkService.add(id, problem, compensate, description, users.getUsername()) > 0); + } + +} diff --git a/CustomerController.java b/CustomerController.java new file mode 100644 index 0000000..8465593 --- /dev/null +++ b/CustomerController.java @@ -0,0 +1,63 @@ +package com.qsd.orange.controller; + +import com.qsd.orange.po.BusCustomer; +import com.qsd.orange.service.CustomerService; +import com.qsd.orange.global.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.userdetails.User; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping("customer") +public class CustomerController { + + @Autowired + private CustomerService customerService; + + @GetMapping("all") + public R all( + @RequestParam(value = "page", required = false, defaultValue = "1") Integer page, + @RequestParam(value = "limit", required = false, defaultValue = "9") Integer limit + ){ + return R.success().page(customerService.queryCustomers(page, limit)); + } + + @GetMapping("search/identity") + public R searchByIdentity( + @RequestParam(value = "page", required = false, defaultValue = "1") Integer page, + @RequestParam(value = "limit", required = false, defaultValue = "9") Integer limit, + String keyword + ){ + return R.success().page(customerService.queryByCustomer(page, limit, "identity", keyword)); + } + + @GetMapping("search/name") + public R searchByName( + @RequestParam(value = "page", required = false, defaultValue = "1") Integer page, + @RequestParam(value = "limit", required = false, defaultValue = "9") Integer limit, + String keyword + ){ + return R.success().page(customerService.queryByCustomer(page, limit, "name", keyword)); + } + + @GetMapping("search/one/identity") + public R searchOneIdentity(String identity){ + return R.success().data("item", customerService.queryOne(identity)); + } + + @PostMapping("add") + public R add(@Valid BusCustomer customer, Authentication authentication){ + User user = (User)authentication.getPrincipal(); + String username = user.getUsername(); + return R.choose(customerService.addCustomer(username, customer) > 0); + } + + @PostMapping("update") + public R update(@Valid BusCustomer customer){ + return R.choose(customerService.updateCustomer(customer) > 0); + } + +} diff --git a/SpringSecurityConfig.java b/SpringSecurityConfig.java new file mode 100644 index 0000000..ceeccef --- /dev/null +++ b/SpringSecurityConfig.java @@ -0,0 +1,82 @@ +package com.qsd.orange.config; + +import com.qsd.orange.security.AccessFailureHandler; +import com.qsd.orange.security.LoginFailureHandler; +import com.qsd.orange.security.LoginSuccessHandler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) +public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + @Qualifier("userDetailsServiceImpl") + private UserDetailsService userDetailsService; + @Autowired + private LoginSuccessHandler loginSuccessHandler; + @Autowired + private LoginFailureHandler loginFailureHandler; + @Autowired + private AccessFailureHandler accessFailureHandler; + @Autowired + private BCryptPasswordEncoder passwordEncoder; + + //授权规则 + @Override + protected void configure(HttpSecurity http) throws Exception { + //拦截规则 + http.authorizeRequests() + .antMatchers("/user/login").permitAll() + .antMatchers("/login.html").permitAll() + .antMatchers("/image/**").permitAll() + .antMatchers("/system/**").hasRole("1") + .antMatchers("/statistics/**").hasRole("1") + .anyRequest().authenticated(); + + //登录配置 + http.formLogin() + .loginPage("/login.html") + .loginProcessingUrl("/user/login") + .usernameParameter("username") + .passwordParameter("password") + .successHandler(loginSuccessHandler) + .failureHandler(loginFailureHandler); + + //注销配置 + http.logout() + .logoutUrl("/user/logout") + .logoutSuccessUrl("/login.html"); + + //关闭csrf防护 + http.csrf().disable(); + + //配置iframe请求 + http.headers().frameOptions().disable(); + + //处理认证失败请求 + http.exceptionHandling().accessDeniedHandler(accessFailureHandler); + + } + + //认证配置 + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth.userDetailsService(userDetailsService) + .passwordEncoder(passwordEncoder); + } + + @Bean + public BCryptPasswordEncoder passwordEncoder(){ + return new BCryptPasswordEncoder(); + } + +} diff --git a/WebConfig.java b/WebConfig.java new file mode 100644 index 0000000..8c54724 --- /dev/null +++ b/WebConfig.java @@ -0,0 +1,9 @@ +package com.qsd.orange.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebConfig implements WebMvcConfigurer { + +}