Java项目-基于springboot框架的智慧外卖系统项目实战(附源码+文档)

作者:计算机学长阿伟

开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,"文末源码"。

开发运行环境

  • 开发语言:Java
  • 数据库:MySQL
  • 技术:SpringBoot、Vue、Mybaits Plus、ELementUI
  • 工具:IDEA/Ecilpse、Navicat、Maven

源码下载地址:

Java项目-基于springboot框架的智慧外卖系统项目实战(附源码+文档)资源-CSDN文库

文档目录

【如需全文请按文末获取联系】

一、项目简介

智慧外贸平台是一个综合性的外贸管理系统,旨在简化外贸流程,提高管理效率。平台通过清晰的组织结构图,展示了各个功能模块和它们之间的关系。管理员作为核心角色,可以管理整个平台的运行,包括商品分类、出口发票、买家、商家等多个方面。用户可以通过个人中心管理个人信息,同时买家和商家也可以通过各自的模块进行订单管理、商品信息管理、预订管理等操作。平台还提供了关单信息管理、仓申请管理等特色功能,进一步提升了外贸业务的便捷性和高效性。整个系统设计科学、功能全面,为用户提供了优质的外贸服务体验。

二、系统设计

2.1软件功能模块设计

2.2数据库设计

商品信息E/R图如下所示:

关单信息E/R图如下所示:

三、系统项目部分截图

3.1后台系统部分页面效果

后台登录,用户进入系统前在登录页面根据要求填写用户名和密码,选择角色等信息,点击登录进行系统操作,如图5-4所示。

3.1.1管理员功能

管理员登录系统后,可以对首页、个人中心、买家管理、商家管理、商品分类管理、商品信息管理、商品预订管理、关单信息管理、送仓申请管理、运单信息管理、出口发票管理、订单信息管理、系统管理等功能进行相应的操作管理,如图5-5所示。

商品信息管理,在商品信息管理页面可以对索引、商品编号、商品名称、商品分类、品牌、规格、图片、价格、产地、发布时间、商家账号、商家姓名等内容进行详情,修改,查看评论或删除操作,如图5-6所示。

关单信息管理,在关单信息管理页面可以对索引、关单编号、商家账号、商家姓名、商品名称、商品分类、关单时间、买家账号、买家姓名等信息进行详情,送仓申请,修改和删除操作,如图5-7所示。

送仓申请管理,在送仓申请管理页面可以对索引、申请编号、商家账号、商家姓名、商品名称、商品分类、申请时间、买家账号、买家姓名等内容进行详情,运单制作、修改和删除操作,如图5-8所示。

运单信息管理,在运单信息管理页面可以对索引、运单号、商家账号、商家姓名、商品名称、商品分类、登记时间、买家账号、买家姓名等内容进行详情,出口发票,修改和删除操作,如图5-9所示。

出口发票管理,在出口发票管理页面可以对索引、发票单号、商家账号、商家姓名、商品名称、商品分类、时间、买家账号、买家姓名等内容进行详情,订单信息,修改和删除操作,如图5-10所示。

订单信息管理,在订单信息管理页面可以对索引、订单编号、商家账号、商家姓名、商品名称、商品分类、更新时间、买家账号、买家姓名等内容进行详情,修改和删除操作,如图5-11所示。

3.1.2买家功能

买家登录进入智慧外贸平台可以对首页、个人中心、商品预订管理、关单信息管理、送仓申请管理、运单信息管理、出口发票管理、订单信息管理等功能进行详细的操作管理,如图5-13所示。商品预订管理,在商品预订管理页面可以对索引、预订编号、商品名称、商品分类、价格、数量、总价、预订时间、预订备注、商家账号、商家姓名、买家账号、买家姓名、是否支付、审核回复、审核状态等内容进行详情,修改或删除等操作,如图5-14所示。

3.1.3商家功能

