当前位置:   article > 正文

基于Java+SpringBoot+Vue+ElementUI的美发店会员管理系统_基于java+springboot+vue+elementui的美发店会员管理系统 源码

基于java+springboot+vue+elementui的美发店会员管理系统 源码

目录

系统背景

系统总体设计

运行环境

技术选型

系统架构

系统用例

系统详细设计

系统功能截图

首页统计

RBAC权限管理

商品管理

订单管理

销量统计

售后订单

收银系统

供应商管理

商品采购

采购统计

会员管理

短信管理

次卡管理

系统核心功能设计

RBAC权限设计

逻辑删除

EXCEL数据导出功能

EXCEL数据导入功能

SQL监控

MD5加密

RESTful架构风格

数据存储设计

表结构

获取源码


文章末尾免费获取源码、软件和教程~

系统背景

美发管理系统是一款专门为美发行业设计的美发管理软件,广泛适用于美发会所,美发信息化管理,美发管理系统具有强大的美发会员管理,员工管理等功能,能非常方便的打印,记录会员每次消费情况。美发管理系统是美发美容业不可获缺的强大信息管理工具。

一款好的美发会员管理系统,应该是可以帮助管理部门提高工作效率,帮助工作人员利用计算机,极为方便的对门店的有关数据进行管理、输入、输出、查找等有关操作,使杂乱的营业数据能够具体化、直观化、合理化等。

系统总体设计

运行环境

  • Java 开发工具包:jdk v1.8

  • JavaScript运行环境:nodejs v14.15.0

  • Java依赖管理工具:maven v3.3.9

  • 后端代码开发工具:idea

  • 前端代码开发工具:WebStorm

  • 数据库可视化工具:Navicat

  • 数据库:MySQL

技术选型

  • SpringBoot

  • MybatisPlus

  • Vue

  • ElementUI

  • Echarts

  • JWT

系统架构

系统用例

不同的角色具有不同的功能

系统详细设计

系统功能截图

首页统计

通过图表直观查看当天统计数据

RBAC权限管理

分配不同的角色不同权限

商品管理

订单管理

销量统计

售后订单

收银系统

供应商管理

商品采购

采购统计

会员管理

短信管理

次卡管理

系统核心功能设计

RBAC权限设计

RBAC权限设计,用于给不同用户分配不同的角色,不同的角色分配不同的权限。从而实现不同的用户有自己界面。

核心代码如下:

@RestController
@RequestMapping("/sys/role")
public class SysRoleController extends AbstractController {
    @Autowired
    private SysRoleService sysRoleService;
    @Autowired
    private SysRoleMenuService sysRoleMenuService;
​
    /**
     * 角色列表
     */
    @GetMapping("/list")
    @RequiresPermissions("sys:role:list")
    public R list(@RequestParam Map<String, Object> params){
        //如果不是超级管理员,则只查询自己创建的角色列表
        if(getUserId() != Constant.SUPER_ADMIN){
            params.put("createUserId", getUserId());
        }
​
        PageUtils page = sysRoleService.queryPage(params);
​
        return R.ok().put("page", page);
    }
    
    /**
     * 角色列表
     */
    @GetMapping("/select")
    @RequiresPermissions("sys:role:select")
    public R select(){
        Map<String, Object> map = new HashMap<>();
        
        //如果不是超级管理员,则只查询自己所拥有的角色列表
        if(getUserId() != Constant.SUPER_ADMIN){
            map.put("create_user_id", getUserId());
        }
        List<SysRoleEntity> list = (List<SysRoleEntity>) sysRoleService.listByMap(map);
        
        return R.ok().put("list", list);
    }
    
    /**
     * 角色信息
     */
    @GetMapping("/info/{roleId}")
    @RequiresPermissions("sys:role:info")
    public R info(@PathVariable("roleId") Long roleId){
        SysRoleEntity role = sysRoleService.getById(roleId);
        
        //查询角色对应的菜单
        List<Long> menuIdList = sysRoleMenuService.queryMenuIdList(roleId);
        role.setMenuIdList(menuIdList);
        
        return R.ok().put("role", role);
    }
    
