├── .DS_Store ├── .gitattributes ├── README.md ├── pom.xml └── src ├── main ├── java │ └── com │ │ └── example │ │ ├── TeaWebApplication.java │ │ ├── config │ │ ├── BeanConfig.java │ │ ├── WebConfig.java │ │ └── WebSecurityConfig.java │ │ ├── controller │ │ ├── AdminController.java │ │ ├── LoginController.java │ │ └── UserController.java │ │ ├── entity │ │ ├── Activity.java │ │ ├── OrderProductUser.java │ │ ├── Orders.java │ │ ├── Products.java │ │ ├── Users.java │ │ └── vo │ │ │ ├── Orders.java │ │ │ └── Products.java │ │ ├── exception │ │ ├── CustomException.java │ │ └── GlobleExceptionHandler.java │ │ ├── mapper │ │ ├── ActivityMapper.java │ │ ├── OrderProductUserMapper.java │ │ ├── OrdersMapper.java │ │ ├── ProductsMapper.java │ │ └── UsersMapper.java │ │ ├── result │ │ └── Result.java │ │ ├── service │ │ ├── ActivityService.java │ │ ├── OrderProductUserService.java │ │ ├── OrdersService.java │ │ ├── ProductsService.java │ │ ├── UsersService.java │ │ └── impl │ │ │ ├── ActivityServiceImpl.java │ │ │ ├── OrderProductUserServiceImpl.java │ │ │ ├── OrdersServiceImpl.java │ │ │ ├── ProductsServiceImpl.java │ │ │ └── UsersServiceImpl.java │ │ └── utils │ │ ├── ImageBase64Converter.java │ │ ├── ReplaceBackground.java │ │ └── StringUtil.java └── resources │ ├── application.properties │ ├── static │ ├── front │ │ ├── css │ │ │ ├── bootstrap.min.css │ │ │ ├── css.css │ │ │ ├── main.css │ │ │ ├── owl.carousel.min.css │ │ │ ├── remixicon.css │ │ │ ├── responsive.css │ │ │ ├── style-responsive.css │ │ │ ├── style.css │ │ │ └── typography.css │ │ ├── fonts │ │ │ └── remixicon.woff2 │ │ ├── images │ │ │ ├── date.png │ │ │ ├── error │ │ │ │ └── 02.png │ │ │ ├── img1.jpg │ │ │ ├── img2.jpg │ │ │ ├── img3.jpg │ │ │ ├── img4.jpg │ │ │ ├── img5.jpg │ │ │ ├── img6.jpg │ │ │ ├── loader.gif │ │ │ ├── login │ │ │ │ ├── 1.png │ │ │ │ ├── 2.png │ │ │ │ └── 3.png │ │ │ ├── logo.png │ │ │ ├── user │ │ │ │ ├── 01.jpg │ │ │ │ ├── 02.jpg │ │ │ │ ├── 03.jpg │ │ │ │ ├── 04.jpg │ │ │ │ ├── 05.jpg │ │ │ │ ├── 06.jpg │ │ │ │ ├── 07.jpg │ │ │ │ ├── 08.jpg │ │ │ │ ├── 09.jpg │ │ │ │ ├── 1.jpg │ │ │ │ ├── 10.jpg │ │ │ │ ├── 11.png │ │ │ │ ├── 12.jpg │ │ │ │ ├── 13.jpg │ │ │ │ ├── 14.jpg │ │ │ │ ├── 15.jpg │ │ │ │ ├── 16.jpg │ │ │ │ ├── 17.jpg │ │ │ │ └── 18.jpg │ │ │ ├── user1.jpg │ │ │ ├── user2.jpg │ │ │ └── user3.jpg │ │ ├── js │ │ │ ├── bootstrap.bundle.min.js │ │ │ ├── bootstrap.min.js │ │ │ ├── custom.js │ │ │ ├── echarts.min.js │ │ │ ├── jquery.min.js │ │ │ ├── modernizr.min.js │ │ │ ├── moment.js │ │ │ ├── smooth-scrollbar.js │ │ │ └── wangEditor.min.js │ │ └── laydate │ │ │ ├── laydate.js │ │ │ └── theme │ │ │ └── default │ │ │ ├── font │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.ttf │ │ │ └── iconfont.woff │ │ │ └── laydate.css │ └── preImg │ │ ├── background.jpg │ │ └── tea │ │ ├── tea01.png │ │ ├── tea02.png │ │ ├── tea03.png │ │ ├── tea04.png │ │ └── tea05.png │ └── templates │ ├── activity.html │ ├── admin.html │ ├── cart.html │ ├── collection.html │ ├── group.html │ ├── index.html │ ├── index_admin.html │ ├── login_page.html │ ├── mine.html │ ├── mine_admin.html │ ├── order.html │ ├── order_admin.html │ ├── product.html │ ├── product_admin.html │ ├── template.html │ └── user.html └── test └── java └── com └── example └── TeaWebApplicationTests.java /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/.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 | 5 | # 291.PetSuppliesSalesManagementSystem 6 | 7 |

群: 983063232(入群获取sql文件)

8 |

QQ: 206157502(加好友获取sql文件)

9 | 10 |

291.宠物用品销售管理系统

11 | 12 | 13 | 14 |

15 | 16 | 17 | 18 | 19 |