商家登录进入智慧外贸平台可以对首页、个人中心、商品信息管理、商品预订管理、关单信息管理、送仓申请管理、运单信息管理、出口发票管理、订单信息管理等功能进行详细操作,如图5-15所示。

商品信息管理,在商品信息管理页面可以对索引、商品编号、商品名称、商品分类、品牌、规格、图片、价格、产地、发布时间、商家账号、商家姓名等内容进行详情,修改,查看评论或删除操作,如图5-16所示。

商品预订管理,在商品预订管理页面可以对索引、预订编号、商品名称、商品分类、价格、数量、总价、预订时间、预订备注、商家账号、商家姓名、买家账号、买家姓名、是否支付、审核回复、审核状态、审核等内容进行详情,关单,修改和删除等操作,如图5-17所示。

3.2前台系统部分页面效果

智慧外贸平台,在平台首页可以查看首页、商品信息、公告资讯、个人中心、后台管理等内容,并进行详细操作;如图5-1所示。

商品信息,在商品信息页面可以查看商品编号、商品名称、商品分类、品牌、规格、图片、价格、产地、发布时间、商家账号、商家姓名、点击次数、商品详情等内容,并进行商品预订,评论或收藏操作,如图5-2所示。

个人中心,在个人中心页面通过填写买家账号、密码、买家姓名、性别、买家电话、图片等内容进行更新信息,还可以根据需要对我的收藏进行详细操作,如图5-3所示。

四、部分核心代码

java 复制代码
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.DingdanxinxiEntity;
import com.entity.view.DingdanxinxiView;

import com.service.DingdanxinxiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 订单信息
 * 后端接口
 */
@RestController
@RequestMapping("/dingdanxinxi")
public class DingdanxinxiController {
    @Autowired
    private DingdanxinxiService dingdanxinxiService;


    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,DingdanxinxiEntity dingdanxinxi,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("shangjia")) {
			dingdanxinxi.setShangjiazhanghao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("maijia")) {
			dingdanxinxi.setMaijiazhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<DingdanxinxiEntity> ew = new EntityWrapper<DingdanxinxiEntity>();
		PageUtils page = dingdanxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, dingdanxinxi), params), params));

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

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(DingdanxinxiEntity dingdanxinxi){
        EntityWrapper< DingdanxinxiEntity> ew = new EntityWrapper< DingdanxinxiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( dingdanxinxi, "dingdanxinxi")); 
		DingdanxinxiView dingdanxinxiView =  dingdanxinxiService.selectView(ew);
		return R.ok("查询订单信息成功").put("data", dingdanxinxiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        DingdanxinxiEntity dingdanxinxi = dingdanxinxiService.selectById(id);
        return R.ok().put("data", dingdanxinxi);
    }

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



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

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        dingdanxinxiService.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<DingdanxinxiEntity> wrapper = new EntityWrapper<DingdanxinxiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("shangjia")) {
			wrapper.eq("shangjiazhanghao", (String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("maijia")) {
			wrapper.eq("maijiazhanghao", (String)request.getSession().getAttribute("username"));
		}

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







}

获取源码或文档

如需对应的论文或文档,以及其他定制需求,也可以下方添加联系我。

相关推荐
肠胃炎1 分钟前
真题246—矩阵计数
java·线性代数·算法·矩阵·深度优先
前行的小黑炭1 小时前
设计模式:为什么使用模板设计模式(不相同的步骤进行抽取,使用不同的子类实现)减少重复代码,让代码更好维护。
android·java·kotlin
Java技术小馆1 小时前
如何设计一个本地缓存
java·面试·架构
XuanXu2 小时前
Java AQS原理以及应用
java
风象南4 小时前
SpringBoot中6种自定义starter开发方法
java·spring boot·后端
mghio13 小时前
Dubbo 中的集群容错
java·微服务·dubbo
咖啡教室18 小时前
java日常开发笔记和开发问题记录
java
咖啡教室18 小时前
java练习项目记录笔记
java
鱼樱前端19 小时前
maven的基础安装和使用--mac/window版本
java·后端