Java基于SpringBoot的藏区特产销售系统的研究与实现

今天为大家带来的是基于 Java+ SpringBoot+Vue 的藏区特产销售系统,大家有兴趣的可以看一下

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W+,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

文章目录

1. 简介

本次设计任务是要设计一个藏区特产销售平台,通过这个系统能够满足藏区特产销售管理的管理功能。系统的主要包括首页、个人中心、用户管理、特产信息管理、特产分类管理、特产分类管理、特产评分管理、系统管理、订单管理等功能。

管理员可以根据系统给定的账号进行登录,登录后可以进入藏区特产销售平台对所有模块进行管理。包括查看和修改自己的个人信息以及登录密码。

该系统为每一个用户都分配了一个用户账号,用户通过账号的登录可以在系统中查看藏区特产销售管理信息及对个人信息进行修改等功能。

2.主要技术

技术名 作用
Springboot 后端框架
Vue 前端框架
MySQL 数据库

3 功能分析

考虑到实际生活中在藏区特产销售管理方面的需要以及对该系统认真的分析,将系统权限按管理员和用户这两类涉及用户划分。

(1)管理员功能需求

管理员登陆后,主要模块包括首页、个人中心、用户管理、特产信息管理、特产分类管理、特产分类管理、特产评分管理、系统管理、订单管理等功能。管理员用例图如图3-1所示。

(2)用户功能需求

用户登陆后,主要模块包括首页、特产信息、特产资讯、个人中心、购物车、在线客服等功能。用户用例图如图3-2所示。

4 系统分析

系统设计是把本系统的各项功能需求进行细化,而转换为软件系统表示的一个设计过程,在对目标系统的研究分析之后,做出整个系统平台的总体规划,进而对用例中各个对象进一步地合理精细设计。为降低整个系统的复杂度,而使其更加便于修改,提高代码的可读性,我们会将系统模块化,模块间保持相对独立,且每个模块只完成一个子功能,并且与其他模块通过简单的接口链接,即高内聚低耦合原则,而使整个系统能够拥有一个高性能的结构,这边是系统概要设计最重要的目的。在之前的需求分析的基础上,本藏区特产销售平台结构,如下图4-1所示。

5系统实现

5.1系统功能模块

进入藏区特产销售平台页面中可以查看首页、特产信息、特产资讯、个人中心、购物车、在线客服等内容,进行详细的操作,如图5-1所示。

图5-1系统首页界面图

特产信息,在特产信息页面中可以查看特产名称、价格、单次购买、库存、特产类型、规格、点击次数等内容进行购买、评论或收藏等操作如图5-2所示。

图5-2特产信息界面图

个人中心,在个人中心页面中通过填写账号、密码、姓名、性别、手机、图片、余额等内容进行更新信息等操作,并可以根据我的订单、我的地址或我的收藏进行相应的操作,如图5-3所示。

图5-3个人中心界面图

购物车,在购物车页面中可以查看购买商品、价格、 数量、总价等内容,进行删除或购买等操作,如图5-4所示。

图5-4购物车界面图

用户注册,在用户注册页面中通过填写账号、密码、确认密码、姓名、手机等内容进行注册等操作,如图5-5所示。