20 | 21 | # 简介 22 | 23 | > 本代码来源于网络,仅供学习参考使用,请入群(983063232)后联系群主索要sql文件! 24 | > 25 | > 提供1.远程部署/2.修改代码/3.设计文档指导/4.框架代码讲解等服务 26 | > 27 | > 登录地址:http://localhost:8080/ 28 | > 29 | > 用户名: user 密码: 123456 30 | > 31 | > 管理员用户名: admin 密码: 123456 32 | > 33 | 34 | 35 | # 环境 36 | 37 | - IntelliJ IDEA 2021.3 38 | 39 | - Mysql 5.7.26 40 | 41 | - Tomcat 7.0.73 42 | 43 | - JDK 1.8 44 | 45 | 46 | 47 | 48 | 49 | ## 缩略图 50 | 51 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/65d48f24-7653-4df6-8d6b-0ece4d758448.png) 52 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/97fb3cd8-e543-45a8-9e8e-36e916627f75.png) 53 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/1230ff82-fde0-479f-a8b9-91ab51e02134.png) 54 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/2c99ade5-9a11-4831-bd8f-93e96e242366.png) 55 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/7a297b3f-188b-40c9-bdfc-6e905fe771ab.png) 56 | ![](https://bitwise.oss-cn-heyuan.aliyuncs.com/2024/9/10/a8276bda-95cc-47d6-b3f4-518d578a0939.png) 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 2.6.4 9 | 10 | 11 | com.example 12 | tea-web 13 | 0.0.1-SNAPSHOT 14 | tea-web 15 | tea-web 16 | 17 | 1.8 18 | 19 | 20 | 21 | 22 | org.springframework.boot 23 | spring-boot-starter-thymeleaf 24 | 25 | 26 | 27 | org.springframework.boot 28 | spring-boot-starter-web 29 | 30 | 31 | 32 | org.springframework.boot 33 | spring-boot-devtools 34 | 35 | 36 | 37 | org.springframework.boot 38 | spring-boot-starter-validation 39 | 40 | 41 | 42 | org.springframework.boot 43 | spring-boot-starter-data-jpa 44 | 45 | 46 | 47 | commons-fileupload 48 | commons-fileupload 49 | 1.3 50 | 51 | 52 | 53 | mysql 54 | mysql-connector-java 55 | 56 | 57 | 58 | com.baomidou 59 | mybatis-plus-boot-starter 60 | 3.5.0 61 | 62 | 63 | 64 | org.springframework.boot 65 | spring-boot-starter-security 66 | 67 | 68 | 69 | org.thymeleaf.extras 70 | thymeleaf-extras-springsecurity5 71 | 72 | 73 | 74 | org.projectlombok 75 | lombok 76 | 77 | 78 | 79 | cn.hutool 80 | hutool-all 81 | 5.7.19 82 | 83 | 84 | 85 | com.alibaba 86 | fastjson 87 | 1.2.74 88 | 89 | 90 | org.apache.commons 91 | commons-lang3 92 | 93 | 94 | org.springframework.boot 95 | spring-boot-starter-test 96 | test 97 | 98 | 99 | 100 | 101 | 102 | 103 | org.springframework.boot 104 | spring-boot-maven-plugin 105 | 106 | 107 | 108 | org.projectlombok 109 | lombok 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /src/main/java/com/example/TeaWebApplication.java: -------------------------------------------------------------------------------- 1 | package com.example; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class TeaWebApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(TeaWebApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/example/config/BeanConfig.java: -------------------------------------------------------------------------------- 1 | package com.example.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; 6 | import org.springframework.security.crypto.password.PasswordEncoder; 7 | 8 | @Configuration 9 | public class BeanConfig { 10 | 11 | @Bean 12 | public PasswordEncoder passwordEncoder(){ 13 | return new BCryptPasswordEncoder(); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/example/config/WebConfig.java: -------------------------------------------------------------------------------- 1 | package com.example.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 5 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 6 | 7 | @Configuration 8 | public class WebConfig implements WebMvcConfigurer { 9 | 10 | private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { 11 | "classpath:/META-INF/resources/", "classpath:/resources/", 12 | "classpath:/static/", "classpath:/public/" }; 13 | 14 | 15 | @Override 16 | public void addResourceHandlers(ResourceHandlerRegistry registry) { 17 | if (!registry.hasMappingForPattern("/webjars/**")) { 18 | registry.addResourceHandler("/webjars/**").addResourceLocations( 19 | "classpath:/META-INF/resources/webjars/"); 20 | } 21 | if (!registry.hasMappingForPattern("/**")) { 22 | registry.addResourceHandler("/**").addResourceLocations( 23 | CLASSPATH_RESOURCE_LOCATIONS); 24 | } 25 | 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/example/config/WebSecurityConfig.java: -------------------------------------------------------------------------------- 1 | package com.example.config; 2 | 3 | import com.example.service.impl.UsersServiceImpl; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 7 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; 8 | import org.springframework.security.config.annotation.web.builders.WebSecurity; 9 | import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 10 | import org.springframework.security.crypto.password.PasswordEncoder; 11 | 12 | @Configuration 13 | public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 14 | 15 | @Autowired 16 | private UsersServiceImpl usersService; 17 | 18 | @Autowired 19 | private PasswordEncoder passwordEncoder; 20 | 21 | @Override 22 | protected void configure(AuthenticationManagerBuilder auth) throws Exception { 23 | auth.userDetailsService(usersService).passwordEncoder(passwordEncoder); 24 | } 25 | 26 | @Override 27 | protected void configure(HttpSecurity http) throws Exception { 28 | http.authorizeRequests() 29 | .mvcMatchers("/login/**", "/", "/login/registration", "/login.html", "/").permitAll() 30 | .antMatchers("/user/**").hasRole("1") 31 | .antMatchers("/admin/**").hasRole("2") 32 | .anyRequest().permitAll().and() 33 | .formLogin().loginPage("/login_page").usernameParameter("username")//设置登录账号参数,与表单参数一致 34 | .passwordParameter("password")//设置登录密码参数,与表单参数一致 35 | .loginProcessingUrl("/login/login").defaultSuccessUrl("/login/login")//登录成功后默认的跳转页面路径 36 | .failureUrl("/").and() 37 | .logout().logoutUrl("/logout").permitAll().and() 38 | .sessionManagement().invalidSessionUrl("/") //失效后跳转到登陆页面 39 | .and().csrf().disable(); 40 | } 41 | 42 | @Override 43 | public void configure(WebSecurity web) throws Exception { 44 | web.ignoring().antMatchers("/static/front/**"); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/example/controller/LoginController.java: -------------------------------------------------------------------------------- 1 | package com.example.controller; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 5 | import com.example.entity.Activity; 6 | import com.example.entity.Users; 7 | import com.example.exception.CustomException; 8 | import com.example.mapper.ActivityMapper; 9 | import com.example.result.Result; 10 | import com.example.service.ActivityService; 11 | import com.example.service.UsersService; 12 | import com.example.utils.ReplaceBackground; 13 | import org.springframework.beans.factory.annotation.Autowired; 14 | import org.springframework.security.core.annotation.AuthenticationPrincipal; 15 | import org.springframework.security.core.userdetails.UserDetails; 16 | import org.springframework.security.crypto.password.PasswordEncoder; 17 | import org.springframework.stereotype.Controller; 18 | import org.springframework.ui.Model; 19 | import org.springframework.validation.annotation.Validated; 20 | import org.springframework.web.bind.annotation.PostMapping; 21 | import org.springframework.web.bind.annotation.RequestMapping; 22 | import org.springframework.web.bind.annotation.ResponseBody; 23 | 24 | import javax.servlet.http.HttpServletRequest; 25 | import java.util.Date; 26 | import java.util.List; 27 | import java.util.Objects; 28 | 29 | 30 | @Controller 31 | public class LoginController { 32 | 33 | @Autowired 34 | private PasswordEncoder passwordEncoder; 35 | 36 | @Autowired 37 | private UsersService usersService; 38 | @Autowired 39 | private ActivityService activityService; 40 | 41 | //TODO 登录页 42 | @RequestMapping("/login_page") 43 | public String login(Model model) { 44 | List list = usersService.list(new QueryWrapper().eq("username", "admin")); 45 | List list1 = activityService.list(new QueryWrapper().eq("id", 1)); 46 | if (list1.size() == 0){ 47 | Activity activity = new Activity(); 48 | activity.setId(1); 49 | activity.setIsDelete(false); 50 | activityService.save(activity); 51 | } 52 | if (!(list.size() > 0)) { 53 | Users users = new Users(); 54 | users.setUsername("admin"); 55 | users.setPassword(passwordEncoder.encode("123456")); 56 | users.setAddress(""); 57 | users.setIsDelete(false); 58 | users.setPhone("12312341234"); 59 | users.setEmail("153131@qq.com"); 60 | users.setCollection(""); 61 | users.setCart(""); 62 | users.setUserCreateTime(new Date()); 63 | users.setRole("2"); 64 | users.setIsDelete(false); 65 | usersService.save(users); 66 | } 67 | String imgBase64Str = ReplaceBackground.replaceImg(); 68 | model.addAttribute("imgBase64Str", imgBase64Str); 69 | return "login_page"; 70 | } 71 | 72 | //TODO 登录页 73 | @RequestMapping("/") 74 | public String nullPath(Model model) { 75 | List list = usersService.list(new QueryWrapper().eq("username", "admin")); 76 | List list1 = activityService.list(new QueryWrapper().eq("id", 1)); 77 | if (list1.size() == 0){ 78 | Activity activity = new Activity(); 79 | activity.setId(1); 80 | activity.setIsDelete(false); 81 | activityService.save(activity); 82 | } 83 | if (!(list.size() > 0)) { 84 | Users users = new Users(); 85 | users.setUsername("admin"); 86 | users.setPassword(passwordEncoder.encode("123456")); 87 | users.setAddress(""); 88 | users.setIsDelete(false); 89 | users.setPhone("12312341234"); 90 | users.setEmail("153131@qq.com"); 91 | users.setCollection(""); 92 | users.setCart(""); 93 | users.setUserCreateTime(new Date()); 94 | users.setRole("2"); 95 | users.setIsDelete(false); 96 | usersService.save(users); 97 | } 98 | String imgBase64Str = ReplaceBackground.replaceImg(); 99 | model.addAttribute("imgBase64Str", imgBase64Str); 100 | return "login_page"; 101 | } 102 | 103 | //TODO 登录系统后根据用户角色导航到管理端或者用户端 104 | @RequestMapping("/login/login") 105 | public String loginLogin(HttpServletRequest request, @AuthenticationPrincipal UserDetails userDetails) { 106 | Users one = usersService.getOne(new QueryWrapper().eq("username", userDetails.getUsername())); 107 | if ("1".equals(one.getRole())) { 108 | return "redirect:/user/index"; 109 | } else if ("2".equals(one.getRole())) { 110 | return "redirect:/admin/index"; 111 | } else { 112 | return "redirect:/logout"; 113 | } 114 | } 115 | 116 | //TODO 注册用户 117 | @PostMapping("/login/registration") 118 | @ResponseBody 119 | public String registration(@Validated Users users, String password_2) throws CustomException { 120 | System.out.println(users); 121 | users.setRole("1"); 122 | users.setCart(""); 123 | users.setCollection(""); 124 | users.setIsDelete(false); 125 | if (users.getPassword().equals(password_2)) { 126 | users.setPassword(passwordEncoder.encode(users.getPassword())); 127 | List list = usersService.list(new QueryWrapper().eq("username", users.getUsername())); 128 | if (list.size() > 0) { 129 | return JSON.toJSONString(Result.buildFail("该用户名已存在")); 130 | } 131 | users.setUserCreateTime(new Date()); 132 | usersService.save(users); 133 | return JSON.toJSONString(Result.buildSuccess("注册成功")); 134 | } 135 | return JSON.toJSONString(Result.buildFail("密码和确认密码不一致")); 136 | } 137 | 138 | } 139 | -------------------------------------------------------------------------------- /src/main/java/com/example/entity/Activity.java: -------------------------------------------------------------------------------- 1 | package com.example.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableId; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * (Activity)实体类 12 | * 13 | * @author oceans 14 | * @since 2022-04-17 19:19:43 15 | */ 16 | @Data 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class Activity implements Serializable { 20 | private static final long serialVersionUID = -68250454628050808L; 21 | 22 | @TableId 23 | private Integer id; 24 | 25 | private String info; 26 | 27 | private Boolean isDelete; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/example/entity/OrderProductUser.java: -------------------------------------------------------------------------------- 1 | package com.example.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableId; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * (OrderProductUser)实体类 12 | * 13 | * @author makejava 14 | * @since 2022-03-24 16:55:10 15 | */ 16 | @Data 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class OrderProductUser implements Serializable { 20 | private static final long serialVersionUID = 200513105756834730L; 21 | /** 22 | * 订单id 23 | */ 24 | @TableId 25 | private Integer orderId; 26 | /** 27 | * 产品id 28 | */ 29 | private Integer productId; 30 | /** 31 | * 用户id 32 | */ 33 | private Integer userId; 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/example/entity/Orders.java: -------------------------------------------------------------------------------- 1 | package com.example.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableId; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.io.Serializable; 10 | 11 | /** 12 | * (Orders)实体类 13 | * 14 | * @author makejava 15 | * @since 2022-03-24 16:55:10 16 | */ 17 | @Data 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class Orders implements Serializable { 21 | private static final long serialVersionUID = 676710221565364428L; 22 | 23 | @TableId 24 | private Integer orderId; 25 | /** 26 | * 评价 27 | */ 28 | private String orderValuation; 29 | /** 30 | * 订单编号 31 | */ 32 | private String orderNumber; 33 | /** 34 | * 订单数量 35 | */ 36 | private Integer orderAmount; 37 | /** 38 | * 是否付款 39 | */ 40 | private Boolean orderIsPay; 41 | /** 42 | * 收货状态 43 | */ 44 | private String orderIsReceipt; 45 | /** 46 | * 是否结束组团 47 | */ 48 | private Boolean orderIsGroupEnd; 49 | /** 50 | * 是否组团 51 | */ 52 | private Boolean orderIsGroup; 53 | /** 54 | * 是否评价 55 | */ 56 | private Boolean orderIsEvaluate; 57 | 58 | private Date orderCreateTime; 59 | 60 | private Date orderUpdateTime; 61 | 62 | private Boolean orderIsDelete; 63 | 64 | 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/com/example/entity/Products.java: -------------------------------------------------------------------------------- 1 | package com.example.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | import org.hibernate.validator.constraints.Length; 9 | 10 | import javax.validation.constraints.DecimalMax; 11 | import javax.validation.constraints.DecimalMin; 12 | import javax.validation.constraints.NotNull; 13 | import javax.validation.constraints.Positive; 14 | import java.util.Date; 15 | import java.io.Serializable; 16 | 17 | /** 18 | * (Products)实体类 19 | * 20 | * @author makejava 21 | * @since 2022-03-24 14:11:47 22 | */ 23 | @Data 24 | @AllArgsConstructor 25 | @NoArgsConstructor 26 | public class Products implements Serializable { 27 | private static final long serialVersionUID = 771421129548508894L; 28 | 29 | @TableId 30 | private Integer productId; 31 | /** 32 | * 产品名称 33 | */ 34 | @NotNull(message = "产品名称不能为空") 35 | @Length(min = 1,max = 45,message = "产品名称长度不符合要求") 36 | private String productName; 37 | /** 38 | * 产品类型 39 | */ 40 | @NotNull(message = "产品类型不能为空") 41 | @Length(min = 1,max = 45,message = "产品类型长度不符合要求") 42 | private String productStyle; 43 | /** 44 | * 产品描述 45 | */ 46 | @NotNull(message = "产品描述不能为空") 47 | @Length(min = 1,max = 255,message = "产品描述长度不符合要求") 48 | private String productDescribe; 49 | /** 50 | * 产品价格 51 | */ 52 | @NotNull(message = "产品价格不能为空") 53 | private Double productPrice; 54 | /** 55 | * 产品编号 56 | */ 57 | private String productNumber; 58 | /** 59 | * 产品数量 60 | */ 61 | @NotNull(message = "产品数量不能为空") 62 | @Positive(message = "产品数量必须是数字") 63 | private Integer productAmount; 64 | /** 65 | * 产品类别 66 | */ 67 | private String productCategory; 68 | /** 69 | * 上架时间 70 | */ 71 | private Date productCreateTime; 72 | /** 73 | * 修改时间 74 | */ 75 | private Date productUpdateTime; 76 | /** 77 | * 产品是否删除 78 | */ 79 | private Boolean productIsDelete; 80 | 81 | private byte[] productImg; 82 | 83 | } 84 | -------------------------------------------------------------------------------- /src/main/java/com/example/entity/Users.java: -------------------------------------------------------------------------------- 1 | package com.example.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableId; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import org.hibernate.validator.constraints.Length; 8 | 9 | import javax.validation.constraints.*; 10 | import java.util.Date; 11 | import java.io.Serializable; 12 | 13 | /** 14 | * (Users)实体类 15 | * 16 | * @author makejava 17 | * @since 2022-03-24 13:55:55 18 | */ 19 | @Data 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | public class Users implements Serializable { 23 | private static final long serialVersionUID = 225599958036921154L; 24 | 25 | @TableId 26 | private Integer userId; 27 | 28 | @NotNull 29 | @Length(min = 1,max = 15,message = "用户名长度不符合要求") 30 | private String username; 31 | 32 | @NotNull 33 | @Length(min = 1,max = 100,message = "收货地址长度不符合要求") 34 | private String address; 35 | 36 | @Email(message = "邮箱不符合要求") 37 | private String email; 38 | 39 | @NotNull 40 | @Positive(message = "电话号码必须是11位") 41 | @Length(min = 11,max = 11,message = "电话号码必须是11位") 42 | private String phone; 43 | 44 | @NotNull 45 | @Length(min = 6,max = 18,message = "由数字和26个英文字母组成长度在6到18位的字符串") 46 | @Pattern(regexp = "^[A-Za-z0-9]+$", message = "由数字和26个英文字母组成长度在6到18位的字符串") 47 | private String password; 48 | 49 | private Date userCreateTime; 50 | 51 | private Date userUpdateTime; 52 | 53 | private String role; 54 | 55 | private String collection; 56 | 57 | private String cart; 58 | 59 | private Boolean isDelete; 60 | 61 | 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/com/example/entity/vo/Orders.java: -------------------------------------------------------------------------------- 1 | package com.example.entity.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.hibernate.validator.constraints.Length; 7 | 8 | import javax.validation.constraints.NotNull; 9 | import javax.validation.constraints.Positive; 10 | import java.util.Date; 11 | 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class Orders { 16 | 17 | private Integer productId; 18 | /** 19 | * 产品名称 20 | */ 21 | private String productName; 22 | /** 23 | * 产品类型 24 | */ 25 | private String productStyle; 26 | /** 27 | * 产品描述 28 | */ 29 | private String productDescribe; 30 | /** 31 | * 产品价格 32 | */ 33 | private Double productPrice; 34 | /** 35 | * 产品数量 36 | */ 37 | private Integer productAmount; 38 | 39 | private Date productCreateTime; 40 | 41 | private Integer orderId; 42 | /** 43 | * 订单编号 44 | */ 45 | private String orderNumber; 46 | 47 | private Date orderCreateTime; 48 | 49 | private Double totalMoney; 50 | /** 51 | * 是否付款 52 | */ 53 | private Boolean orderIsPay; 54 | /** 55 | * 收货状态 56 | */ 57 | private String orderIsReceipt; 58 | /** 59 | * 是否评价 60 | */ 61 | private Boolean orderIsEvaluate; 62 | /** 63 | * 评价 64 | */ 65 | private String orderValuation; 66 | /** 67 | * 订单数量 68 | */ 69 | private Integer orderAmount; 70 | 71 | } 72 | -------------------------------------------------------------------------------- /src/main/java/com/example/entity/vo/Products.java: -------------------------------------------------------------------------------- 1 | package com.example.entity.vo; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | import org.hibernate.validator.constraints.Length; 9 | 10 | import javax.validation.constraints.NotNull; 11 | import javax.validation.constraints.Positive; 12 | import java.io.Serializable; 13 | import java.util.Date; 14 | 15 | /** 16 | * (Products)实体类 17 | * 18 | * @author makejava 19 | * @since 2022-03-24 14:11:47 20 | */ 21 | @Data 22 | @AllArgsConstructor 23 | @NoArgsConstructor 24 | public class Products implements Serializable { 25 | 26 | private Integer productId; 27 | 28 | private String productName; 29 | 30 | private String productStyle; 31 | 32 | private String productDescribe; 33 | 34 | private Double productPrice; 35 | 36 | private String productNumber; 37 | 38 | private Integer productAmount; 39 | 40 | private String productCategory; 41 | 42 | private Date productCreateTime; 43 | 44 | private Date productUpdateTime; 45 | 46 | private Boolean productIsDelete; 47 | 48 | private byte[] productImg; 49 | 50 | private String url; 51 | 52 | private String orderValuation; 53 | 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/com/example/exception/CustomException.java: -------------------------------------------------------------------------------- 1 | package com.example.exception; 2 | 3 | public class CustomException extends RuntimeException{ 4 | 5 | public CustomException() { 6 | } 7 | 8 | public CustomException(String message) { 9 | super(message); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/example/exception/GlobleExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package com.example.exception; 2 | 3 | import com.example.result.Result; 4 | import org.springframework.ui.Model; 5 | import org.springframework.validation.BindException; 6 | import org.springframework.validation.BindingResult; 7 | import org.springframework.validation.FieldError; 8 | import org.springframework.web.bind.annotation.ControllerAdvice; 9 | import org.springframework.web.bind.annotation.ExceptionHandler; 10 | import org.springframework.web.bind.annotation.ResponseBody; 11 | 12 | @ControllerAdvice 13 | public class GlobleExceptionHandler { 14 | 15 | @ExceptionHandler(CustomException.class) 16 | @ResponseBody 17 | public Result CustomException(CustomException e){ 18 | return Result.buildFail(e.getMessage()); 19 | } 20 | 21 | @ExceptionHandler(BindException.class) 22 | @ResponseBody 23 | public Result BindException(BindException e, Model model){ 24 | model.addAttribute("error", e.getMessage()); 25 | BindingResult bindingResult = e.getBindingResult(); 26 | String errorMessage = ""; 27 | for (FieldError fieldError : bindingResult.getFieldErrors()) { 28 | errorMessage += fieldError.getDefaultMessage()+";"; 29 | } 30 | return Result.buildFail(errorMessage); 31 | } 32 | 33 | @ExceptionHandler(Exception.class) 34 | public String handlerException(Exception e, Model model){ 35 | model.addAttribute("error", e.getMessage()); 36 | return "error"; 37 | } 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/example/mapper/ActivityMapper.java: -------------------------------------------------------------------------------- 1 | package com.example.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.example.entity.Activity; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * (Activity)表数据库访问层 9 | * 10 | * @author oceans 11 | * @since 2022-04-17 19:19:43 12 | */ 13 | @Mapper 14 | public interface ActivityMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/example/mapper/OrderProductUserMapper.java: -------------------------------------------------------------------------------- 1 | package com.example.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.example.entity.OrderProductUser; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface OrderProductUserMapper extends BaseMapper { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/example/mapper/OrdersMapper.java: -------------------------------------------------------------------------------- 1 | package com.example.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.example.entity.Orders; 5 | import org.apache.ibatis.annotations.Mapper; 6 | import org.apache.ibatis.annotations.Select; 7 | import org.apache.ibatis.annotations.Update; 8 | 9 | import java.util.List; 10 | 11 | @Mapper 12 | public interface OrdersMapper extends BaseMapper { 13 | 14 | @Update("update orders set order_is_pay = true where order_number = #{orderNumber}") 15 | Boolean paymentByOrderNumber(String orderNumber); 16 | 17 | @Select("select product_id,order_create_time,product_name,product_style,product_describe,product_price,product_amount,product_create_time,order_id,order_number " + 18 | " from orders natural join order_product_user natural join products " + 19 | " where order_is_group = true and order_is_group_end = false and user_id != #{userId} and product_name like #{searchCon}") 20 | List getAllGrouping(Integer userId, String searchCon); 21 | 22 | @Update("update orders set order_is_group_end = true where order_number = #{orderNumber}") 23 | Boolean updateOrderByOrderNumber(String orderNumber); 24 | 25 | @Select("select order_valuation,order_is_evaluate,order_is_receipt,order_is_pay,product_id,order_create_time,product_name,product_style,product_describe,product_price,product_amount,product_create_time,order_id,order_number,order_amount " + 26 | " from orders natural join order_product_user natural join products " + 27 | " where user_id = #{userId} and product_name like #{searchCon} and order_is_delete = false order by order_create_time desc") 28 | List getAllOrderByUserId(Integer userId, String searchCon); 29 | 30 | @Update("update orders set order_valuation = #{orderValuation} where order_number = #{orderNumber}") 31 | Boolean valuationOrderByOrderNumber(String orderNumber, String orderValuation); 32 | 33 | @Update("update orders set order_is_receipt = '2' where order_number = #{orderNumber}") 34 | Boolean sendProductByOrderNumber(String orderNumber); 35 | 36 | @Update("update orders set order_is_receipt = '3' where order_number = #{orderNumber}") 37 | Boolean receiptProductByOrderNumber(String orderNumber); 38 | 39 | @Update("update orders set order_is_delete = true where order_number = #{orderNumber}") 40 | Boolean deleteOrdersByOrderNumber(String orderNumber); 41 | 42 | @Select("select order_valuation,order_is_evaluate,order_is_receipt,order_is_pay,product_id,order_create_time,product_name,product_style,product_describe,product_price,product_amount,product_create_time,order_id,order_number,order_amount " + 43 | " from orders natural join order_product_user natural join products " + 44 | " where product_name like #{searchCon} and order_is_delete = false") 45 | List getAllOrder(String searchCon); 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/example/mapper/ProductsMapper.java: -------------------------------------------------------------------------------- 1 | package com.example.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.example.entity.Products; 5 | import com.example.entity.vo.Orders; 6 | import org.apache.ibatis.annotations.Mapper; 7 | import org.apache.ibatis.annotations.Select; 8 | import org.apache.ibatis.annotations.Update; 9 | 10 | import java.util.Date; 11 | import java.util.List; 12 | import java.util.Set; 13 | 14 | @Mapper 15 | public interface ProductsMapper extends BaseMapper { 16 | 17 | @Update("update products set product_is_delete = true where product_id = #{productId}") 18 | Boolean deleteProductBy(Integer productId); 19 | 20 | @Select("select product_name,product_price,order_amount from products natural join order_product_user natural join orders " + 21 | " where product_category = #{productCategory} and order_create_time between #{startDate} and #{endDate}") 22 | List getAboutOrderInformation(Date startDate, Date endDate, String productCategory); 23 | 24 | @Select("SELECT order_valuation from products NATURAL join order_product_user NATURAL join orders where product_id = #{productId}") 25 | Set getOrderValuationByProductId(Integer productId); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/example/mapper/UsersMapper.java: -------------------------------------------------------------------------------- 1 | package com.example.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.example.entity.Users; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface UsersMapper extends BaseMapper { 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/example/result/Result.java: -------------------------------------------------------------------------------- 1 | package com.example.result; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class Result implements Serializable { 9 | 10 | private static final long serialVersionUID = 2L; 11 | 12 | private Integer code; 13 | private String message; 14 | private T data; 15 | 16 | 17 | public Result setCode(Integer code) { 18 | this.code = code; 19 | return this; 20 | } 21 | 22 | public Result setMessage(String message) { 23 | this.message = message; 24 | return this; 25 | } 26 | 27 | public Result setData(T data) { 28 | this.data = data; 29 | return this; 30 | } 31 | 32 | public static Result build(){ 33 | return new Result(); 34 | } 35 | 36 | public static Result buildSuccess() { 37 | return build().setCode(200).setMessage("操作成功"); 38 | } 39 | 40 | public static Result buildSuccess(String message) { 41 | return build().setCode(200).setMessage(message); 42 | } 43 | 44 | public static Result buildFail() { 45 | return build().setCode(400).setMessage("操作失败"); 46 | } 47 | 48 | public static Result buildFail(String message) { 49 | return build().setCode(400).setMessage(message); 50 | } 51 | 52 | 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/example/service/ActivityService.java: -------------------------------------------------------------------------------- 1 | package com.example.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.example.entity.Activity; 5 | import java.util.List; 6 | 7 | /** 8 | * (Activity)表服务接口 9 | * 10 | * @author oceans 11 | * @since 2022-04-17 19:19:43 12 | */ 13 | public interface ActivityService extends IService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/example/service/OrderProductUserService.java: -------------------------------------------------------------------------------- 1 | package com.example.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.example.entity.OrderProductUser; 5 | import java.util.List; 6 | 7 | /** 8 | * (OrderProductUser)表服务接口 9 | * 10 | * @author makejava 11 | * @since 2022-03-24 16:55:10 12 | */ 13 | public interface OrderProductUserService extends IService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/example/service/OrdersService.java: -------------------------------------------------------------------------------- 1 | package com.example.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.example.entity.Orders; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * (Orders)表服务接口 10 | * 11 | * @author makejava 12 | * @since 2022-03-24 16:55:10 13 | */ 14 | public interface OrdersService extends IService { 15 | 16 | Orders generateOrder(Integer productId, Integer productAmount_m, Boolean isGroup, Integer userId, Boolean isCart); 17 | 18 | Orders paymentByOrderNumber(String orderNumber); 19 | 20 | List getAllGrouping(Integer userId, String searchCon); 21 | 22 | Orders addGenerateOrder(Integer productId, Integer productAmount, Integer userId); 23 | 24 | Boolean updateOrderByOrderNumber(String orderNumber); 25 | 26 | List getAllOrderByUserId(Integer userId, String searchCon); 27 | 28 | Boolean valuationOrderByOrderNumber(String orderNumber, String orderValuation); 29 | 30 | Boolean sendProductByOrderNumber(String orderNumber); 31 | 32 | Boolean receiptProductByOrderNumber(String orderNumber); 33 | 34 | Boolean deleteOrdersByOrderNumber(String orderNumber); 35 | 36 | List getAllOrder(String searchCon); 37 | 38 | String getOrderValuationByProductId(Integer productId); 39 | } 40 | 41 | -------------------------------------------------------------------------------- /src/main/java/com/example/service/ProductsService.java: -------------------------------------------------------------------------------- 1 | package com.example.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.example.entity.Products; 5 | import java.util.List; 6 | import java.util.Map; 7 | 8 | /** 9 | * (Products)表服务接口 10 | * 11 | * @author makejava 12 | * @since 2022-03-24 14:11:47 13 | */ 14 | public interface ProductsService extends IService { 15 | 16 | Boolean deleteProductById(String productId); 17 | 18 | Map getEchartsData(String searchYear, String searchMonth); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/example/service/UsersService.java: -------------------------------------------------------------------------------- 1 | package com.example.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.example.entity.Users; 5 | import java.util.List; 6 | 7 | /** 8 | * (Users)表服务接口 9 | * 10 | * @author makejava 11 | * @since 2022-03-24 13:55:55 12 | */ 13 | public interface UsersService extends IService { 14 | 15 | void deleteCartByUsernameAndPid(String username, String productId); 16 | 17 | void deleteCartByUserIdAndPid(String userId, String productId); 18 | 19 | void clearCart(String username); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/example/service/impl/ActivityServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.example.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.example.entity.Activity; 5 | import com.example.mapper.ActivityMapper; 6 | import com.example.service.ActivityService; 7 | import org.springframework.stereotype.Service; 8 | 9 | import javax.annotation.Resource; 10 | import java.util.List; 11 | 12 | /** 13 | * (Activity)表服务实现类 14 | * 15 | * @author oceans 16 | * @since 2022-04-17 19:19:43 17 | */ 18 | @Service("activityService") 19 | public class ActivityServiceImpl extends ServiceImpl implements ActivityService { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/example/service/impl/OrderProductUserServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.example.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.example.entity.OrderProductUser; 5 | import com.example.mapper.OrderProductUserMapper; 6 | import com.example.service.OrderProductUserService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * (OrderProductUser)表服务实现类 11 | * 12 | * @author makejava 13 | * @since 2022-03-24 16:55:10 14 | */ 15 | @Service("orderProductUserService") 16 | public class OrderProductUserServiceImpl extends ServiceImpl implements OrderProductUserService { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/example/service/impl/OrdersServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.example.service.impl; 2 | 3 | import cn.hutool.core.date.DateTime; 4 | import cn.hutool.core.date.DateUtil; 5 | import cn.hutool.core.util.IdUtil; 6 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 7 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 8 | import com.example.entity.OrderProductUser; 9 | import com.example.entity.Orders; 10 | import com.example.entity.Products; 11 | import com.example.exception.CustomException; 12 | import com.example.mapper.OrderProductUserMapper; 13 | import com.example.mapper.OrdersMapper; 14 | import com.example.mapper.ProductsMapper; 15 | import com.example.service.OrdersService; 16 | import com.example.service.ProductsService; 17 | import com.example.service.UsersService; 18 | import org.springframework.beans.factory.annotation.Autowired; 19 | import org.springframework.stereotype.Service; 20 | 21 | import java.util.*; 22 | 23 | /** 24 | * (Orders)表服务实现类 25 | * 26 | * @author makejava 27 | * @since 2022-03-24 16:55:10 28 | */ 29 | @Service("ordersService") 30 | public class OrdersServiceImpl extends ServiceImpl implements OrdersService { 31 | 32 | @Autowired 33 | private OrdersMapper ordersMapper; 34 | @Autowired 35 | private OrderProductUserMapper orderProductUserMapper; 36 | @Autowired 37 | private ProductsMapper productsMapper; 38 | @Autowired 39 | private UsersService usersService; 40 | 41 | @Override 42 | public Orders generateOrder(Integer productId, Integer productAmount_m, Boolean isGroup, Integer userId, Boolean isCart) { 43 | Orders order = new Orders(); 44 | String orderNumber = IdUtil.simpleUUID(); 45 | order.setOrderNumber(orderNumber); 46 | order.setOrderAmount(productAmount_m); 47 | order.setOrderIsPay(false); 48 | order.setOrderIsReceipt("1"); 49 | order.setOrderIsGroup(false); 50 | order.setOrderIsGroupEnd(true); 51 | order.setOrderIsEvaluate(false); 52 | order.setOrderCreateTime(new Date()); 53 | order.setOrderIsGroup(isGroup); 54 | order.setOrderIsGroupEnd(false); 55 | order.setOrderIsDelete(false); 56 | int insert = ordersMapper.insert(order); 57 | if (insert <= 0) { 58 | throw new CustomException("生成订单失败"); 59 | } 60 | Orders selectOne = ordersMapper.selectOne(new QueryWrapper().eq("order_number", orderNumber)); 61 | OrderProductUser orderProductUser = new OrderProductUser(); 62 | orderProductUser.setOrderId(selectOne.getOrderId()); 63 | orderProductUser.setProductId(productId); 64 | orderProductUser.setUserId(userId); 65 | int insert1 = orderProductUserMapper.insert(orderProductUser); 66 | if (insert1 <= 0) { 67 | throw new CustomException("生成订单失败"); 68 | } 69 | //删除购物车 70 | if (isCart !=null && isCart) { 71 | usersService.deleteCartByUserIdAndPid(userId.toString(), productId.toString()); 72 | } 73 | return selectOne; 74 | } 75 | 76 | @Override 77 | public Orders paymentByOrderNumber(String orderNumber) { 78 | ordersMapper.paymentByOrderNumber(orderNumber); 79 | Orders one = ordersMapper.selectOne(new QueryWrapper().eq("order_number", orderNumber)); 80 | OrderProductUser orderProductUser = orderProductUserMapper.selectOne(new QueryWrapper().eq("order_id", one.getOrderId())); 81 | Products products = productsMapper.selectById(orderProductUser.getProductId()); 82 | products.setProductAmount(products.getProductAmount() - one.getOrderAmount()); 83 | productsMapper.updateById(products); 84 | return one; 85 | } 86 | 87 | @Override 88 | public List getAllGrouping(Integer userId, String searchCon) { 89 | return ordersMapper.getAllGrouping(userId, searchCon); 90 | } 91 | 92 | @Override 93 | public Orders addGenerateOrder(Integer productId, Integer productAmount, Integer userId) { 94 | Orders order = new Orders(); 95 | String orderNumber = IdUtil.simpleUUID(); 96 | order.setOrderNumber(orderNumber); 97 | order.setOrderAmount(productAmount); 98 | order.setOrderIsPay(false); 99 | order.setOrderIsReceipt("1"); 100 | order.setOrderIsGroup(false); 101 | order.setOrderIsGroupEnd(false); 102 | order.setOrderIsEvaluate(false); 103 | order.setOrderCreateTime(new Date()); 104 | order.setOrderIsGroup(true); 105 | order.setOrderIsGroupEnd(true); 106 | order.setOrderIsDelete(false); 107 | int insert = ordersMapper.insert(order); 108 | if (insert <= 0) { 109 | throw new CustomException("生成订单失败"); 110 | } 111 | Orders selectOne = ordersMapper.selectOne(new QueryWrapper().eq("order_number", orderNumber)); 112 | OrderProductUser orderProductUser = new OrderProductUser(); 113 | orderProductUser.setOrderId(selectOne.getOrderId()); 114 | orderProductUser.setProductId(productId); 115 | orderProductUser.setUserId(userId); 116 | int insert1 = orderProductUserMapper.insert(orderProductUser); 117 | if (insert1 <= 0) { 118 | throw new CustomException("生成订单失败"); 119 | } 120 | return selectOne; 121 | } 122 | 123 | @Override 124 | public Boolean updateOrderByOrderNumber(String orderNumber) { 125 | return ordersMapper.updateOrderByOrderNumber(orderNumber); 126 | } 127 | 128 | @Override 129 | public List getAllOrderByUserId(Integer userId, String searchCon) { 130 | List orders = ordersMapper.getAllOrderByUserId(userId, searchCon); 131 | for (com.example.entity.vo.Orders order : orders) { 132 | order.setTotalMoney(order.getProductPrice() * order.getOrderAmount()); 133 | } 134 | return orders; 135 | } 136 | 137 | @Override 138 | public Boolean valuationOrderByOrderNumber(String orderNumber, String orderValuation) { 139 | return ordersMapper.valuationOrderByOrderNumber(orderNumber, orderValuation); 140 | } 141 | 142 | @Override 143 | public Boolean sendProductByOrderNumber(String orderNumber) { 144 | Orders order = ordersMapper.selectOne(new QueryWrapper().eq("order_number", orderNumber)); 145 | if (order.getOrderIsGroup()) { 146 | if (!order.getOrderIsGroupEnd()) { 147 | DateTime newDate = DateUtil.offsetHour(order.getOrderCreateTime(), 3); 148 | if (newDate.isAfter(new Date())) { 149 | throw new CustomException("拼单未结束"); 150 | } 151 | } 152 | } 153 | return ordersMapper.sendProductByOrderNumber(orderNumber); 154 | } 155 | 156 | @Override 157 | public Boolean receiptProductByOrderNumber(String orderNumber) { 158 | return ordersMapper.receiptProductByOrderNumber(orderNumber); 159 | } 160 | 161 | @Override 162 | public Boolean deleteOrdersByOrderNumber(String orderNumber) { 163 | return ordersMapper.deleteOrdersByOrderNumber(orderNumber); 164 | } 165 | 166 | @Override 167 | public List getAllOrder(String searchCon) { 168 | List orders = ordersMapper.getAllOrder(searchCon); 169 | for (com.example.entity.vo.Orders order : orders) { 170 | order.setTotalMoney(order.getProductPrice() * order.getOrderAmount()); 171 | } 172 | return orders; 173 | } 174 | 175 | @Override 176 | public String getOrderValuationByProductId(Integer productId) { 177 | Set set = productsMapper.getOrderValuationByProductId(productId); 178 | if (!set.isEmpty()) { 179 | // Iterator iterator = set.iterator(); 180 | // while (iterator.hasNext()) { 181 | // String next = iterator().next(); 182 | // if (!Objects.isNull(next)) { 183 | // return next; 184 | // } 185 | // } 186 | for (String next : set) { 187 | if (!Objects.isNull(next)) { 188 | return next; 189 | } 190 | } 191 | } 192 | return null; 193 | } 194 | } 195 | -------------------------------------------------------------------------------- /src/main/java/com/example/service/impl/ProductsServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.example.service.impl; 2 | 3 | import cn.hutool.core.date.DateUtil; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.example.entity.Products; 6 | import com.example.entity.vo.Orders; 7 | import com.example.mapper.ProductsMapper; 8 | import com.example.service.ProductsService; 9 | import com.example.utils.StringUtil; 10 | import org.springframework.beans.factory.annotation.Autowired; 11 | import org.springframework.stereotype.Service; 12 | 13 | import java.math.BigDecimal; 14 | import java.util.*; 15 | 16 | /** 17 | * (Products)表服务实现类 18 | * 19 | * @author makejava 20 | * @since 2022-03-24 14:11:47 21 | */ 22 | @Service("productsService") 23 | public class ProductsServiceImpl extends ServiceImpl implements ProductsService { 24 | 25 | @Autowired 26 | private ProductsMapper productsMapper; 27 | 28 | @Override 29 | public Boolean deleteProductById(String productId) { 30 | Integer productId_m = StringUtil.changeString(productId); 31 | return productsMapper.deleteProductBy(productId_m); 32 | } 33 | 34 | @Override 35 | public Map getEchartsData(String searchYear, String searchMonth) { 36 | Calendar calendar = Calendar.getInstance(); 37 | int year = calendar.get(Calendar.YEAR); 38 | int month = calendar.get(Calendar.MONTH) + 1; 39 | String startTime = ""; 40 | String endTime = ""; 41 | if (!"".equals(searchYear) && searchYear != null && !"".equals(searchMonth) && searchMonth != null) { 42 | Integer searchMonth_m = StringUtil.changeString(searchMonth); 43 | if (searchMonth_m >= 10) { 44 | startTime = searchYear + "-" + searchMonth + "-" + "01"; 45 | } else { 46 | startTime = searchYear + "-" + "0" + searchMonth + "-" + "01"; 47 | } 48 | int mon = Integer.parseInt(searchMonth) + 1; 49 | if (13 == mon) { 50 | endTime = (Integer.parseInt(searchYear) + 1) + "-" + "01-01"; 51 | } else if (mon >= 10) { 52 | endTime = searchYear + "-" + mon + "-" + "01"; 53 | } else { 54 | endTime = searchYear + "-" + "0" + mon + "-" + "01"; 55 | } 56 | } else { 57 | if (month >= 10) { 58 | startTime = year + "-" + month + "-" + "01"; 59 | } else { 60 | startTime = year + "-" + "0" + month + "-" + "01"; 61 | } 62 | int mon = month + 1; 63 | if (13 == mon) { 64 | endTime = (year + 1) + "-" + "01-01"; 65 | } else if (mon >= 10) { 66 | endTime = year + "-" + mon + "-" + "01"; 67 | } else { 68 | endTime = year + "-" + "0" + mon + "-" + "01"; 69 | } 70 | searchYear = String.valueOf(year); 71 | searchMonth = String.valueOf(month); 72 | } 73 | Date startDate = DateUtil.parse(startTime); 74 | Date endDate = DateUtil.parse(endTime); 75 | List list1 = productsMapper.getAboutOrderInformation(startDate, endDate, "1"); 76 | Integer totalAmount1 = 0; 77 | BigDecimal totalMoney1 = new BigDecimal(0); 78 | for (Orders orders : list1) { 79 | totalAmount1 += orders.getOrderAmount(); 80 | totalMoney1 = new BigDecimal(orders.getProductPrice().toString()).multiply(new BigDecimal(orders.getOrderAmount())).add(totalMoney1); 81 | } 82 | List list2 = productsMapper.getAboutOrderInformation(startDate, endDate, "2"); 83 | Integer totalAmount2 = 0; 84 | BigDecimal totalMoney2 = new BigDecimal(0); 85 | for (Orders orders : list2) { 86 | totalAmount2 += orders.getOrderAmount(); 87 | totalMoney2 = new BigDecimal(orders.getProductPrice().toString()).multiply(new BigDecimal(orders.getOrderAmount())).add(totalMoney2); 88 | } 89 | List list3 = productsMapper.getAboutOrderInformation(startDate, endDate, "3"); 90 | Integer totalAmount3 = 0; 91 | BigDecimal totalMoney3 = new BigDecimal(0); 92 | for (Orders orders : list3) { 93 | totalAmount3 += orders.getOrderAmount(); 94 | totalMoney3 = new BigDecimal(orders.getProductPrice().toString()).multiply(new BigDecimal(orders.getOrderAmount())).add(totalMoney3); 95 | } 96 | Integer totalAmount = totalAmount1 + totalAmount2 + totalAmount3; 97 | Double totalMoney = totalMoney1.add(totalMoney2).add(totalMoney3).doubleValue(); 98 | Map map = new HashMap<>(); 99 | map.put("totalAmount", totalAmount); 100 | map.put("totalAmount1", totalAmount1); 101 | map.put("totalAmount2", totalAmount2); 102 | map.put("totalAmount3", totalAmount3); 103 | map.put("totalMoney", totalMoney); 104 | map.put("totalMoney1", totalMoney1.doubleValue()); 105 | map.put("totalMoney2", totalMoney2.doubleValue()); 106 | map.put("totalMoney3", totalMoney3.doubleValue()); 107 | map.put("searchYear", searchYear); 108 | map.put("searchMonth", searchMonth); 109 | return map; 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /src/main/java/com/example/service/impl/UsersServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.example.service.impl; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.example.entity.Users; 6 | import com.example.mapper.UsersMapper; 7 | import com.example.service.UsersService; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.security.core.authority.SimpleGrantedAuthority; 10 | import org.springframework.security.core.userdetails.User; 11 | import org.springframework.security.core.userdetails.UserDetails; 12 | import org.springframework.security.core.userdetails.UserDetailsService; 13 | import org.springframework.security.core.userdetails.UsernameNotFoundException; 14 | import org.springframework.stereotype.Service; 15 | 16 | import java.util.LinkedList; 17 | import java.util.List; 18 | 19 | /** 20 | * (Users)表服务实现类 21 | * 22 | * @author makejava 23 | * @since 2022-03-24 13:55:55 24 | */ 25 | @Service("usersService") 26 | public class UsersServiceImpl extends ServiceImpl implements UsersService, UserDetailsService { 27 | 28 | @Autowired 29 | private UsersMapper usersMapper; 30 | 31 | @Override 32 | public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { 33 | //根据账号查询用户信息 34 | List usersList = usersMapper.selectList(new QueryWrapper().eq("username", username).eq("is_delete", false)); 35 | if (usersList != null && usersList.size() > 0) { 36 | Users users = usersList.get(0); 37 | if (users != null) { 38 | SimpleGrantedAuthority simpleGrantedAuthority = new SimpleGrantedAuthority("ROLE_" + users.getRole()); 39 | List authorities = new LinkedList<>(); 40 | authorities.add(simpleGrantedAuthority); 41 | return new User(users.getUsername(), users.getPassword(), authorities); 42 | } 43 | } 44 | return null; 45 | } 46 | 47 | @Override 48 | public void deleteCartByUsernameAndPid(String username, String productId) { 49 | Users users = getOne(new QueryWrapper().eq("username", username)); 50 | deleteCartByUserAndPid(users, productId); 51 | } 52 | 53 | @Override 54 | public void deleteCartByUserIdAndPid(String userId, String productId) { 55 | Users users = getOne(new QueryWrapper().eq("user_id", userId)); 56 | deleteCartByUserAndPid(users, productId); 57 | } 58 | 59 | @Override 60 | public void clearCart(String username) { 61 | Users users = getOne(new QueryWrapper().eq("username", username)); 62 | users.setCart(""); 63 | updateById(users); 64 | } 65 | 66 | private void deleteCartByUserAndPid(Users users, String productId){ 67 | String[] strList = users.getCart().split(","); 68 | String str = ""; 69 | for (int i = 0; i < strList.length; i++) { 70 | if (!productId.equals(strList[i])) { 71 | str += strList[i] + ","; 72 | } 73 | } 74 | str = str.substring(0, str.length() - 1); 75 | users.setCart(str); 76 | updateById(users); 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /src/main/java/com/example/utils/ImageBase64Converter.java: -------------------------------------------------------------------------------- 1 | package com.example.utils; 2 | 3 | import org.apache.tomcat.util.codec.binary.Base64; 4 | import org.springframework.util.FileCopyUtils; 5 | import org.springframework.web.multipart.MultipartFile; 6 | 7 | import java.io.*; 8 | 9 | public class ImageBase64Converter { 10 | 11 | public static String getImgBase64Str(String imgFile) { 12 | // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 13 | InputStream in = null; 14 | byte[] data = null; 15 | // 读取图片字节数组 16 | try { 17 | in = new FileInputStream(imgFile); 18 | data = new byte[in.available()]; 19 | in.read(data); 20 | in.close(); 21 | } catch (IOException e) { 22 | e.printStackTrace(); 23 | } 24 | return Base64.encodeBase64String(data); 25 | } 26 | 27 | //TODO 获取文件 28 | public static String saveFile(MultipartFile file) { 29 | //创建输入输出流 30 | InputStream inputStream = null; 31 | OutputStream outputStream = null; 32 | String path; 33 | String fileName; 34 | try { 35 | //获取项目路径(project) 36 | path = System.getProperty("user.dir"); 37 | //获取文件的输入流 38 | inputStream = file.getInputStream(); 39 | //获取上传时的文件名 40 | fileName = file.getOriginalFilename(); 41 | // String suffix = fileName.substring(fileName.lastIndexOf(".") + 1); 42 | //注意是路径+文件名 43 | File targetFile = new File(path + "/wedding" + "/src" + "/main" + "/resources" + "/static" + "/scene/" + fileName); 44 | //如果之前的 String path = "d:/upload/" 没有在最后加 / ,那就要在 path 后面 + "/" 45 | //判断文件父目录是否存在 46 | if (!targetFile.getParentFile().exists()) { 47 | //不存在就创建一个 48 | targetFile.getParentFile().mkdir(); 49 | } 50 | //获取文件的输出流 51 | outputStream = new FileOutputStream(targetFile); 52 | //最后使用资源访问器FileCopyUtils的copy方法拷贝文件 53 | FileCopyUtils.copy(inputStream, outputStream); 54 | } catch ( 55 | IOException e) { 56 | //出现异常,则告诉页面失败 57 | return ""; 58 | } finally { 59 | //无论成功与否,都有关闭输入输出流 60 | if (inputStream != null) { 61 | try { 62 | inputStream.close(); 63 | } catch (IOException e) { 64 | e.printStackTrace(); 65 | } 66 | } 67 | if (outputStream != null) { 68 | try { 69 | outputStream.close(); 70 | } catch (IOException e) { 71 | e.printStackTrace(); 72 | } 73 | } 74 | } 75 | return path + "/wedding" + "/src" + "/main" + "/resources" + "/static" + "/scene/" + fileName; 76 | } 77 | 78 | 79 | /** 80 | * 本地文件(图片、excel等)转换成Base64字符串 81 | * 82 | * @param imgPath 83 | */ 84 | // public static String convertFileToBase64(String imgPath) { 85 | // byte[] data = null; 86 | // // 读取图片字节数组 87 | // try { 88 | // InputStream in = new FileInputStream(imgPath); 89 | // System.out.println("文件大小(字节)="+in.available()); 90 | // data = new byte[in.available()]; 91 | // in.read(data); 92 | // in.close(); 93 | // } catch (IOException e) { 94 | // e.printStackTrace(); 95 | // } 96 | // // 对字节数组进行Base64编码,得到Base64编码的字符串 97 | // BASE64Encoder encoder = new BASE64Encoder(); 98 | // String base64Str = encoder.encode(data); 99 | // return base64Str; 100 | // } 101 | // 102 | // /** 103 | // * 将base64字符串,生成文件 104 | // */ 105 | // public static File convertBase64ToFile(String fileBase64String, String filePath, String fileName) { 106 | // 107 | // BufferedOutputStream bos = null; 108 | // FileOutputStream fos = null; 109 | // File file = null; 110 | // try { 111 | // File dir = new File(filePath); 112 | // if (!dir.exists() && dir.isDirectory()) {//判断文件目录是否存在 113 | // dir.mkdirs(); 114 | // } 115 | // 116 | // BASE64Decoder decoder = new BASE64Decoder(); 117 | // byte[] bfile = decoder.decodeBuffer(fileBase64String); 118 | // 119 | // file = new File(filePath + File.separator + fileName); 120 | // fos = new FileOutputStream(file); 121 | // bos = new BufferedOutputStream(fos); 122 | // bos.write(bfile); 123 | // return file; 124 | // } catch (Exception e) { 125 | // e.printStackTrace(); 126 | // return null; 127 | // } finally { 128 | // if (bos != null) { 129 | // try { 130 | // bos.close(); 131 | // } catch (IOException e1) { 132 | // e1.printStackTrace(); 133 | // } 134 | // } 135 | // if (fos != null) { 136 | // try { 137 | // fos.close(); 138 | // } catch (IOException e1) { 139 | // e1.printStackTrace(); 140 | // } 141 | // } 142 | // } 143 | // } 144 | 145 | } 146 | -------------------------------------------------------------------------------- /src/main/java/com/example/utils/ReplaceBackground.java: -------------------------------------------------------------------------------- 1 | package com.example.utils; 2 | 3 | import static com.example.utils.ImageBase64Converter.getImgBase64Str; 4 | 5 | public class ReplaceBackground { 6 | 7 | //TODO 更换背景图片 8 | public static String replaceImg() { 9 | String path = System.getProperty("user.dir"); 10 | String imgBase64Str = getImgBase64Str(path + "/src/main/resources/static/preImg/background.jpg"); 11 | return "background-repeat:no-repeat ;background-size:100% 100%;background-attachment: fixed;background-image: url(data:image/png;base64," + imgBase64Str + ")"; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/example/utils/StringUtil.java: -------------------------------------------------------------------------------- 1 | package com.example.utils; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | import org.springframework.util.DigestUtils; 5 | 6 | import java.text.SimpleDateFormat; 7 | import java.util.UUID; 8 | 9 | 10 | /** 11 | * @author 何进业 12 | */ 13 | public class StringUtil { 14 | /** 15 | * 生成随机字符串 16 | */ 17 | public static String generateUUID(){ 18 | return UUID.randomUUID().toString().replaceAll("-",""); 19 | } 20 | 21 | /** 22 | * MD5加密 23 | */ 24 | public static String md5(String key){ 25 | if (StringUtils.isBlank(key)){ 26 | return null; 27 | } 28 | return DigestUtils.md5DigestAsHex(key.getBytes()); 29 | } 30 | 31 | /** 32 | * 日期格式字符串转换成时间戳 33 | * @param date_str 字符串日期 34 | * @param format 如:yyyy-MM-dd HH:mm:ss 35 | * @return 36 | */ 37 | public static String date2TimeStamp(String date_str,String format){ 38 | try { 39 | SimpleDateFormat sdf = new SimpleDateFormat(format); 40 | return String.valueOf(sdf.parse(date_str).getTime()/1000); 41 | } catch (Exception e) { 42 | e.printStackTrace(); 43 | } 44 | return ""; 45 | } 46 | 47 | public static Integer changeString(String string){ 48 | if (string != null && !StringUtils.isBlank(string)) { 49 | return Integer.valueOf(string); 50 | }else { 51 | return null; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.port=8080 2 | server.servlet.session.timeout=600s 3 | 4 | spring.datasource.driver-class-name=com.mysql.jdbc.Driver 5 | spring.datasource.url=jdbc:mysql://localhost:3306/graduation_291_pet_shop_web?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC 6 | spring.datasource.username=root 7 | spring.datasource.password=123456 8 | 9 | spring.servlet.multipart.max-request-size=1024MB 10 | spring.servlet.multipart.max-file-size=1024MB 11 | 12 | mybatis-plus.mapper-locations=classpath:/mapper/*.xml 13 | mybatis-plus.configuration.map-underscore-to-camel-case=true 14 | 15 | spring.thymeleaf.enabled=true 16 | spring.thymeleaf.prefix=classpath:/templates/ 17 | spring.thymeleaf.suffix=.html 18 | spring.thymeleaf.mode=HTML 19 | spring.thymeleaf.encoding=utf-8 20 | spring.thymeleaf.cache=false 21 | 22 | spring.jpa.show-sql=true 23 | spring.jpa.hibernate.ddl-auto=update 24 | 25 | spring.web.resources.static-locations=classpath:/static/ 26 | spring.mvc.static-path-pattern=/static/** 27 | -------------------------------------------------------------------------------- /src/main/resources/static/front/css/owl.carousel.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.3.4 3 | * Copyright 2013-2018 David Deutsch 4 | * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 5 | */ 6 | .owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{background:0 0;color:inherit;border:none;padding:0!important;font:inherit}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:pan-y;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item .owl-lazy:not([src]),.owl-carousel .owl-item .owl-lazy[src^=""]{max-height:0}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%} -------------------------------------------------------------------------------- /src/main/resources/static/front/css/style-responsive.css: -------------------------------------------------------------------------------- 1 | /* MEDIA QUERIES */ 2 | 3 | @media screen and (max-width: 800px) { 4 | 5 | body { 6 | position: relative; 7 | } 8 | 9 | .left-side { 10 | display: none; 11 | } 12 | 13 | .main-content { 14 | margin-left: 0; 15 | width: 100%; 16 | } 17 | 18 | .left-side-collapsed .left-side { 19 | display: none; 20 | } 21 | 22 | .left-side-collapsed .main-content { 23 | margin-left: 0; 24 | } 25 | 26 | .left-side-collapsed .header-section { 27 | margin-left: 0; 28 | } 29 | 30 | .left-side-show section { 31 | overflow-x: hidden; 32 | } 33 | 34 | .left-side-show .left-side { 35 | display: block; 36 | } 37 | 38 | .left-side-show .main-content { 39 | margin-left: 240px; 40 | } 41 | 42 | .btn-demo { 43 | margin-bottom: 20px; 44 | } 45 | 46 | .left-sideinner { 47 | padding: 5px 10px; 48 | } 49 | 50 | .left-sideinner .searchform input { 51 | background: #fff; 52 | border: 0; 53 | } 54 | 55 | .sticky-header .header-section, .sticky-header.left-side-collapsed .header-section { 56 | left: 0; 57 | } 58 | 59 | .sticky-header.left-side-show .header-section { 60 | left: 240px; 61 | } 62 | 63 | .sticky-header .menu-right { 64 | margin-right: 15px; 65 | } 66 | 67 | .sticky-header .left-side { 68 | top: 60px; 69 | } 70 | 71 | .lock-wrapper { 72 | margin: 25% auto; 73 | } 74 | 75 | .sticky-left-side .custom-nav { 76 | margin-top: -5px; 77 | } 78 | .stepy-error { 79 | bottom: 50px; 80 | } 81 | 82 | /*----------*/ 83 | 84 | .left-side-collapsed .left-side { 85 | left: 0; 86 | top: 50px; 87 | width: 240px; 88 | } 89 | 90 | .sticky-header.left-side-collapsed .menu-right { 91 | margin-right: 15px; 92 | } 93 | 94 | .left-side-collapsed .logo-icon { 95 | display: none; 96 | } 97 | .left-side-collapsed .logo { 98 | display: block; 99 | } 100 | 101 | .left-side-collapsed .left-side .searchform input { 102 | margin: 5px 0 20px 12px; 103 | } 104 | 105 | /*----------*/ 106 | .wdgt-profile, ul.iconic-list { 107 | margin-bottom: 20px; 108 | } 109 | } 110 | 111 | 112 | @media screen and (max-width: 767px) { 113 | 114 | .searchform { 115 | position: relative; 116 | } 117 | 118 | .searchform input { 119 | background:#fff; 120 | } 121 | 122 | .notification-menu li:nth-child(4) { 123 | display: none; 124 | } 125 | 126 | .left-side .searchform, 127 | .left-side .logged-user { 128 | display: block; 129 | } 130 | 131 | .breadcrumb-wrapper { 132 | display: none; 133 | } 134 | 135 | .notification-menu .dropdown-menu:after { 136 | display: none; 137 | } 138 | 139 | /*calendar*/ 140 | .fc-button-inner { 141 | padding: 0; 142 | } 143 | 144 | /*media gallery*/ 145 | .media-gal .item { 146 | width: 100%; 147 | } 148 | .media-filter { 149 | margin: 25px 0; 150 | } 151 | 152 | .media-filter + .pull-right, .media-filter + .pull-right + .btn { 153 | float: left !important; 154 | } 155 | 156 | /*state info*/ 157 | .state-info { 158 | position: static; 159 | width: 100%; 160 | margin-top: 15px; 161 | } 162 | 163 | .state-info .panel { 164 | width: 100%; 165 | } 166 | 167 | .lock-wrapper { 168 | margin: 40% auto; 169 | } 170 | 171 | .pricing-table { 172 | width: 100%; 173 | margin-left: 0; 174 | } 175 | 176 | .mail-box > aside, .mail-box > section { 177 | display: block; 178 | margin-bottom: 10px; 179 | width: 100%; 180 | } 181 | 182 | .mail-list { 183 | height: auto; 184 | } 185 | 186 | } 187 | 188 | @media screen and (max-width: 640px) { 189 | 190 | } 191 | 192 | @media screen and (max-width: 480px) { 193 | /*form wizard steps*/ 194 | .widget-container .stepy-titles li , .stepy-titles li{ 195 | width: 100%; 196 | } 197 | .directory-list li { 198 | display: inline-block; 199 | float: left; 200 | width: auto; 201 | } 202 | 203 | .directory-list li a { 204 | display: block; 205 | padding:5px 10px; 206 | margin-bottom: 1px; 207 | } 208 | } 209 | 210 | 211 | @media screen and (max-width: 479px) { 212 | /*calendar*/ 213 | .fc-button-inner, .fc-button-content { 214 | padding: 0; 215 | } 216 | .fc-header-title h2 { 217 | font-size: 12px!important; 218 | } 219 | .fc .fc-header-space { 220 | padding-left: 0; 221 | } 222 | .fc-state-active, .fc-state-active .fc-button-inner, .fc-state-active, .fc-button-today .fc-button-inner, .fc-state-hover, .fc-state-hover .fc-button-inner { 223 | background: none repeat scroll 0 0 #FFFFFF !important; 224 | color: #32323A !important; 225 | } 226 | .fc-state-default, .fc-state-default .fc-button-inner { 227 | background: none repeat scroll 0 0 #FFFFFF !important; 228 | } 229 | 230 | .error-wrapper h1 img { 231 | width: 100%; 232 | } 233 | /*form wizard steps*/ 234 | .widget-container .stepy-titles li , .stepy-titles li{ 235 | width: 100%; 236 | } 237 | 238 | 239 | .directory-list li { 240 | display: inline-block; 241 | float: left; 242 | width: auto; 243 | } 244 | 245 | .directory-list li a { 246 | display: block; 247 | padding:5px 10px; 248 | margin-bottom: 1px; 249 | } 250 | } 251 | 252 | @media screen and (max-width: 360px) { 253 | 254 | 255 | 256 | .notification-menu li:first-child .dropdown-menu { 257 | margin-right: -90px; 258 | } 259 | 260 | .notification-menu li:nth-child(2) .dropdown-menu { 261 | margin-right: -45px; 262 | } 263 | 264 | .notification-menu li:nth-child(3) .dropdown-menu { 265 | margin-right: 0px; 266 | } 267 | 268 | .nav-tabs.nav-justified.nav-profile > li { 269 | float: none; 270 | display: block; 271 | width: auto; 272 | } 273 | .lock-wrapper { 274 | margin: 40% auto; 275 | max-width: 300px; 276 | } 277 | .lock-wrapper input, .lock-wrapper input:focus { 278 | width: 80% !important; 279 | } 280 | .lock-wrapper .locked { 281 | right: 70px; 282 | } 283 | 284 | 285 | } 286 | 287 | @media screen and (max-width: 320px) { 288 | 289 | .lock-wrapper { 290 | margin: 40% auto; 291 | max-width: 300px; 292 | } 293 | 294 | .lock-wrapper input, .lock-wrapper input:focus { 295 | width: 80% !important; 296 | } 297 | .lock-wrapper .locked { 298 | right: 70px; 299 | } 300 | 301 | .media-filter li { 302 | margin-bottom: 10px; 303 | display: inline-block; 304 | } 305 | 306 | .media-filter + .btn-group .btn { 307 | margin-bottom: 5px; 308 | } 309 | 310 | 311 | } 312 | -------------------------------------------------------------------------------- /src/main/resources/static/front/css/style.css: -------------------------------------------------------------------------------- 1 | @import url("owl.carousel.min.css"); 2 | @import url("remixicon.css"); 3 | @import url("bootstrap.min.css"); 4 | @import url("css.css"); 5 | @import url("responsive.css"); 6 | @import url("typography.css"); 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/static/front/fonts/remixicon.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/fonts/remixicon.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/front/images/date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/date.png -------------------------------------------------------------------------------- /src/main/resources/static/front/images/error/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/error/02.png -------------------------------------------------------------------------------- /src/main/resources/static/front/images/img1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/img1.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/img2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/img2.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/img3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/img3.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/img4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/img4.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/img5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/img5.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/img6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/img6.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/loader.gif -------------------------------------------------------------------------------- /src/main/resources/static/front/images/login/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/login/1.png -------------------------------------------------------------------------------- /src/main/resources/static/front/images/login/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/login/2.png -------------------------------------------------------------------------------- /src/main/resources/static/front/images/login/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/login/3.png -------------------------------------------------------------------------------- /src/main/resources/static/front/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/logo.png -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/01.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/02.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/03.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/04.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/05.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/06.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/07.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/08.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/09.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/1.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/10.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/11.png -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/12.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/13.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/14.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/15.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/16.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/17.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user/18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user/18.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user1.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user2.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/images/user3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/images/user3.jpg -------------------------------------------------------------------------------- /src/main/resources/static/front/laydate/theme/default/font/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/laydate/theme/default/font/iconfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/front/laydate/theme/default/font/iconfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | Created by iconfont 9 | 10 | 11 | 12 | 13 | 21 | 22 | 23 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/main/resources/static/front/laydate/theme/default/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/laydate/theme/default/font/iconfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/front/laydate/theme/default/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/front/laydate/theme/default/font/iconfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/front/laydate/theme/default/laydate.css: -------------------------------------------------------------------------------- 1 | /*! laydate-v5.0.9 日期与时间组件 MIT License http://www.layui.com/laydate/ By 贤心 */ 2 | .laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:laydate-upbit;animation-name:laydate-upbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@-webkit-keyframes laydate-upbit{from{-webkit-transform:translate3d(0,20px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes laydate-upbit{from{transform:translate3d(0,20px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon,.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.laydate-set-ym span,.layui-laydate-header i{padding:0 5px;cursor:pointer}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;color:#999;font-size:18px}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:5px;text-align:center}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;height:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px 20px}.layui-laydate-footer span{margin-right:15px;display:inline-block;cursor:pointer;font-size:12px}.layui-laydate-footer span:hover{color:#5FB878}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{height:26px;line-height:26px;margin:0 0 0 -1px;padding:0 10px;border:1px solid #C9C9C9;background-color:#fff;white-space:nowrap;vertical-align:top;border-radius:2px}.layui-laydate-list>li,.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle}.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;background-color:#fff}.layui-laydate-list>li{position:relative;width:33.3%;height:36px;line-height:36px;margin:3px 0;text-align:center;cursor:pointer}.laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.laydate-time-list p{position:relative;top:-4px;line-height:29px}.laydate-time-list ol{height:181px;overflow:hidden}.laydate-time-list>li:hover ol{overflow-y:auto}.laydate-time-list ol li{width:130%;padding-left:33px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px}.layui-laydate-range{width:546px}.layui-laydate-range .laydate-main-list-0 .laydate-next-m,.layui-laydate-range .laydate-main-list-0 .laydate-next-y,.layui-laydate-range .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left:1px solid #e2e2e2}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#666}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#5FB878}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{font-weight:400;color:#333}.layui-laydate-content td{color:#666}.layui-laydate-content td.laydate-selected{background-color:#00F7DE}.laydate-selected:hover{background-color:#00F7DE!important}.layui-laydate-content td:hover,.layui-laydate-list li:hover{background-color:#eaeaea;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.laydate-selected.laydate-day-next,.laydate-selected.laydate-day-prev{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#FF5722}.laydate-day-mark::after{background-color:#5FB878}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#5FB878}.layui-laydate .layui-this{background-color:#009688!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead,.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-selected,.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important}.laydate-theme-grid .laydate-selected.laydate-day-next,.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}@font-face{font-family:laydate-icon;src:url(font/iconfont.eot);src:url(font/iconfont.eot#iefix) format('embedded-opentype'),url(font/iconfont.svg#iconfont) format('svg'),url(font/iconfont.woff) format('woff'),url(font/iconfont.ttf) format('truetype')}.laydate-icon{font-family:laydate-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} -------------------------------------------------------------------------------- /src/main/resources/static/preImg/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/preImg/background.jpg -------------------------------------------------------------------------------- /src/main/resources/static/preImg/tea/tea01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/preImg/tea/tea01.png -------------------------------------------------------------------------------- /src/main/resources/static/preImg/tea/tea02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/preImg/tea/tea02.png -------------------------------------------------------------------------------- /src/main/resources/static/preImg/tea/tea03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/preImg/tea/tea03.png -------------------------------------------------------------------------------- /src/main/resources/static/preImg/tea/tea04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/preImg/tea/tea04.png -------------------------------------------------------------------------------- /src/main/resources/static/preImg/tea/tea05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaGraduationProject/PetSuppliesSalesManagementSystem/18652db1aaef5b1b873561303b7f6e17cf85532d/src/main/resources/static/preImg/tea/tea05.png -------------------------------------------------------------------------------- /src/main/resources/templates/activity.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 49 | 删除活动 51 |
52 |
53 | 54 | 77 | 78 |
79 |
80 | 81 |
82 |
83 | 84 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /src/main/resources/templates/admin.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 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 | 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 | 81 | 82 | 83 |
序号用户名电话邮箱地址创建时间操作
77 | 78 | 删除 80 |
84 |
85 |
86 |
87 | 88 | 89 | 143 | 144 | 145 |
146 |
147 | 148 |
149 |
150 | 151 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 205 | 206 | 207 | -------------------------------------------------------------------------------- /src/main/resources/templates/cart.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 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 | 72 | 82 | 83 | 84 |
序号商品名称商品类型商品价格商品图片上架日期操作
71 | 73 | 查看 75 | 79 | 移除 81 |
85 |
86 |
87 |
88 | 89 | 90 | 131 | 132 | 133 |
134 |
135 | 136 |
137 |
138 | 139 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 206 | 207 | 208 | -------------------------------------------------------------------------------- /src/main/resources/templates/collection.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 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 | 61 | 70 | 71 | 72 |
序号商品名称商品类型商品价格商品图片上架日期操作
60 | 62 | 查看 64 | 67 | 移除 69 |
73 |
74 |
75 |
76 | 77 |
78 |
79 | 80 |
81 |
82 | 83 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /src/main/resources/templates/group.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 45 |
  • 46 |
  • 47 | 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 | 77 | 78 | 86 | 87 | 88 |
