理发店管理系统

简介

基于 SpringBoot + Vue 的理发店管理系统,vue 部分为 html 页面,使用 layui 作为 ui 库,使用 axios 对接口进行访问,使用 shiro 作为权限管理框架,使用 mysql 作为数据库,使用 echarts 进行统计图表的绘制,使用了 @media 进行手机端的响应布局。

功能

  • 登录
  • 会员管理
  • 会员充值消费
  • 会员办理
  • 会员记录
  • 收益情况
  • 个人信息

代码

shiro 配置

package com.jun.config.shiro;import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.LinkedHashMap;
import java.util.Map;/*** @author zjp*/
@Configuration
public class ShiroConfig {@Beanpublic ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager defaultWebSecurityManager){ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();bean.setSecurityManager(defaultWebSecurityManager);/*** anon:无需认证* authc: 必须认证* user: 记住我才能使用* perms: 拥有权对某个资源的权限* role 角色权限*/System.out.println("授权");Map<String, String> filterMap = new LinkedHashMap<>();filterMap.put("/html/reset.html","anon");filterMap.put("/img/**","anon");filterMap.put("/html/**","authc");bean.setFilterChainDefinitionMap(filterMap);bean.setLoginUrl("/html/login.html");return bean;}@Bean(name = "securityManager")public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){DefaultWebSecurityManager securityManager =new DefaultWebSecurityManager();securityManager.setRealm(userRealm);return securityManager;}@Bean(name = "userRealm")public UserRealm userRealm(){return new UserRealm();}
}

控制器层

package com.jun.controller;import com.jun.entity.Consume;
import com.jun.entity.UserConsume;
import com.jun.service.ConsumeService;
import com.jun.service.UserConsumeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;@RestController
@CrossOrigin
@RequestMapping("general_user") //普通用户的控制层
@Slf4j
public class GeneralUser {@AutowiredUserConsumeService userConsumeService;@AutowiredConsumeService consumeService;SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");@PostMapping("/profitIn")   //普通用户收益录入public Map<String,Object> profitIn(@RequestBody Map<String,Object> map){HashMap<String, Object> hashMap = new HashMap<>();String profitIn = (String) map.get("profitIn"); //得到要录入的收益String time = simpleDateFormat.format(new Date());int i = userConsumeService.insertUserConsume(new UserConsume("", profitIn, time, "普通用户收益录入"));if(i==1){hashMap.put("state",true);hashMap.put("msg","录入成功!");log.info("普通用户收益录入成功!");int f = consumeService.insertConsume(new Consume("0", profitIn, time, "普通用户消费"));if(f==1){log.info("插入一条总消费记录成功!");}else{log.info("插入一条总消费记录失败!");}}else{hashMap.put("state",false);hashMap.put("msg","录入失败!");log.info("普通用户收益录入失败!");}return hashMap;}
}

md5加密

