基于springboot+vue的美容院管理系统(前后端分离)

博主主页猫头鹰源码

博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战

主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询

文末联系获取

研究背景: 

 如今的信息时代,对信息的共享性,信息的流通性有着较高要求,尽管身边每时每刻都在产生大量信息,这些信息也都会在短时间内得到处理,并迅速传播。因为很多时候,管理层决策需要大量信息作为参考依据,也有些时候,各大企业或学校也需要使用工具宣传自身的文化理念等等,所以信息能够得到迅速传播并带给人们一定的参考价值,充分发挥信息本身的作用是很有必要的,而这些恰恰是传统模式所不能相比的。因此,借助工具让信息系统化,流程化,规范化是最终的发展结果,而这个工具则是计算机软件。本次设计实现的计算机软件美容院管理系统,让其遵循实际操作流程的情况下,对美容院信息实施规范化处理,让美容院信息通过电子的方式进行保存,无论是管理人员检索美容院信息,维护美容院信息都可以便利化操作,真正缩短信息处理时间,节省人力和信息管理的成本。

功能介绍:

系统包含技术:

后端:springboot,mybatis
前端:element-ui、js、css等
开发工具:idea/vscode
数据库:mysql 5.7
JDK版本:jdk1.8

部分截图说明:

实现普通用户权限的美容用品功能,其运行效果见下图。普通用户查看美容用品,在本页面购买美容用品,或把美容用品添加购物车。 

实现普通用户权限的购物车功能,其运行效果见下图。普通用户在本模块购买美容用品,需要提供收货地址,然后选择支付方式支付订单。 

 

实现普通用户权限的我的订单功能,其运行效果见下图。普通用户在本模块查看不同状态的订单,已支付订单在未发货前也能退款。 

实现会员权限的美容项目功能,其运行效果见下图。会员查看美容项目介绍,预约美容项目。 

实现管理员权限的美容部位管理功能,其运行效果见下图。管理员修改美容部位信息,删除美容部位信息,新增美容部位信息。 

实现管理员权限的销量信息统计功能,其运行效果见下图。管理员通过销量统计报表查看各种美容用品的销量信息。 

实现管理员权限的已支付订单功能,其运行效果见下图。管理员查看已支付订单信息,查看下单人提供的收货地址,然后进行订单发货。 

实现技师权限的预约信息管理功能,其运行效果见下图。会员预约技师提供的美容项目,技师则需要进行查看和审核。 

部分代码: 

