springboot058美发门店管理系统设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

4.1概述

本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示:

图4-1系统工作原理图

4.2系统结构

本系统是基于B/S架构的网站系统,设计的管理员功能结构图如下图所示:

图4-2管理员功能结构图

本系统是基于B/S架构的网站系统,设计的用户功能结构图如下图所示:

图4-3 用户功能结构图

4.3.数据库设计

4.3.1数据库实体

概念设计的目标是设计出反映某个组织部门信息需求的数据库系统概念模式,数据库系统的概念模式独立于数据库系统的逻辑结构、独立于数据库管理系统(DBMS)、独立于计算机系统。

概念模式的设计方法是在需求分析的基础上,用概念数据模型(例如E-R模型)表示数据及数据之间的相互联系,设计出反映用户信息需求和处理需求的数据库系统概念模式。概念设计的目标是准确描述应用领域的信息模式,支持用户的各种应用,这样既容易转换为数据库系统逻辑模式,又容易为用户理解。数据库系统概念模式是面向现实世界的数据模型,不能直接用于数据库系统的实现。在此阶段,用户可以参与和评价数据库系统的设计,从而有利于保证数据库系统的设计与用户的需求相吻合。在概念模式的设计中,E-R模型法是最常见的设计方法。本系统的E-R图如下图所示:

4.3.2数据库设计表

美发门店管理系统需要后台数据库,下面介绍数据库中的各个表的详细信息:

表4.1 产品购买

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

chanpinmingcheng

varchar(200)

NULL

产品名称

chanpinleixing

varchar(200)

NULL

产品类型

chanpinshuliang

int(11)

NULL

产品数量

chanpinshoujia

int(11)

NULL

产品售价

zongjia

varchar(200)

NULL

总价

beizhu

longtext

NULL

备注

shouhuodizhi

varchar(200)

NULL

收货地址

lianxidianhua

varchar(200)

NULL

联系电话

zhanghao

varchar(200)

NULL

账号

sfsh

varchar(200)

是否审核

shhf

longtext

NULL

审核回复

ispay

varchar(200)

未支付

是否支付

表4.2 产品库存

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

chanpinmingcheng

varchar(200)

NULL

产品名称

chanpinleixing

varchar(200)

NULL

产品类型

gonghuochangjia

varchar(200)

NULL

供货厂家

chanpinjieshao

longtext

NULL

产品介绍

chanpinshuliang

int(11)

NULL

产品数量

chanpinshoujia

int(11)

NULL

产品售价

xiangqing

longtext

NULL

详情

tupian

varchar(200)

NULL

图片

thumbsupnum

int(11)

0

crazilynum

int(11)

0

clicktime

datetime

NULL

最近点击时间

clicknum

int(11)

0

点击次数

表4.3 产品类型

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

leixing

varchar(200)

NULL

类型

表4.4 产品入库

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

chanpinmingcheng

varchar(200)

NULL

产品名称

chanpinleixing

varchar(200)

NULL

产品类型

gonghuochangjia

varchar(200)

NULL

供货厂家

chanpinshuliang

int(11)

NULL

产品数量

chanpinjinjia

int(11)

NULL

产品进价

beizhu

longtext

NULL

备注

baifangweizhi

varchar(200)

NULL

摆放位置

rukuriqi

date

NULL

入库日期

表4.5 产品库存评论表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

refid

bigint(20)

关联表id

userid

bigint(20)

用户id

nickname

varchar(200)

NULL

用户名

content

longtext

评论内容

reply

longtext

NULL

回复内容

表4.6 会员充值

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

huiyuankamingcheng

varchar(200)

NULL

会员卡名称

huiyuankaleixing

varchar(200)

NULL

会员卡类型

jine

int(11)

NULL

金额

chongzhifangshi

varchar(200)

NULL

充值方式

beizhu

longtext

NULL

备注

lianxidianhua

varchar(200)

NULL

联系电话

zhanghao

varchar(200)

NULL

账号

sfsh

varchar(200)

是否审核

shhf

longtext

NULL

审核回复

ispay

varchar(200)

未支付

是否支付

表4.7 会员卡

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

huiyuankamingcheng

varchar(200)

NULL

会员卡名称

huiyuankaleixing

varchar(200)

NULL

会员卡类型

huiyuankajieshao

longtext

NULL

会员卡介绍

huiyuankaqixian

varchar(200)