package com.jun.utils;import java.math.BigInteger;
import java.security.MessageDigest;public class MD5Utils {public static String getMD5String(String str) {try {// 生成一个MD5加密计算摘要MessageDigest md = MessageDigest.getInstance("MD5");// 计算md5函数md.update(str.getBytes());// digest()最后确定返回md5 hash值,返回值为8位字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符// BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值//一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方)return new BigInteger(1, md.digest()).toString(16);} catch (Exception e) {e.printStackTrace();return null;}}
}

日期 mac 地址工具

package com.jun.utils;import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.text.SimpleDateFormat;
import java.util.Calendar;public class Utils {public  static  int  dayForWeek(String pTime) throws  Exception {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd" );Calendar c = Calendar.getInstance();c.setTime(format.parse(pTime));int  dayForWeek = 0 ;if (c.get(Calendar.DAY_OF_WEEK) == 1 ){dayForWeek = 7 ;}else {dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1 ;}return  dayForWeek;}public static String getLocalMac(InetAddress ia) throws SocketException {// TODO Auto-generated method stub//获取网卡,获取地址byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();StringBuffer sb = new StringBuffer("");for(int i=0; i<mac.length; i++) {if(i!=0) {sb.append("-");}//字节转换为整数int temp = mac[i]&0xff;String str = Integer.toHexString(temp);if(str.length()==1) {sb.append("0"+str);}else {sb.append(str);}}System.out.println("本机MAC地址:"+sb.toString().toUpperCase());return sb.toString().toUpperCase();}}

示例

登录

用户列表

充值与查询消费

办理会员卡

会员记录

收益情况


个人信息

收益情况

基于 SpringBoot + Vue 的理发店管理系统相关推荐

  1. 计算机毕业设计基于Springboot+vue口腔牙科诊所管理系统

    计算机毕业设计基于Springboot+vue口腔牙科诊所管理系统 口腔卫生是关系民生的一个重要问题.口腔健康会直接影响全身的健康,口腔基本常见的有龋齿,牙周炎等问题,而且人类的牙齿只有2次更换周期, ...

  2. 基于 SpringBoot + Vue 的物流管理系统(附源码)

    国庆期间哪也没去,在家闲来无事,写了一个基于 SpringBoot + Vue 的物流管理系统,把源码分享给大家,在文章结尾处,自行获取即可~ 一.介绍 基于Java的物流管理系统. 二.软件架构 系 ...

  3. 基于Springboot+vue电影院会员管理系统(源代码+数据库+文档)025

    部分代码地址 https://gitee.com/ynwynwyn/cinema-public 基于Springboot+vue电影院会员管理系统(源代码+数据库+文档) 一.系统介绍 cinema项 ...

  4. 基于springboot+vue的养老院管理系统

    本项目是一套基于springboot+vue的养老院管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者.也可作为课程设计.期末大作业. 包含:项目源码.数据库脚本.软 ...

  5. 基于springboot+vue的幼儿园管理系统 elementui

    幼儿是祖国的花朵,是未来国家建设的接班人.如果能够让幼儿园更好的对院所内部进行更好的管理是很多家长和幼儿园的工作人员所关心的问题.为此我开发了幼儿园管理系统,让家长和院所的管理人员能够更好的进行沟通, ...

  6. Java基于springboot+vue的电子相册管理系统 前后端分离node

    智能电子相册是一个可以永久保留记忆的东西,用户可以讲自己美好的一面展示在网络上,人更多的人了解到自己的生活,为此我们通过Java语言并结合springboot+vue开发了本次的电子相册管理系统,希望 ...

  7. 计算机毕业设计基于Springboot+vue口腔牙科诊所管理系统——计算机毕业设计

    口腔卫生是关系民生的一个重要问题.口腔健康会直接影响全身的健康,口腔基本常见的有龋齿,牙周炎等问题,而且人类的牙齿只有2次更换周期,一旦牙齿彻底完成更换终生将不再更换,所以越来越多的人开始关系口腔问题 ...

  8. 计算机毕业设计:基于Springboot+vue口腔牙科诊所管理系统

    项目介绍 口腔卫生是关系民生的一个重要问题.口腔健康会直接影响全身的健康,口腔基本常见的有龋齿,牙周炎等问题,而且人类的牙齿只有2次更换周期,一旦牙齿彻底完成更换终生将不再更换,所以越来越多的人开始关 ...

  9. 基于SpringBoot+vue的文件管理系统

    简述: 该系统基于角色权限的登录,分为管理员和用户. 管理员账号登录后菜单有:文件管理.用户管理.菜单管理.首页管理 普通账号登录后菜单有:文件管理 技术栈: SpringBoot + Spring ...

最新文章

  1. 适配器模式(Adapter)和外观模式(Facade)
  2. 137.三网?哪三网?139.网络协议三要素?141.网络安全有哪些方面?
  3. VTK:相互作用之MoveAGlyph
  4. 现在要吃软饭的,都这么明目张胆了吗?
  5. MySQL 的索引是什么?怎么优化?
  6. java.util.hashmap_java.util.HashMap中的无限循环
  7. win10偶然无法使用任务栏的问题解决办法
  8. 003.DNS主从正反解析部署
  9. 代码 微信小程序 词典_微信小程序+ANKIWEB-学习语言的神器,背诵单词的利剑
  10. WebAPi--找到了多个请求匹配的操作
  11. Android仿人人客户端(v5.7.1)——Auth授权认证(整理流程,重构代码)
  12. 【0x50 动态规划】Mobile Service【线性DP】
  13. 中国食品安全检测市场专项调研及投资前景预测报告2022-2027年
  14. 用python把视频转换为图片
  15. 有一种英语口音,不仅一般人儿听不懂,连各种语音识别都全军覆没…(新版)...
  16. 【STM32f10】MDK编译报错:Undefined symbol TIM3_PWM_Init (referred from main.o)
  17. 爬虫——bs4测试——test.html
  18. android微信群聊功能,Android仿微信群聊头像效果
  19. android:stretchcolumns=0,1,2,3,stretch_stretch是什么意思
  20. dbSUPER:人和小鼠中的超级增强子数据库

热门文章

  1. 软件工程师薪水_13个薪水最高的技术工作软件工程师可以致力于提高薪水
  2. python爬取豆瓣短评_Python爬取豆瓣指定书籍的短评
  3. Lombok will not run during this compilation
  4. 关于5G网络安全问题的分析与展望(一)
  5. 服务器u.2接口固态硬盘,固态硬盘的U.2接口为何物
  6. 游戏开发笔记(序)——因由、感想与目的
  7. 前端三剑客——CSS
  8. 查询图书信息接口 查询图书详情
  9. 【小样本学习】2022 KDD Task-Adaptive Few-shot Node Classification
  10. Linux菜鸟成长日记 ( vim程序编辑器及常见的文件管理命令)