序号名称类型特点价格数量开团时间操作
[[${result.productPrice}]] [[${result.productAmount}]] 79 | 查看 81 | 85 |
89 |
90 |
91 |
92 | 93 | 94 | 126 | 127 | 128 |
129 |
130 | 131 |
132 |
133 | 134 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 197 | 198 | 199 | -------------------------------------------------------------------------------- /src/main/resources/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /src/main/resources/templates/index_admin.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 50 |
  • 51 |
  •   月  : 52 | 66 |
  • 67 |
  • 68 | 69 |
  • 70 | 71 | 72 | 73 |
74 |
75 |
76 |
77 |
78 |
79 | 销量(数量:[[${result.totalAmount}]])
80 |
81 |
82 |
83 | 营业额(总计:[[${result.totalMoney}]] 元)
84 |
85 |
86 | 156 |
157 |
158 |
159 |
160 | 161 |
162 |
163 | 164 |
165 |
166 | 167 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 192 | 193 | 194 | -------------------------------------------------------------------------------- /src/main/resources/templates/login_page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 萌多宠物用品网上销售系统 11 | 12 | 13 | 14 | 15 | 16 | 17 | 21 | 22 | 23 | 24 |
25 |
26 |
27 |
28 |
29 |
30 |
32 |

萌多宠物用品网上销售系统

