基于SpringBoot的美容院管理系统
末尾获取源码
开发语言:Java
Java开发工具:JDK1.8
后端框架:SpringBoot
前端:Vue
数据库:MySQL5.7和Navicat管理工具结合
开发软件:IDEA / Eclipse
是否Maven项目:是
目录
一、项目简介
二、系统功能
管理员功能结构图
编辑技师功能结构图
前台功能结构图
普通用户功能结构图
会员功能结构图
三、系统项目截图
3.1管理员
3.2技师
3.3普通用户
3.4会员
3.5前台
四、核心代码
4.1登录相关
4.2文件上传
4.3封装
一、项目简介
如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式就不适合。为了让美容院信息的管理模式进行升级,也为了更好的维护美容院信息,美容院管理系统的开发运用就显得很有必要。并且通过开发美容院管理系统,不仅可以让所学的SpringBoot框架得到实际运用,也可以掌握MySQL的使用方法,对自身编程能力也有一个检验和提升的过程。尤其是通过实践,可以对系统的开发流程加深印象,无论是前期的分析与设计,还是后期的编码测试等环节,都可以有一个深刻的了解。
美容院管理系统根据调研,确定其实现的功能主要包括美容用品管理,美容项目管理,美容部位管理,销量信息管理,订单管理,美容项目预约信息管理等功能。
借助于美容院管理系统这样的工具,让信息系统化,流程化,规范化是最终的发展结果,让其遵循实际操作流程的情况下,对美容院信息实施规范化处理,让美容院信息通过电子的方式进行保存,无论是管理人员检索美容院信息,维护美容院信息都可以便利化操作,真正缩短信息处理时间,节省人力和信息管理的成本。
二、系统功能
管理员功能结构图
技师功能结构图
前台功能结构图
普通用户功能结构图
会员功能结构图
三、系统项目截图
3.1管理员
实现管理员权限的美容部位管理功能,其运行效果见下图。管理员修改美容部位信息,删除美容部位信息,新增美容部位信息。
实现管理员权限的销量信息统计功能,其运行效果见下图。管理员通过销量统计报表查看各种美容用品的销量信息。
实现管理员权限的已支付订单功能,其运行效果见下图。管理员查看已支付订单信息,查看下单人提供的收货地址,然后进行订单发货。
3.2技师
实现技师权限的统计美容用品库存功能,其运行效果见下图。技师可以通过统计报表查看各种美容用品对应的现有库存量。
实现技师权限的预约信息管理功能,其运行效果见下图。会员预约技师提供的美容项目,技师则需要进行查看和审核。
3.3普通用户
实现前台权限的普通用户管理功能,其运行效果见下图。普通用户的基本信息也能让前台进行增删改查管理。
3.4会员
实现前台权限的会员管理功能,其运行效果见下图。会员的基本信息可以让前台进行修改,也能让前台进行查询或删除。
3.5前台
实现普通用户权限的美容用品功能,其运行效果见下图。普通用户查看美容用品,在本页面购买美容用品,或把美容用品添加购物车。
实现普通用户权限的购物车功能,其运行效果见下图。普通用户在本模块购买美容用品,需要提供收货地址,然后选择支付方式支付订单。
实现普通用户权限的我的订单功能,其运行效果见下图。普通用户在本模块查看不同状态的订单,已支付订单在未发货前也能退款。
实现会员权限的美容项目功能,其运行效果见下图。会员查看美容项目介绍,预约美容项目。
实现会员权限的预约信息管理功能,其运行效果见下图。会员提交了美容项目预约信息之后,需要到自己的后台查看预约项目审核情况。
四、核心代码
4.1登录相关
package com.controller;import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;/*** 登录相关*/
@RequestMapping("users")
@RestController
public class UserController{@Autowiredprivate UserService userService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth@PostMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null || !user.getPassword().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 退出*/@GetMapping(value = "logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null) {return R.error("账号不存在");}user.setPassword("123456");userService.update(user,null);return R.ok("密码已重置为:123456");}/*** 列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/list")public R list( UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();ew.allEq(MPUtil.allEQMapPre( user, "user")); return R.ok().put("data", userService.selectListView(ew));}/*** 信息*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") String id){UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 获取用户的session用户信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Long id = (Long)request.getSession().getAttribute("userId");UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 保存*/@PostMapping("/save")public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);userService.updateById(user);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();}
}
4.2文件上传
package com.controller;import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;/*** 上传文件映射表*/
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{@Autowiredprivate ConfigService configService;/*** 上传文件*/@RequestMapping("/upload")public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {if (file.isEmpty()) {throw new EIException("上传文件不能为空");}String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);File path = new File(ResourceUtils.getURL("classpath:static").getPath());if(!path.exists()) {path = new File("");}File upload = new File(path.getAbsolutePath(),"/upload/");if(!upload.exists()) {upload.mkdirs();}String fileName = new Date().getTime()+"."+fileExt;File dest = new File(upload.getAbsolutePath()+"/"+fileName);file.transferTo(dest);FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));if(StringUtils.isNotBlank(type) && type.equals("1")) {ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));if(configEntity==null) {configEntity = new ConfigEntity();configEntity.setName("faceFile");configEntity.setValue(fileName);} else {configEntity.setValue(fileName);}configService.insertOrUpdate(configEntity);}return R.ok().put("file", fileName);}/*** 下载文件*/@IgnoreAuth@RequestMapping("/download")public ResponseEntity<byte[]> download(@RequestParam String fileName) {try {File path = new File(ResourceUtils.getURL("classpath:static").getPath());if(!path.exists()) {path = new File("");}File upload = new File(path.getAbsolutePath(),"/upload/");if(!upload.exists()) {upload.mkdirs();}File file = new File(upload.getAbsolutePath()+"/"+fileName);if(file.exists()){/*if(!fileService.canRead(file, SessionManager.getSessionUser())){getResponse().sendError(403);}*/HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData("attachment", fileName); return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);}} catch (IOException e) {e.printStackTrace();}return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);}}
4.3封装
package com.utils;import java.util.HashMap;
import java.util.Map;/*** 返回数据*/
public class R extends HashMap<String, Object> {private static final long serialVersionUID = 1L;public R() {put("code", 0);}public static R error() {return error(500, "未知异常,请联系管理员");}public static R error(String msg) {return error(500, msg);}public static R error(int code, String msg) {R r = new R();r.put("code", code);r.put("msg", msg);return r;}public static R ok(String msg) {R r = new R();r.put("msg", msg);return r;}public static R ok(Map<String, Object> map) {R r = new R();r.putAll(map);return r;}public static R ok() {return new R();}public R put(String key, Object value) {super.put(key, value);return this;}
}
基于SpringBoot的美容院管理系统相关推荐
- 若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建
场景 若依(基于SpringBoot的权限管理系统)的快速搭建: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/111030441 ...
- 若依(基于SpringBoot的权限管理系统)的快速搭建
场景 若依管理系统 基于SpringBoot的权限管理系统 官网地址: http://www.ruoyi.vip/ 下载地址: https://gitee.com/y_project/RuoYi 注: ...
- 基于SpringBoot的库存管理系统
基于SpringBoot的库存管理系统 库存管理系统 项目简介 功能简介 技术选型 数据库设计 代码结构 界面设计 代码获取 库存管理系统 项目简介 本项目为库存管理系统,实现了供销管理.进退货管理. ...
- 基于springboot的在线商城管理系统
1.项目介绍 基于springboot的在线商城管理系统3拥有两种角色,分别为管理员和用户 管理员:用户信息管理.商品信息管理.类型管理.订单管理.留言管理等 用户:商品查看.购买.购物车.订单详情. ...
- 基于 SpringBoot 的人事管理系统的设计与实现
1,项目介绍 基于 SpringBoot 的人事管理系统拥有两种角色,分别为管理员和用户.. 本系统为职工人事管理系统.系统分为七大模块:职工管理,部门管理,岗位管理,招聘管理,奖惩管理,薪资管理,培 ...
- 基于SpringBoot的毕业论文管理系统的设计与实现(开题报告)
基于Spring Boot的毕业论文管理系统 研究的背景与意义 随着信息化时代的到来,高校的管理工作也面临着信息化改革.目前,各大高校纷纷引入教务管理信息系统来加强和改善对学生.教师以及各种教务信息的 ...
- 基于springboot的电影院管理系统
1.项目介绍 基于springboot的电影院管理系统拥有三种角色,介绍如下: 账户管理员:添加管理员和用户账号 普通管理员:电影管理.排片管理.活动管理.退票策略管理.影院管理.优惠券管理等 用户: ...
- java基于springboot二手车交易管理系统附源码
二手车交易管理系统是基于java编程语言,mysql数据库,springboot框架设计,本系统主要分为用户和管理员两个角色,其中用户的功能有用户注册和登陆系统,用户查网站新闻,查看二手车,在线预定, ...
- 毕业设计-基于SpringBoot小区物业管理系统
环境:开发工具:idea,数据库:MySQL5.7 jdk1.8 架构:SpringBoot,前端HTML 主要功能 用户: 添加新投诉 添加新维修 查看个人账单 修改密码 查看我的投诉 查看我的维修 ...
最新文章
- python多线程下的信号处理程序示例
- web.config文件中的特殊字符处理
- python列表常用方法_python之 列表常用方法
- GPU Pro2 - 3.Procedural Content Generation on the GPU
- C++学习笔记(九)——引用
- 可爱圣诞节手绘手帐素材,增添情趣
- Oracle查询对应表是否在使用,oracle 中查询当前用户可以看到的表名、表对应的所有字段...
- python周期执行-用Python执行周期性动作
- 【以太坊开发】发币指南--进阶篇
- python贪心算法几个经典例子_python 贪心算法的实现
- 视频、网络传输速率科普
- iOS 删除本地文件
- 瑞利衰落信道matlab,瑞利衰落信道的matlab仿真-read.doc
- 单片机原理与接口c语言版周国运答案,单片机原理与应用(C语言版)(周国运)习题答案.doc...
- 使用阿里巴巴矢量图标库下载所需的小图标
- 关于职业规划的座谈会
- Redis-Java客户端
- 五大地形等高线特征_七年级所有知识点
- 挤出机是什么?跟模具有什么关系?
- 九章算术 四:《少广》
热门文章
- 让用户进行自传播以老拉新 还需要一个“辅助器”
- 2015年用户体验的7大预测
- 计算机科学学院毕业晚会主题,学院风采|计算机科学与技术学院举行【演e青春 驱动未来】2018届毕业生文艺晚会...
- 观Illidan被FD有感
- EditPlus注册码在线生成
- Python实现KNN(K近邻)回归模型(KNeighborsRegressor算法)并应用网格搜索算法寻找最优参数值项目实战
- framework 模块编译问题
- JAVA读取xls文件和xlsx文件
- UG快速画牛角进胶的绝招
- spring-oauth-server实践:授权方式三:PASSWORD模式下 authorities:ROLE_{user.privillege}, ROLE_USER...