首页 > 编程语言 >SpringBoot+Vue+uniapp微信小程序仓储进销存管理系统

SpringBoot+Vue+uniapp微信小程序仓储进销存管理系统

时间:2024-05-26 11:04:29浏览次数:15  
标签:uniapp Vue return 进销存 user userService import com public

文末获取资源,收藏关注不迷路

文章目录

项目介绍

随着科学研究的不断深入,有关仓储的各种信息量不断成倍增长。面对庞大的信息量,就需要有仓储管理系统来提高管理工作的效率。通过这样的系统,我们可以做到信息的规范管理和快速查询,从而减少了管理方面的工作量。 建立仓储管理系统,进一步提高用户对仓储信息的查询。帮助管理者提高工作效率,实现信息查询的自动化。使用本系统可以轻松快捷的为用户提供他们想要得到的仓储信息。 根据本系统的基本设计思路,本系统在设计方面前台采用了java技术等进行基本的页面设计,后台数据库采用MySQL。本系统的实现为仓储管理系统的运行打下了基础,为仓储管理提供良好的条件。最后我们通过需求分析、测试调整,与仓储管理系统的实际需求相结合,设计实现了仓储管理系统。
Java 语言是一门受众很广的语言,来自Sun Microsystems公司,Java可运行在很多平台,相较于C::语言,不仅吸收了C::很多优点,还摈弃了里面许多晦涩难懂的概念,Java的优点很多,可面向对象开发,平台多样性以及可移植性很高,目前市面上很多大型网站项目都使用Java编写,由此可知Java的受欢迎程度很高。
微信小程序框架是一种基于前端技术的开发框架,可以帮助开发者快速搭建小程序的基础架构,提高开发效率。目前主要有原生框架和第三方框架两种
使用B/S结构的系统是通过有网络的计算机进行使用,它最大的优点是不需要安装专门的软件,最先,计算机浏览器向服务器发送要求,随后服务器解决要求并将信息回到给计算机浏览器。不用再次计算数据或进行存取,只管负责显示数据来降低要求。与C/S构架对比,B/S构架与C/S架构的较大差别取决于,B/S构架的系统软件以web计算机浏览器为服务平台与消费者实现互动,如下图2-1所显示,而C/S则必须开发专业的运用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

技术介绍

1、管理员账号:abo 密码:abo
2、开发环境为Eclipse/idea,数据库为mysql 使用java语言开发。
3.配置好Tomcat并点击启动按钮即可运行
4.数据库连接src\main\resources\application.yml中修改
5.maven包版本apache-maven-3.3.9.
开发语言:Java
框架:SSM
前端框架:vue.js
JDK版本:JDK1.8+
服务器:tomcat8+
数据库工具:Navicat
开发软件:idea 支持eclipse
支持定做:Java/PHP/Python/Android/小程序/Vue/爬虫/C#/Asp.net

Springboot是当前最流向的一个框架,它的配置更加的简单,使开发变得更加的简单迅速。
Springboot的基础结构共三个文件,具体如下:
src/main/java:程序开发以及主程序入口;
src/main/resources:配置文件;
src/test/java:测试程序。
ssm的数据库配置默认支持两种格式的配置文件
1,application.properties
2,application.yaml

项目界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关键代码


package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

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

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

目录

目 录
目 录 III
1 绪论 1
1.1 研究背景 1
1.2 目的和意义 1
1.3 论文结构安排 2
2 相关技术 3
2.1 Springboot框架介绍 3
2.2 B/S结构介绍 3
2.3 Mysql数据库介绍 4
3 系统分析 6
3.1 系统可行性分析 6
3.1.1 技术可行性分析 6
3.1.2 经济可行性分析 6
3.1.3 运行可行性分析 6
3.2 系统性能分析 7
3.2.1 易用性指标 7
3.2.2 可扩展性指标 7
3.2.3 健壮性指标 7
3.2.4 安全性指标 8
3.3 系统流程分析 8
3.3.1 操作流程分析 8
3.3.2 登录流程分析 9
3.3.3 信息添加流程分析 10
3.3.4 信息删除流程分析 11
4 系统设计 12
4.1 系统概要设计 12
4.2 系统功能结构设计 12
4.3 数据库设计 13
4.3.1 数据库E-R图设计 13
4.3.2 数据库表结构设计 14
5 系统实现 17
5.1用户部分功能17
5.2 管理员部分功能展示