33 |
34 | 56 | 57 | 58 | 113 | 114 | 115 | 116 |
117 | 118 | 119 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | -------------------------------------------------------------------------------- /src/main/resources/templates/mine.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 48 |
      49 |
    • 50 | 51 |
    • 52 |
      地址
      53 |
      54 | 56 |
      57 |
    • 58 |
    • 59 |
      手机号
      60 |
      61 | 63 |
      64 |
    • 65 |
    • 66 |
      邮箱
      67 |
      68 | 70 |
      71 |
    • 72 |
    • 73 |
      密码
      74 |
      75 | 77 |
      78 |
    • 79 |
    80 |
  • 81 |
82 |
83 |
84 | 88 |
89 |
90 |
91 | 92 | 93 | 149 | 150 | 151 |
152 |
153 | 154 |
155 |
156 | 157 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 197 | 198 | 199 | -------------------------------------------------------------------------------- /src/main/resources/templates/mine_admin.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 48 |
      49 |
    • 50 | 51 |
    • 52 |
      地址
      53 |
      54 | 56 |
      57 |
    • 58 |
    • 59 |
      手机号
      60 |
      61 | 63 |
      64 |
    • 65 |
    • 66 |
      邮箱
      67 |
      68 | 70 |
      71 |
    • 72 |
    • 73 |
      密码
      74 |
      75 | 77 |
      78 |
    • 79 |
    80 |
  • 81 |