    /**
     * 保存角色
     */
    @SysLog("保存角色")
    @PostMapping("/save")
    @RequiresPermissions("sys:role:save")
    public R save(@RequestBody SysRoleEntity role){
        ValidatorUtils.validateEntity(role);
        
        role.setCreateUserId(getUserId());
        sysRoleService.saveRole(role);
        
        return R.ok();
    }
    
    /**
     * 修改角色
     */
    @SysLog("修改角色")
    @PostMapping("/update")
    @RequiresPermissions("sys:role:update")
    public R update(@RequestBody SysRoleEntity role){
        ValidatorUtils.validateEntity(role);
        
        role.setCreateUserId(getUserId());
        sysRoleService.update(role);
        
        return R.ok();
    }
    
    /**
     * 删除角色
     */
    @SysLog("删除角色")
    @PostMapping("/delete")
    @RequiresPermissions("sys:role:delete")
    public R delete(@RequestBody Long[] roleIds){
        sysRoleService.deleteBatch(roleIds);
        
        return R.ok();
    }
}

逻辑删除

表采用逻辑删除,企业应用都不会真实地从数据库删除数据,而是进行伪删除,极大地提高了系统安全性和可恢复性。每个实体类有添加@TableLogic

核心代码如下:

EXCEL数据导出功能

支持页面数据导出

EXCEL数据导入功能

支持下载excel模板,填入数据后,支持数据导入

SQL监控

引入SQL监控插件,可以查看每条sql的执行次数和执行时间等相关信息,从而方便进行系统优化

MD5加密

密码采用加密,就算是后台人员也无法直接查看和破解密码,极大保障用户数据安全

RESTful架构风格

采用这种架构风格,前后端对接能很好地进行交互

代码如下:

@RestController
@RequestMapping("generator/mallgoods")
public class MallGoodsController extends AbstractController {
    @Autowired
    private MallGoodsService mallGoodsService;
​
    /**
     * 列表
     */
    @RequestMapping("/list")
    @RequiresPermissions("generator:mallgoods:list")
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = mallGoodsService.queryPage(params);
​
        return R.ok().put("page", page);
    }
​
    /**
     * 列表
     */
    @RequestMapping("/queryAll")
    @RequiresPermissions("generator:mallgoods:list")
    public R queryAll(){
        List<MallGoodsEntity> all = mallGoodsService.list();
​
        return R.ok().put("all", all);
    }
​
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    @RequiresPermissions("generator:mallgoods:info")
    public R info(@PathVariable("id") Long id){
        MallGoodsEntity mallGoods = mallGoodsService.getById(id);
​
        return R.ok().put("mallGoods", mallGoods);
    }
​
    /**
     * 保存
     */
    @RequestMapping("/save")
    @RequiresPermissions("generator:mallgoods:save")
    public R save(@RequestBody MallGoodsEntity mallGoods){
​
        mallGoods.setSalesCount(0L);
        mallGoods.setStock(0L);
        mallGoods.setCreateUserId(getUserId());
        mallGoods.setUpdateUserId(getUserId());
        Date date = new Date();
        mallGoods.setCreateTime(date);
        mallGoods.setUpdateTime(date);
        mallGoodsService.save(mallGoods);
​
        return R.ok();
    }
​
    /**
     * 修改
     */
    @RequestMapping("/update")
    @RequiresPermissions("generator:mallgoods:update")
    public R update(@RequestBody MallGoodsEntity mallGoods){
​
        mallGoods.setUpdateUserId(getUserId());
        Date date = new Date();
        mallGoods.setUpdateTime(date);
        mallGoodsService.updateById(mallGoods);
​
        return R.ok();
    }
​
    /**
     * 删除
     */
    @RequestMapping("/delete")
    @RequiresPermissions("generator:mallgoods:delete")
    public R delete(@RequestBody Long[] ids){
        mallGoodsService.removeByIds(Arrays.asList(ids));
​
        return R.ok();
    }
​
}

数据存储设计