NULL

会员卡期限

jine

int(11)

NULL

金额

faburiqi

date

NULL

发布日期

tupian

varchar(200)

NULL

图片

表4.8 美容项目

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

xiangmumingcheng

varchar(200)

NULL

项目名称

xiangmuleixing

varchar(200)

NULL

项目类型

xiangmujieshao

longtext

NULL

项目介绍

meironggongxiao

longtext

NULL

美容功效

xiangmujine

int(11)

NULL

项目金额

xiangqing

longtext

NULL

详情

tupian

varchar(200)

NULL

图片

clicktime

datetime

NULL

最近点击时间

clicknum

int(11)

0

点击次数

表4.9 收藏表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

userid

bigint(20)

用户id

refid

bigint(20)

NULL

收藏id

tablename

varchar(200)

NULL

表名

name

varchar(200)

收藏名称

picture

varchar(200)

收藏图片

表4.10 管理员表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

username

varchar(100)

用户名

password

varchar(100)

密码

role

varchar(100)

管理员

角色

addtime

timestamp

CURRENT_TIMESTAMP

新增时间

表4.11 项目类型

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

leixing

varchar(200)

NULL

类型

表4.12 项目预定

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

xiangmumingcheng

varchar(200)

NULL

项目名称

xiangmuleixing

varchar(200)

NULL

项目类型

xiangmujine

int(11)

NULL

项目金额

zhifufangshi

varchar(200)

NULL

支付方式

xiaofeiriqi

date

NULL

消费日期

beizhu

longtext

NULL

备注

lianxidianhua

varchar(200)

NULL

联系电话

zhanghao

varchar(200)

NULL

账号

sfsh

varchar(200)

是否审核

shhf

longtext

NULL

审核回复

ispay

varchar(200)

未支付

是否支付

表4.13 用户

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

zhanghao

varchar(200)

账号

mima

varchar(200)

密码

xingming

varchar(200)

姓名

xingbie

varchar(200)

NULL

性别

huiyuankahao

varchar(200)

NULL

会员卡号

shengri

date

NULL

生日

lianxidianhua

varchar(200)

NULL

联系电话

shenfenzheng

varchar(200)

NULL

身份证

表4.14 余额查询

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

zhanghao

varchar(200)

NULL

账号

huiyuankahao

varchar(200)

NULL

会员卡号

huiyuanleixing

varchar(200)

NULL

会员类型

huiyuandengji

int(11)

NULL

会员等级

banliriqi

date

NULL

办理日期

shiyongshijian

varchar(200)

NULL

使用时间

huiyuanyue

int(11)

NULL

会员余额

添加图片注释,不超过 140 字(可选)

5系统详细实现

5.1 管理员模块的实现

5.1.1 美容项目管理

美发门店管理系统的系统管理员可以管理美容项目,可以对美容项目信息添加修改删除以及查询操作。具体界面的展示如图5.1所示。

图5.1 美容项目信息管理界面

5.1.2 产品库存管理

系统管理员可以查看产品库存,修改,删除以及查询操作。具体界面如图5.2所示。

图5.2 产品库存信息管理界面

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
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 com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.ChanpinkucunEntity;
import com.entity.view.ChanpinkucunView;

import com.service.ChanpinkucunService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 产品库存
 * 后端接口
 * @author 
 * @email 
 * @date 2021-04-17 11:52:25
 */