82 |
83 |
84 | 85 |
86 |
87 |
88 | 89 | 90 | 146 | 147 | 148 |
149 |
150 | 151 |
152 |
153 | 154 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 193 | 194 | 195 | -------------------------------------------------------------------------------- /src/main/resources/templates/order.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 45 |
  • 46 |
  • 47 | 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 | 87 | 89 | 90 | 91 | 111 | 112 | 113 |
序号商品名称商品价格商品数量总价(¥)订单状态下单时间评价操作
76 | 77 | 未付款 78 |
79 | 80 | 等待发货 81 | 未收货 82 | 已完成 83 | 84 |
85 |
86 |
92 | 查看 94 | 付    款 96 | 98 | 待收货 99 | 100 | 102 | 收    货 103 | 104 | 已完成 106 | 110 |
114 |
115 |
116 |
117 | 118 | 119 | 150 | 151 | 152 |
153 |
154 | 155 |
156 |
157 | 158 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 209 | 210 | 211 | -------------------------------------------------------------------------------- /src/main/resources/templates/order_admin.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 45 |
  • 46 |
  • 47 | 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 | 87 | 89 | 90 | 91 | 111 | 112 | 113 |
序号商品名称商品价格商品数量总价(¥)订单状态下单时间评价操作
76 | 77 | 未付款 78 |
79 | 80 | 等待发货 81 | 未收货 82 | 已完成 83 | 84 |
85 |
86 |
92 | 未付款 95 | 100 | 102 | 已发货 103 | 104 | 已完成 106 | 108 | 删除 109 | 110 |
114 |
115 |
116 |
117 | 118 |
119 |
120 | 121 |
122 |
123 | 124 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 159 | 160 | 161 | -------------------------------------------------------------------------------- /src/main/resources/templates/user.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 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 | 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 | 81 | 82 | 83 |
序号用户名电话邮箱地址创建时间操作
77 | 78 | 删除 80 |
84 |
85 |
86 |
87 | 88 | 89 | 143 | 144 | 145 |
146 |
147 | 148 |
149 |
150 | 151 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 204 | 205 | 206 | -------------------------------------------------------------------------------- /src/test/java/com/example/TeaWebApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.example; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class TeaWebApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | --------------------------------------------------------------------------------