表结构

  • 商品信息

    CREATE TABLE mall_goods(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        category_id BIGINT    COMMENT '分类id' ,
        goods_sn VARCHAR(128)    COMMENT '编码' ,
        name VARCHAR(128)    COMMENT '名称' ,
        brand_id BIGINT    COMMENT '品牌id' ,
        stock BIGINT    COMMENT '库存' ,
        description VARCHAR(512)    COMMENT '描述' ,
        is_on_sale INT    COMMENT '是否在售' ,
        sale_price DECIMAL(32,8)    COMMENT '零售价' ,
        sales_count BIGINT    COMMENT '销量' ,
        is_times_card INT   DEFAULT 0 COMMENT '是否次卡' ,
        standard_times INT    COMMENT '标准次数' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        PRIMARY KEY (id)
    ) COMMENT = '商品信息';
  • 商品分类

    CREATE TABLE mall_category(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        code VARCHAR(128)    COMMENT '编码' ,
        name VARCHAR(128)    COMMENT '名称' ,
        parent_id BIGINT    COMMENT '父主键' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        PRIMARY KEY (id)
    ) COMMENT = '商品分类 ';
  • 商品采购订单

    CREATE TABLE mall_purchase(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        supplier_id BIGINT    COMMENT '供应商id' ,
        assignee_name VARCHAR(32)    COMMENT '采购人姓名' ,
        phone VARCHAR(32)    COMMENT '采购人手机' ,
        purchase_date DATETIME    COMMENT '采购日期' ,
        purchase_amount DECIMAL(32,8)    COMMENT '采购金额' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        PRIMARY KEY (id)
    ) COMMENT = '商品采购订单 ';
  • 商品采购单明细

    CREATE TABLE mall_purchase_detail(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        batch_num VARCHAR(32)    COMMENT '批号' ,
        purchase_id BIGINT    COMMENT '采购单id' ,
        goods_id BIGINT    COMMENT '商品id' ,
        unit INT    COMMENT '计量单位:1-个 2-盒 3-箱' ,
        purchase_count BIGINT    COMMENT '采购数量' ,
        cost_price DECIMAL(32,8)    COMMENT '成本总价' ,
        stock BIGINT    COMMENT '库存,初始值为采购数量' ,
        sale_price DECIMAL(32,8)    COMMENT '零售价' ,
        production_date DATETIME    COMMENT '生产日期' ,
        valid_date DATETIME    COMMENT '有效日期' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        PRIMARY KEY (id)
    ) COMMENT = '商品采购单明细 ';
  • 供应商

    CREATE TABLE mall_supplier(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        code VARCHAR(32)    COMMENT '供应商编号' ,
        name VARCHAR(32)    COMMENT '供应商名称' ,
        address VARCHAR(64)    COMMENT '联系供应商注册地址' ,
        contact_person VARCHAR(32)    COMMENT '联系人' ,
        telephone VARCHAR(32)    COMMENT '手机' ,
        status INT    COMMENT '状态 0:失效1:有效' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        PRIMARY KEY (id)
    ) COMMENT = '供应商 ';
  • 订单

    CREATE TABLE mall_order(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        order_show_id VARCHAR(32)    COMMENT '订单展示号,只用于展示' ,
        total_amount DECIMAL(32,8)    COMMENT '订单总价格' ,
        real_pay_amount DECIMAL(32,8)    COMMENT '实际支付总价格' ,
        pay_method INT    COMMENT '支付方式 1:微信、2:支付宝、3:现金' ,
        order_status INT    COMMENT '订单状态 1:待付款、2:已支付、3:交易关闭、4:已退款' ,
        pay_date DATETIME    COMMENT '支付日期' ,
        remark VARCHAR(32)    COMMENT '备注' ,
        vip_id BIGINT    COMMENT '会员id' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        PRIMARY KEY (id)
    ) COMMENT = '订单 ';
  • 订单明细

    CREATE TABLE mall_order_detail(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        order_id BIGINT    COMMENT '订单id' ,
        goods_id BIGINT    COMMENT '商品id' ,
        purchase_detail_id BIGINT    COMMENT '采购订单明细id' ,
        goods_name VARCHAR(32)    COMMENT '商品名称' ,
        sale_price DECIMAL(32,8)    COMMENT '零售价' ,
        real_sale_price DECIMAL(32,8)    COMMENT '实际售价' ,
        buy_counts BIGINT    COMMENT '购买数量' ,
        refund_counts BIGINT    COMMENT '退货数量:默认0' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        PRIMARY KEY (id)
    ) COMMENT = '订单明细 ';
  • 售后订单

    CREATE TABLE mall_refund_order(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        refund_order_show_id VARCHAR(32)    COMMENT '退款订单展示号,只用于展示' ,
        orderId BIGINT    COMMENT '订单id' ,
        total_amount DECIMAL(32,8)    COMMENT '订单总价格' ,
        real_pay_amount DECIMAL(32,8)    COMMENT '实际退款总价格' ,
        pay_method INT    COMMENT '退款方式 1:微信、2:支付宝、3:现金' ,
        order_status INT    COMMENT '订单状态 1:待付款、2:已支付、3:交易关闭、4:已退款' ,
        pay_date DATETIME    COMMENT '退款日期' ,
        remark VARCHAR(32)    COMMENT '备注' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        PRIMARY KEY (id)
    ) COMMENT = '售后订单 ';
  • 售后订单明细

    CREATE TABLE mall_refund_order_detail(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        refund_order_id BIGINT    COMMENT '售后订单id' ,
        orderId BIGINT    COMMENT '订单id' ,
        goods_id BIGINT    COMMENT '商品id' ,
        purchase_detail_id BIGINT    COMMENT '采购订单明细id' ,
        goods_name VARCHAR(32)    COMMENT '商品名称' ,
        sale_price DECIMAL(32,8)    COMMENT '零售价' ,
        real_sale_price DECIMAL(32,8)    COMMENT '实际售价' ,
        refund_counts BIGINT    COMMENT '退货数量' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        PRIMARY KEY (id)
    ) COMMENT = '售后订单明细 ';
  • 次卡使用记录表

    CREATE TABLE mall_times_card_history(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        times_card_id BIGINT    COMMENT '次卡表id' ,
        used_times INT    COMMENT '已用次数' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        PRIMARY KEY (id)
    ) COMMENT = '次卡使用记录表 ';
  • 次卡表

    CREATE TABLE mall_times_card(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        vip_id BIGINT    COMMENT '会员id' ,
        order_id BIGINT    COMMENT '订单id' ,
        order_show_id VARCHAR(32)    COMMENT '订单展示号,只用于展示' ,
        order_detail_id BIGINT    COMMENT '订单明细id' ,
        goods_id BIGINT    COMMENT '商品id' ,
        goods_name VARCHAR(32)    COMMENT '商品名称' ,
        standard_times INT    COMMENT '标准次数' ,
        used_times INT    COMMENT '已用次数' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        is_effective INT    COMMENT '是否有效' ,
        PRIMARY KEY (id)
    ) COMMENT = '次卡表 ';
  • 会员表

    CREATE TABLE mall_vip(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        name VARCHAR(32)    COMMENT '名称' ,
        phone VARCHAR(32)    COMMENT '手机' ,
        sex INT   DEFAULT 0 COMMENT '性别' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        PRIMARY KEY (id)
    ) COMMENT = '会员表 ';
  • 短信记录表

    CREATE TABLE mall_message(
        id BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
        content VARCHAR(128)    COMMENT '内容' ,
        phone VARCHAR(32)    COMMENT '手机' ,
        is_success INT   DEFAULT 1 COMMENT '是否成功' ,
        revision INT    COMMENT '乐观锁' ,
        create_user_id BIGINT NOT NULL   COMMENT '创建人' ,
        create_time DATETIME NOT NULL   COMMENT '创建时间' ,
        update_user_id BIGINT NOT NULL   COMMENT '更新人' ,
        update_time DATETIME NOT NULL   COMMENT '更新时间' ,
        is_delete INT NOT NULL  DEFAULT 0 COMMENT '是否删除' ,
        PRIMARY KEY (id)
    ) COMMENT = '短信记录表 ';

获取源码

觉得不错就点赞、收藏、关注、评论 吧。致力于将企业开发模式运用于项目学习中,在项目的学习中,同时了解企业开发模式和业务设计。系统包含源码、全套安装软件和视频安装教程。详情私聊我吧。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/894088
推荐阅读
相关标签
  

闽ICP备14008679号