当前位置: 首页 > news >正文

基于java+ssm+vue+mysql的网上书店

项目介绍

本网上系统是针对目前网上的实际需求,从实际工作出发,对过去的网上系统存在的问题进行分析,结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用目前最流行的B/S结构和java中流行的ssm框架和idea编辑器、前端vue技术、mysql数据库设计并实现的 。本网上系统主要包括系统用户管理模块、图书信息管理模块、订单管理、新闻管理、登录模块、和退出模块等多个模块。它帮助网上实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了网上数据资源,有效的减少了网上的经济投入,大大提高了网上的效率。针对现存的问题和需要,通过功能需求的分析,特建立了数字化、信息化的网上系统。

本系统主要包含了等系统用户管理、图书信息管理、新闻管理、订单管理多个功能模块。下面分别简单阐述一下这几个功能模块需求。

  1. 管理员的登录模块:管理员登录系统对本系统其他管理模块进行管理。
    用户的登录模块:用户登录本系统,对个人的信息等进行查询,操作可使用的功能。
  2. 用户注册模块:游客用户可以进行用户注册,系统会反馈是否注册成功。
  3. 添加管理员模块:向本系统中添加更多的管理人员,管理员包括普通管理员和超级管理员。
  4. 图书信息管理模块:
    图书列表:将数据库的图书表以列表的形式呈现给管理员。
    添加图书:实现管理员添加图书。
    修改图书:实现管理员修改图书。
  5. 订单管理模块:
    订单列表:将数据库的订单表以列表的形式呈现给管理员。
    添加订单:实现管理员添加订单。
    修改订单:实现管理员修改订单。
  6. 订单信息管理模块:
    订单信息列表:显示系统的所有订单信息,可以通过关键字查询。
    订单信息删除:对输入错误或过期的订单信息删除。
  7. 用户模块:
    个人中心管理:用户登录本系统。可以对自己的个人主页进行查看。
    系统信息:用户可以查看自己的系统提示信息。
    修改个人中心:用户可以修改自己的账号密码。
    信息搜索:用户可以通过关键字搜索站内信息。
    密码修改:用户可以修改个人登录密码。
  8. 系统管理模块:包括数据备份。
  9. 退出模块:
    管理员退出:管理员用来退出系统。
    用户退出:用户用来退出系统。
    在这里插入图片描述
    在这里插入图片描述

开发环境

开发语言:Java
数据库 :MySQL
系统架构:B/S
后端框架:SSM
前端框架:Vue
开发工具:IDEA或者Eclipse,JDK1.8,Maven
支持定做:Java/PHP/Python/Android/小程序/Vue/爬虫/C#/Asp.net

系统截图

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

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

部分代码

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.CartEntity;
import com.entity.view.CartView;

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


/**
 * 购物车
 * 后端接口
 */
@RestController
@RequestMapping("/cart")
public class CartController {
    @Autowired
    private CartService cartService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,CartEntity cart,
		HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		cart.setUserid((Long)request.getSession().getAttribute("userId"));
    	}
        EntityWrapper<CartEntity> ew = new EntityWrapper<CartEntity>();
		PageUtils page = cartService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, cart), params), params));

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

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(CartEntity cart){
        EntityWrapper< CartEntity> ew = new EntityWrapper< CartEntity>();
 		ew.allEq(MPUtil.allEQMapPre( cart, "cart")); 
		CartView cartView =  cartService.selectView(ew);
		return R.ok("查询购物车表成功").put("data", cartView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        CartEntity cart = cartService.selectById(id);
        return R.ok().put("data", cart);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        CartEntity cart = cartService.selectById(id);
        return R.ok().put("data", cart);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody CartEntity cart, HttpServletRequest request){
    	cart.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(cart);
    	cart.setUserid((Long)request.getSession().getAttribute("userId"));
        cartService.insert(cart);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody CartEntity cart, HttpServletRequest request){
    	cart.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(cart);
        cartService.insert(cart);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        cartService.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<CartEntity> wrapper = new EntityWrapper<CartEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}
		if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
    	}


		int count = cartService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

相关文章:

  • 研发效能工程实践-利用Superset快速打造大数据BI平台
  • 【C++】set/multiset/map/multimap
  • 数据结构:二叉树的链式结构
  • 3.1数据结构和序列(利用Python进行数据分析)
  • list的模拟实现(万字解读+由浅入深)
  • 秒级使网站变灰,不改代码不上线,如何做到?
  • qt人员管理模块(模块化程序)功能块复制直接使用不冲突
  • 【项目_03】日历的回显、搭建热门精选、下拉加载更多、搜索框搭建 | 基于Vue3全家桶
  • 目标检测算法——YOLOv5/YOLOv7改进之结合特征提取网络RFBNet(涨点明显)
  • 【Spring系列】- Spring循环依赖
  • Java实验七
  • 图像处理:模糊图像判断
  • SNMP协议——网络管理概述
  • 家庭用户无线上网案例(AC通过三层口对AP进行管理)
  • Hbase的SQL接口之Phoenix使用心得
  • 3.7、@ResponseBody 和 @RestController
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Python中eval与exec的使用及区别
  • React Native移动开发实战-3-实现页面间的数据传递
  • tab.js分享及浏览器兼容性问题汇总
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • v-if和v-for连用出现的问题
  • Vue官网教程学习过程中值得记录的一些事情
  • vue数据传递--我有特殊的实现技巧
  • 成为一名优秀的Developer的书单
  • 从伪并行的 Python 多线程说起
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 软件开发学习的5大技巧,你知道吗?
  • 使用SAX解析XML
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 自动记录MySQL慢查询快照脚本
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • #mysql 8.0 踩坑日记
  • (12)目标检测_SSD基于pytorch搭建代码
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (篇九)MySQL常用内置函数
  • (转)创业家杂志:UCWEB天使第一步
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET 中 GetProcess 相关方法的性能
  • .NET 中的轻量级线程安全
  • .net6使用Sejil可视化日志
  • .Net8 Blazor 尝鲜
  • .NET使用存储过程实现对数据库的增删改查
  • .NET下的多线程编程—1-线程机制概述
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @KafkaListener注解详解(一)| 常用参数详解
  • @基于大模型的旅游路线推荐方案
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器
  • [Android]How to use FFmpeg to decode Android f...
  • [Android]创建TabBar
  • [AutoSar NVM] 存储架构
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)