@RestController
@RequestMapping("/chanpinkucun")
public class ChanpinkucunController {
    @Autowired
    private ChanpinkucunService chanpinkucunService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,ChanpinkucunEntity chanpinkucun,
		HttpServletRequest request){
        EntityWrapper<ChanpinkucunEntity> ew = new EntityWrapper<ChanpinkucunEntity>();
		PageUtils page = chanpinkucunService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chanpinkucun), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,ChanpinkucunEntity chanpinkucun, HttpServletRequest request){
        EntityWrapper<ChanpinkucunEntity> ew = new EntityWrapper<ChanpinkucunEntity>();
		PageUtils page = chanpinkucunService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chanpinkucun), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( ChanpinkucunEntity chanpinkucun){
       	EntityWrapper<ChanpinkucunEntity> ew = new EntityWrapper<ChanpinkucunEntity>();
      	ew.allEq(MPUtil.allEQMapPre( chanpinkucun, "chanpinkucun")); 
        return R.ok().put("data", chanpinkucunService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(ChanpinkucunEntity chanpinkucun){
        EntityWrapper< ChanpinkucunEntity> ew = new EntityWrapper< ChanpinkucunEntity>();
 		ew.allEq(MPUtil.allEQMapPre( chanpinkucun, "chanpinkucun")); 
		ChanpinkucunView chanpinkucunView =  chanpinkucunService.selectView(ew);
		return R.ok("查询产品库存成功").put("data", chanpinkucunView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        ChanpinkucunEntity chanpinkucun = chanpinkucunService.selectById(id);
		chanpinkucun.setClicknum(chanpinkucun.getClicknum()+1);
		chanpinkucun.setClicktime(new Date());
		chanpinkucunService.updateById(chanpinkucun);
        return R.ok().put("data", chanpinkucun);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        ChanpinkucunEntity chanpinkucun = chanpinkucunService.selectById(id);
		chanpinkucun.setClicknum(chanpinkucun.getClicknum()+1);
		chanpinkucun.setClicktime(new Date());
		chanpinkucunService.updateById(chanpinkucun);
        return R.ok().put("data", chanpinkucun);
    }
    


    /**
     * 赞或踩
     */
    @RequestMapping("/thumbsup/{id}")
    public R vote(@PathVariable("id") String id,String type){
        ChanpinkucunEntity chanpinkucun = chanpinkucunService.selectById(id);
        if(type.equals("1")) {
        	chanpinkucun.setThumbsupnum(chanpinkucun.getThumbsupnum()+1);
        } else {
        	chanpinkucun.setCrazilynum(chanpinkucun.getCrazilynum()+1);
        }
        chanpinkucunService.updateById(chanpinkucun);
        return R.ok("投票成功");
    }

    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody ChanpinkucunEntity chanpinkucun, HttpServletRequest request){
    	chanpinkucun.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(chanpinkucun);
        chanpinkucunService.insert(chanpinkucun);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody ChanpinkucunEntity chanpinkucun, HttpServletRequest request){
    	chanpinkucun.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(chanpinkucun);
        chanpinkucunService.insert(chanpinkucun);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody ChanpinkucunEntity chanpinkucun, HttpServletRequest request){
        //ValidatorUtils.validateEntity(chanpinkucun);
        chanpinkucunService.updateById(chanpinkucun);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        chanpinkucunService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<ChanpinkucunEntity> wrapper = new EntityWrapper<ChanpinkucunEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = chanpinkucunService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	/**
     * 前端智能排序
     */
	@IgnoreAuth
    @RequestMapping("/autoSort")
    public R autoSort(@RequestParam Map<String, Object> params,ChanpinkucunEntity chanpinkucun, HttpServletRequest request,String pre){
        EntityWrapper<ChanpinkucunEntity> ew = new EntityWrapper<ChanpinkucunEntity>();
        Map<String, Object> newMap = new HashMap<String, Object>();
        Map<String, Object> param = new HashMap<String, Object>();
		Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry<String, Object> entry = it.next();
			String key = entry.getKey();
			String newKey = entry.getKey();
			if (pre.endsWith(".")) {
				newMap.put(pre + newKey, entry.getValue());
			} else if (StringUtils.isEmpty(pre)) {
				newMap.put(newKey, entry.getValue());
			} else {
				newMap.put(pre + "." + newKey, entry.getValue());
			}
		}
		params.put("sort", "clicknum");
        params.put("order", "desc");
		PageUtils page = chanpinkucunService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chanpinkucun), params), params));
        return R.ok().put("data", page);
    }


}

5.1.3 产品购买管理

管理员可以对产品库存信息进行审核操作。界面如下图所示:

图5.3 产品库存信息管理界面

5.1.4 会员卡管理

管理员可以对会员卡信息进行添加,修改删除以及查询操作。界面如下图所示:

图5.4 会员卡s管理界面

5.2 用户模块的实现

5.2.1 项目预定管理

用户登录后可以对项目预定信息进行预定操作。界面如下图所示:

图5.5 项目预定界面

5.2.1 产品购买信息

用户登录后可以对产品购买进行支付操作。界面如下图所示:

图5.6 产品购买信息界面

5.2.3 会员充值管理

用户登录后可以在会员充值进行会员充值操作。界面如下图所示:

图5.7 会员充值信息界面

大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翰文编程

你的鼓励 是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值