👉文末查看项目功能视频演示+获取源码+sql脚本+视频导入教程视频
1 、功能描述
基于springboot的美容美妆管理系统1拥有多种角色,管理员可以不同的员工设置不同的角色权限。功能有:
会员类型管理、产品分类管理、产品管理、库存管理、顾客管理、进货管理、数据统计、顾客购买产品、顾客签到、员工打卡签到、顾客考勤、顾客活跃度、套餐管理、员工管理、销售报表、角色管理等
2、背景介绍
美容美妆管理系统是一种专门为美容美妆行业设计的信息化管理工具,旨在提高美容院、化妆品店等企业的运营效率和服务质量。该系统的出现背景如下:
行业快速发展:随着人们生活水平的提高,对美的追求也日益增加,美容美妆行业得到了快速发展。各种类型的美容美妆店如雨后春笋般涌现,市场竞争日益激烈。
信息化需求增加:随着信息技术的发展,企业对信息化管理的需求越来越强烈。传统的手工管理方式已经无法满足美容美妆店对商品进销存、顾客信息管理、销售数据分析等方面的需求。
消费者需求变化:消费者对美容美妆产品的需求更加多元化和个性化,对服务质量和购物体验的要求也日益提高。传统的管理方式难以满足消费者的需求,无法为其提供便捷的购物体验和个性化的服务。
基于以上背景,美容美妆管理系统应运而生,旨在解决行业快速发展、信息化需求增加和消费者需求变化等问题,提高美容美妆店的管理效率和顾客满意度。
3、项目技术
后端框架:springboot、Mybatis
前端技术:Layui、html、css、JavaScript、JQuery
3.1 springboot
Spring Boot是由Pivotal团队提供的基于Spring的框架,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot集成了绝大部分目前流行的开发框架,就像Maven集成了所有的JAR包一样,Spring Boot集成了几乎所有的框架,使得开发者能快速搭建Spring项目。
3.2 mysql
MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实租赁环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。
本系统使用了MySQL数据库,建立了多张数据库表来存储租赁以及汽车租赁平台相关数据。系统中主要应用查询(select),修改(update),删除(delete)以及增加(insert)等语句来实现系统功能。
3、开发环境
- JAVA版本:JDK1.8(最佳)
- IDE类型:IDEA、Eclipse都可运行
- tomcat版本:内嵌,无需再配置
- 数据库类型:MySql(5.7、8.x版本都可)
- maven版本:无限制
- 硬件环境:Windows
4、功能截图+视频演示+文档目录
4.1 登录
4.2 管理员模块
5 、核心代码实现
5.1 配置代码
spring:
datasource:
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/chuangmeng?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
servlet:
multipart:
max-file-size: 50MB
max-request-size: 50MB
server:
port: 521
redis:
open: false
shiro:
redis: false
logging:
level:
com:
mh: debug
mybatis-plus:
type-aliases-package: com.mh.*.entity
mapper-locations: classpath*:/mapper/*/*.xml
5.2 客户活跃度代码
/**
* @Author MH
* @Date 2020/2/8 16:12
* 顾客活跃度
*/
@Controller
@RequestMapping("consumer")
public class ConsumerController {
@Autowired
private ConsumerService consumerService;
@RequestMapping("livenessPage")
public String livenessPage() {
//查看一个月内顾客的到店次数
/*
* y:到店次数
* x: 日期 1-30 每次加 5
* 折线:顾客
* */
return "/member/livenessPage";
}
@RequestMapping("getJSONData")
@ResponseBody
public Map<String, Object> getJSONData(Integer month,String type) {
if (type != null && type!="") EC.TYPE=type; //设置类型
LocalDate now = LocalDate.now();
if (month == null) { //设置月
month = now.getMonthValue();
}
List<EC> ecs = consumerService.getEchartsData(month);
if (ecs==null || ecs.size()<=0){
Map map = new HashMap();
map.put("info",month+" 月还没有数据");
return map;
}
Map<String, Object> echarts = echarts(month, type, ecs);
return echarts;
}
public Map<String, Object> echarts(Integer month,String type,List<EC> ecs) {
Map<String, Object> map = new HashMap<>();
Map<String, Object> m = new HashMap<>();
m.put("text", EC.TEXT);
map.put("title", m);
Map<String, String > m1 = new HashMap<>(); //设置鼠标移入显示竖线
m1.put("trigger", "axis");
Map<String, String > mm = new HashMap<>();
mm.put("type","line");
m.put("axisPointer",mm);
map.put("tooltip", m1);
Map<String, Object> m2 = new HashMap<>();
List<String> collect = ecs.stream().map(EC::getName).collect(Collectors.toList()); //获取name的集合
m2.put("data", collect);
map.put("legend", m2);
Map<String, Object> m3 = new HashMap<>();
m3.put("left", "3%");
m3.put("right", "4%");
m3.put("bottom", "3%");
m3.put("containLabel",true);
map.put("grid", m3);
Map<String, Object> m4 = new HashMap<>();
m4.put("type", "category");
m4.put("boundaryGap", "false");
m4.put("data", ecs.get(0).getDays());
map.put("xAxis", m4);
Map<String, Object> m5 = new HashMap<>();
m5.put("type", "value");
Map<String, Object> mm5 = new HashMap<>();
mm5.put("show", false); //去掉刻度
m5.put("axisTick",mm5);
m5.put("min", 0);
m5.put("max",5);
Map<String, Object> mm6 = new HashMap<>();
mm6.put("formatter",new Integer[]{0,1,2,3,4,5});
m5.put("axisLabel",mm6);
map.put("yAxis", m5);
map.put("series", ecs);
ecs.forEach(System.out::println);
return map;
}
}