六、代码参考

    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.BanjixinxiEntity;
    import com.entity.view.BanjixinxiView;
    
    import com.service.BanjixinxiService;
    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-03-18 15:04:00
     */
    @RestController
    @RequestMapping("/banjixinxi")
    public class BanjixinxiController {
        @Autowired
        private BanjixinxiService banjixinxiService;


    
    

        /**
         * 后端列表
         */
        @RequestMapping("/page")
        public R page(@RequestParam Map<String, Object> params,BanjixinxiEntity banjixinxi,
    		HttpServletRequest request){
    		String tableName = request.getSession().getAttribute("tableName").toString();
    		if(tableName.equals("jiaoshi")) {
    			banjixinxi.setGonghao((String)request.getSession().getAttribute("username"));
    		}
            EntityWrapper<BanjixinxiEntity> ew = new EntityWrapper<BanjixinxiEntity>();
    		PageUtils page = banjixinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, banjixinxi), params), params));
    
            return R.ok().put("data", page);
        }
        
        /**
         * 前端列表
         */
        @RequestMapping("/list")
        public R list(@RequestParam Map<String, Object> params,BanjixinxiEntity banjixinxi, HttpServletRequest request){
            EntityWrapper<BanjixinxiEntity> ew = new EntityWrapper<BanjixinxiEntity>();
    		PageUtils page = banjixinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, banjixinxi), params), params));
            return R.ok().put("data", page);
        }
    
    	/**
         * 列表
         */
        @RequestMapping("/lists")
        public R list( BanjixinxiEntity banjixinxi){
           	EntityWrapper<BanjixinxiEntity> ew = new EntityWrapper<BanjixinxiEntity>();
          	ew.allEq(MPUtil.allEQMapPre( banjixinxi, "banjixinxi")); 
            return R.ok().put("data", banjixinxiService.selectListView(ew));
        }
    
    	 /**
         * 查询
         */
        @RequestMapping("/query")
        public R query(BanjixinxiEntity banjixinxi){
            EntityWrapper< BanjixinxiEntity> ew = new EntityWrapper< BanjixinxiEntity>();
     		ew.allEq(MPUtil.allEQMapPre( banjixinxi, "banjixinxi")); 
    		BanjixinxiView banjixinxiView =  banjixinxiService.selectView(ew);
    		return R.ok("查询班级信息成功").put("data", banjixinxiView);
        }
    	
        /**
         * 后端详情
         */
        @RequestMapping("/info/{id}")
        public R info(@PathVariable("id") Long id){
            BanjixinxiEntity banjixinxi = banjixinxiService.selectById(id);
            return R.ok().put("data", banjixinxi);
        }
    
        /**
         * 前端详情
         */
        @RequestMapping("/detail/{id}")
        public R detail(@PathVariable("id") Long id){
            BanjixinxiEntity banjixinxi = banjixinxiService.selectById(id);
            return R.ok().put("data", banjixinxi);
        }


    
    
    

        /**
         * 后端保存
         */
        @RequestMapping("/save")
        public R save(@RequestBody BanjixinxiEntity banjixinxi, HttpServletRequest request){
        	banjixinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
        	//ValidatorUtils.validateEntity(banjixinxi);
            banjixinxiService.insert(banjixinxi);
            return R.ok();
        }
        
        /**
         * 前端保存
         */
        @RequestMapping("/add")
        public R add(@RequestBody BanjixinxiEntity banjixinxi, HttpServletRequest request){
        	banjixinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
        	//ValidatorUtils.validateEntity(banjixinxi);
            banjixinxiService.insert(banjixinxi);
            return R.ok();
        }
    
        /**
         * 修改
         */
        @RequestMapping("/update")
        public R update(@RequestBody BanjixinxiEntity banjixinxi, HttpServletRequest request){
            //ValidatorUtils.validateEntity(banjixinxi);
            banjixinxiService.updateById(banjixinxi);//全部更新
            return R.ok();
        }


    

        /**
         * 删除
         */
        @RequestMapping("/delete")
        public R delete(@RequestBody Long[] ids){
            banjixinxiService.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<BanjixinxiEntity> wrapper = new EntityWrapper<BanjixinxiEntity>();
    		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("jiaoshi")) {
    			wrapper.eq("gonghao", (String)request.getSession().getAttribute("username"));
    		}
    
    		int count = banjixinxiService.selectCount(wrapper);
    		return R.ok().put("count", count);
    	}


    
    

    }

七、源码地址

1.200 套 Java 精品项目

2.Python 200 套 精品项目

相关推荐
lzb_kkk5 分钟前
【JavaEE】JUC的常见类
java·开发语言·java-ee
SEEONTIME5 分钟前
python-24-一篇文章彻底掌握Python HTTP库Requests
开发语言·python·http·http库requests
起名字真南24 分钟前
【OJ题解】C++实现字符串大数相乘:无BigInteger库的字符串乘积解决方案
开发语言·c++·leetcode
爬山算法29 分钟前
Maven(28)如何使用Maven进行依赖解析?
java·maven
tyler_download36 分钟前
golang 实现比特币内核:实现基于椭圆曲线的数字签名和验证
开发语言·数据库·golang
小小小~36 分钟前
qt5将程序打包并使用
开发语言·qt
hlsd#36 分钟前
go mod 依赖管理
开发语言·后端·golang
小春学渗透38 分钟前
Day107:代码审计-PHP模型开发篇&MVC层&RCE执行&文件对比法&1day分析&0day验证
开发语言·安全·web安全·php·mvc
杜杜的man40 分钟前
【go从零单排】迭代器(Iterators)
开发语言·算法·golang
亦世凡华、41 分钟前
【启程Golang之旅】从零开始构建可扩展的微服务架构
开发语言·经验分享·后端·golang