6 系统测试
6.1 系统测试的特点 
6.2 系统功能测试
6.2.1 登录功能测试
6.2.2 添加类别功能测试
6.3 测试结果分析
结 论
致 谢
参考文献

标签:uniapp,Vue,return,进销存,user,userService,import,com,public
From: https://blog.csdn.net/Q_6310855/article/details/139159837

相关文章

  • Django和MySQL与Vue项目之间的数据是如何流动实现交互响应的
    在一个前后端分离的Django和Vue项目中,Django作为后端,MySQL作为数据库,Vue作为前端,数据的流动和交互可以通过API来实现。以下是数据流动的过程及交互的详细说明:1.数据流动过程概述前端发送请求:Vue应用通过HTTP请求向Django后端发送数据请求(例如获取、创建、更新或删除数据)。后......
  • Java项目:校园周边美食探索(java+SpringBoot+Mybaits+Vue+elementui+mysql)
    源码获取:俺的博客首页"资源"里下载! 项目介绍基于Springboot+vue实现的校园周边美食探索及分享平台本系统包含管理员、用户两个角色。管理员:用户管理、美食鉴赏管理、好友管理、收藏管理、系统管理用户:登录、注册、个人中心管理、美食鉴赏管理、好友管理、收藏管理......
  • 基于SpringBoot+Vue的在线商城系统
    !!!有需要的小伙伴可以通过文章末尾名片咨询我哦!!! ......
  • 宠物服务系统 毕业设计 Springboot+Vue+Mysql+Java
    作者主页:毕业设计精选作者简介:9年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家摘要随着人类生存质量的提升以及生活模式的改变,越来越多的人在闲暇之余饲养宠物,来满足精神上的需求 。从而 使得宠物服务行业也得到了繁荣发展 ......
  • uniapp-vue3-oadmin|vite5.x手机后台实例多端仿ios管理系统
    uniapp-vue3-oadmin手机后台实例|vite5.x+uniapp多端仿ios管理系统 原创vue3+uniapp+uni-ui跨端仿ios桌面后台OA管理模板Uni-Vue3-WeOS。uniapp-vue3-os一款基于uni-app+vite5.x+pinia等技术开发的仿ios手机桌面OA管理系统。实现了自定义桌面栅格磁贴布局、多分屏滑动管理、......
  • vue 请求拦截器 的响应拦截器有几种?
    解决方案1:使用axios的请求拦截器 importaxiosfrom'axios';axios.interceptors.request.use(function(config){//在发送请求之前做些什么config.headers!['Authorization']=`${Session.get('token')}`;returnconfig;},function(error......
  • 【vue与iframe通讯】
    vue与iframe通讯发送数据vue向iframe发送数据iframe向vue发送数据接收信息(vue&iframe通用)实现相互通讯通讯流程图实现代码vue页面iframe页面`iframe`内部重定向访问地址,更新`vue`路由代码下载前言:vue嵌套iframe实现步骤发送数据vue向iframe......
  • Django+Vue构建前后端分离开发模式
    将Django作为后端,Vue作为前端进行前后端分离开发是一个常见的模式。下面是一个完整的步骤,以构建一个Django和Vue整合的项目。1.准备Django后端安装必要的库确保你已经安装了Django和DjangoRESTframework:pipinstalldjangodjangorestframework配置Django项目在myproj......
  • Vue3实战笔记(43)—Vue3组合式API下封装可复用ECharts图表组件
    文章目录前言一、封装echart图标钩子二、使用步骤总结前言接上文,已经安装好了ECharts,开始封装组件方便使用。一、封装echart图标钩子首先应用我们之前学习的钩子方式,在hooks目录下创建一个名为useECharts.js的文件,用于封装ECharts的逻辑:import{ref,onMo......
  • Vue 3指令与事件处理
    title:Vue3指令与事件处理date:2024/5/2518:53:37updated:2024/5/2518:53:37categories:前端开发tags:Vue3基础指令详解事件处理高级事件实战案例最佳实践性能优化第1章Vue3基础1.1Vue3简介Vue3是一个由尤雨溪(尤大)领导的开源JavaScript框架,它专......