/**  * 会员  * 后端接口  * @author   * @email   * @date 2021-04-26 10:06:05  */ @RestController @RequestMapping("/huiyuan") public class HuiyuanController {     @Autowired     private HuiyuanService huiyuanService;      	@Autowired 	private TokenService tokenService; 	 	/** 	 * 登录 	 */ 	@IgnoreAuth 	@RequestMapping(value = "/login") 	public R login(String username, String password, String captcha, HttpServletRequest request) { 		HuiyuanEntity user = huiyuanService.selectOne(new EntityWrapper<HuiyuanEntity>().eq("huiyuanzhanghao", username)); 		if(user==null || !user.getMima().equals(password)) { 			return R.error("账号或密码不正确"); 		} 		 		String token = tokenService.generateToken(user.getId(), username,"huiyuan",  "会员" ); 		return R.ok().put("token", token); 	} 	 	/**      * 注册      */ 	@IgnoreAuth     @RequestMapping("/register")     public R register(@RequestBody HuiyuanEntity huiyuan){     	//ValidatorUtils.validateEntity(huiyuan);     	HuiyuanEntity user = huiyuanService.selectOne(new EntityWrapper<HuiyuanEntity>().eq("huiyuanzhanghao", huiyuan.getHuiyuanzhanghao())); 		if(user!=null) { 			return R.error("注册用户已存在"); 		} 		Long uId = new Date().getTime(); 		huiyuan.setId(uId);         huiyuanService.insert(huiyuan);         return R.ok();     } 	 	/** 	 * 退出 	 */ 	@RequestMapping("/logout") 	public R logout(HttpServletRequest request) { 		request.getSession().invalidate(); 		return R.ok("退出成功"); 	} 	 	/**      * 获取用户的session用户信息      */     @RequestMapping("/session")     public R getCurrUser(HttpServletRequest request){     	Long id = (Long)request.getSession().getAttribute("userId");         HuiyuanEntity user = huiyuanService.selectById(id);         return R.ok().put("data", user);     }          /**      * 密码重置      */     @IgnoreAuth 	@RequestMapping(value = "/resetPass")     public R resetPass(String username, HttpServletRequest request){     	HuiyuanEntity user = huiyuanService.selectOne(new EntityWrapper<HuiyuanEntity>().eq("huiyuanzhanghao", username));     	if(user==null) {     		return R.error("账号不存在");     	}         user.setMima("123456");         huiyuanService.updateById(user);         return R.ok("密码已重置为:123456");     }       /**      * 后端列表      */     @RequestMapping("/page")     public R page(@RequestParam Map<String, Object> params,HuiyuanEntity huiyuan, 		HttpServletRequest request){         EntityWrapper<HuiyuanEntity> ew = new EntityWrapper<HuiyuanEntity>(); 		PageUtils page = huiyuanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, huiyuan), params), params));          return R.ok().put("data", page);     }          /**      * 前端列表      */     @RequestMapping("/list")     public R list(@RequestParam Map<String, Object> params,HuiyuanEntity huiyuan,  		HttpServletRequest request){         EntityWrapper<HuiyuanEntity> ew = new EntityWrapper<HuiyuanEntity>(); 		PageUtils page = huiyuanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, huiyuan), params), params));         return R.ok().put("data", page);     }  	/**      * 列表      */     @RequestMapping("/lists")     public R list( HuiyuanEntity huiyuan){        	EntityWrapper<HuiyuanEntity> ew = new EntityWrapper<HuiyuanEntity>();       	ew.allEq(MPUtil.allEQMapPre( huiyuan, "huiyuan"));          return R.ok().put("data", huiyuanService.selectListView(ew));     }  	 /**      * 查询      */     @RequestMapping("/query")     public R query(HuiyuanEntity huiyuan){         EntityWrapper< HuiyuanEntity> ew = new EntityWrapper< HuiyuanEntity>();  		ew.allEq(MPUtil.allEQMapPre( huiyuan, "huiyuan"));  		HuiyuanView huiyuanView =  huiyuanService.selectView(ew); 		return R.ok("查询会员成功").put("data", huiyuanView);     } 	     /**      * 后端详情      */     @RequestMapping("/info/{id}")     public R info(@PathVariable("id") Long id){         HuiyuanEntity huiyuan = huiyuanService.selectById(id);         return R.ok().put("data", huiyuan);     }      /**      * 前端详情      */     @RequestMapping("/detail/{id}")     public R detail(@PathVariable("id") Long id){         HuiyuanEntity huiyuan = huiyuanService.selectById(id);         return R.ok().put("data", huiyuan);     }             /**      * 后端保存      */     @RequestMapping("/save")     public R save(@RequestBody HuiyuanEntity huiyuan, HttpServletRequest request){     	huiyuan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());     	//ValidatorUtils.validateEntity(huiyuan);     	HuiyuanEntity user = huiyuanService.selectOne(new EntityWrapper<HuiyuanEntity>().eq("huiyuanzhanghao", huiyuan.getHuiyuanzhanghao())); 		if(user!=null) { 			return R.error("用户已存在"); 		} 		huiyuan.setId(new Date().getTime());         huiyuanService.insert(huiyuan);         return R.ok();     }          /**      * 前端保存      */     @RequestMapping("/add")     public R add(@RequestBody HuiyuanEntity huiyuan, HttpServletRequest request){     	huiyuan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());     	//ValidatorUtils.validateEntity(huiyuan);     	HuiyuanEntity user = huiyuanService.selectOne(new EntityWrapper<HuiyuanEntity>().eq("huiyuanzhanghao", huiyuan.getHuiyuanzhanghao())); 		if(user!=null) { 			return R.error("用户已存在"); 		} 		huiyuan.setId(new Date().getTime());         huiyuanService.insert(huiyuan);         return R.ok();     }      /**      * 修改      */     @RequestMapping("/update")     public R update(@RequestBody HuiyuanEntity huiyuan, HttpServletRequest request){         //ValidatorUtils.validateEntity(huiyuan);         huiyuanService.updateById(huiyuan);//全部更新         return R.ok();     }           /**      * 删除      */     @RequestMapping("/delete")     public R delete(@RequestBody Long[] ids){         huiyuanService.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<HuiyuanEntity> wrapper = new EntityWrapper<HuiyuanEntity>(); 		if(map.get("remindstart")!=null) { 			wrapper.ge(columnName, map.get("remindstart")); 		} 		if(map.get("remindend")!=null) { 			wrapper.le(columnName, map.get("remindend")); 		}   		int count = huiyuanService.selectCount(wrapper); 		return R.ok().put("count", count); 	} 	 

以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。

好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~ 

  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Spring BootVue的校园招聘系统前后端分离开源是一个可以让开发者自由选择和定制不同技术栈的校园招聘系统解决方案。 在这个系统中,后端使用Spring Boot作为基础框架,提供了一系列用于管理和处理校园招聘相关的数据和功能的API接口。Spring Boot是一个强大而灵活的Java后端开发框架,可以轻松构建和管理高性能的后端服务。 而前端使用Vue作为页面展示和交互的框架,通过调用后端提供的API接口获取数据,并结合Vue的组件化开发模式,实现了一系列功能丰富、交互友好的页面。 前后端分离的优势在于,后端只负责数据处理和业务逻辑实现,而前端专注于用户界面的展示和交互逻辑。这种分离的架构使得前后端开发团队可以并行开发,提高开发效率。而且,前后端分离也使得不同技术栈的开发者可以独立开发自己擅长的领域,实现更好的技术互补。 开源这个校园招聘系统,意味着开发者可以免费获取到源代码,并进行二次开发和定制。这为校园招聘系统的改进和扩展提供了更灵活的可能性。同时,开源也可以促进开发者之间的知识分享和合作,推动整个校园招聘系统领域的发展。 总之,基于Spring BootVue的校园招聘系统前后端分离开源是一个强大且灵活的解决方案,可以满足校园招聘系统的各种需求,并为开发者提供更多的选择和定制空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值