飞道的博客

基于微信小程序的生活日用品交易平台 的设计与实现

403人阅读  评论(0)

基于微信小程序的生活日用品交易平台 的设计与实现

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

🍅文末获取项目下载方式🍅


一、项目背景介绍:

随着计算机互联网技术的不断进步,也推动了计算机技术的进步,推动了社会的智能化,使科技与人们的日常需求紧密的联系到了一起,诞生人们追求更加便利的生活模式。计算机技术是社会前进的主力军,由计算机推动的技术和工程发展对社会有着极大的贡献。尤其是在经济层面上,开发与计算机有关的软件,吸引社会人员去关注这些技术,去使用这些产品,提升生活质量与效率,是新兴的经济增长点,有利于社会经济持续健康的发展。
近些年来新型的支付技术——手机支付,它打破了用户传统支付对于时空的限制,革新了对于支付的方式,在有互联网的地域,就可以通过二维码的方式去进行支付,哪怕相隔千里,也能实现交易。打破了限制交易的阻隔,因此,以微信支付为支付手段的微信小程序商城逐渐崭露头角,伴随着微信支付体系的不断完善,为微信小程序商城奠定了基础。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Spring:Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
  3. Mybatis:MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
    iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
  4. smart:微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。
    全面开放申请后,主体类型为企业、政府、媒体、其他组织或个人的开发者,均可申请注册小程序。微信小程序、微信订阅号、微信服务号、微信企业号是并行的体系。
    微信小程序是一种不用下载就能使用的应用,也是一项创新,经过将近两年的发展,已经构造了新的微信小程序开发环境和开发者生态。微信小程序也是这么多年来中国IT行业里一个真正能够影响到普通程序员的创新成果,已经有超过150万的开发者加入到了微信小程序的开发,与我们一起共同发力推动微信小程序的发展,微信小程序应用数量超过了一百万,覆盖200多个细分的行业,日活用户达到两个亿,微信小程序还在许多城市实现了支持地铁、公交服务。微信小程序发展带来更多的就业机会,2017年小程序带动就业104万人,社会效应不断提升。

三、系统功能模块介绍:

四、数据库设计:

1:地址
(address)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
addtime timestamp NULL 创建时间
userid bigint(20) NULL 用户id
address varchar(200) NULL 地址
name varchar(200) NULL 收货人
phone varchar(200) NULL 电话
isdefault varchar(200) NULL 是否默认地址[是/否]

2:购物车表
(cart)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
addtime timestamp NULL 创建时间
tablename varchar(200) NULL 商品表名
userid bigint(20) NULL 用户id
goodid bigint(20) NULL 商品id
goodname varchar(200) NULL 商品名称
picture varchar(200) NULL 图片
buynumber int(11) NULL 购买数量
price float NULL 单价
discountprice float NULL 会员价

3:客服聊天表
(chat)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
addtime timestamp NULL 创建时间
userid bigint(20) NULL 用户id
adminid bigint(20) NULL 管理员id
ask longtext NULL 提问
reply longtext NULL 回复
isreply int(11) NULL 是否回复

4:配置文件
(config)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
name varchar(100) NULL 配置参数名称
value varchar(100) NULL 配置参数值

5:公告信息评论表
(discussgonggaoxinxi)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
addtime timestamp NULL 创建时间
refid bigint(20) NULL 关联表id
userid bigint(20) NULL 用户id
nickname varchar(200) NULL 用户名
content longtext NULL 评论内容
reply longtext NULL 回复内容

6:商品信息评论表
(discussshangpinxinxi)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
addtime timestamp NULL 创建时间
refid bigint(20) NULL 关联表id
userid bigint(20) NULL 用户id
nickname varchar(200) NULL 用户名
content longtext NULL 评论内容
reply longtext NULL 回复内容

7:公告信息
(gonggaoxinxi)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
addtime timestamp NULL 创建时间
gonggaobiaoti varchar(200) NULL 公告标题
gonggaoleixing varchar(200) NULL 公告类型
tupian varchar(200) NULL 图片
neirong longtext NULL 内容
faburiqi date NULL 发布日期

8:会员
(huiyuan)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
addtime timestamp NULL 创建时间
yonghuming varchar(200) NULL 用户名
mima varchar(200) NULL 密码
xingming varchar(200) NULL 姓名
xingbie varchar(200) NULL 性别
touxiang varchar(200) NULL 头像
shouji varchar(200) NULL 手机
money float NULL 余额

9:新闻资讯
(news)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
addtime timestamp NULL 创建时间
title varchar(200) NULL 标题
introduction longtext NULL 简介
picture varchar(200) NULL 图片
content longtext NULL 内容

10:订单
(orders)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
addtime timestamp NULL 创建时间
orderid varchar(200) NULL 订单编号
tablename varchar(200) NULL 商品表名
userid bigint(20) NULL 用户id
goodid bigint(20) NULL 商品id
goodname varchar(200) NULL 商品名称
picture varchar(200) NULL 商品图片
buynumber int(11) NULL 购买数量
price float NULL 价格/积分
discountprice float NULL 折扣价格
total float NULL 总价格/总积分
discounttotal float NULL 折扣总价格
type int(11) NULL 支付类型
status varchar(200) NULL 状态
address varchar(200) NULL 地址

11:商品分类
(shangpinfenlei)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
addtime timestamp NULL 创建时间
fenlei varchar(200) NULL 分类

12:商品信息
(shangpinxinxi)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
addtime timestamp NULL 创建时间
shangpinmingcheng varchar(200) NULL 商品名称
fenlei varchar(200) NULL 分类
biaoqian varchar(200) NULL 标签
tupian varchar(200) NULL 图片
guige varchar(200) NULL 规格
pinpai varchar(200) NULL 品牌
xiangqing longtext NULL 详情
clicktime datetime NULL 最近点击时间
clicknum int(11) NULL 点击次数
price float NULL 价格

13:收藏表
(storeup)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
addtime timestamp NULL 创建时间
userid bigint(20) NULL 用户id
refid bigint(20) NULL 收藏id
tablename varchar(200) NULL 表名
name varchar(200) NULL 收藏名称
picture varchar(200) NULL 收藏图片

14:token表
(token)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
userid bigint(20) NULL 用户id
username varchar(100) NULL 用户名
tablename varchar(100) NULL 表名
role varchar(100) NULL 角色
token varchar(200) NULL 密码
addtime timestamp NULL 新增时间
expiratedtime timestamp NULL 过期时间

15:用户表
(users)

字段名 类型 默认值 列注释
id bigint(20) NULL 主键
username varchar(100) NULL 用户名
password varchar(100) NULL 密码
role varchar(100) NULL 角色
addtime timestamp NULL 新增时间

五、功能模块:

  1. 管理员功能设计:在后台管理中,登录管理员账号后,进入管理员界面,管理员界面包括功能列表,功能标题,功能内容,功能列表有订单列表和商品列表。
    订单列表是通过/order/paginate接口从数据库获取信息,并把获取到的订单号,商品名称,商品总数,价格,订单状态,下单时间展示在界面上,管理员还可以对用户已付款的订单进行发货操作,点击发货操作后订单状态就会发生改变。
    商品列表是通过/product/all接口从数据库中获取信息,把获取到的商品名称,价格,库存量,商品图片展示在界面上,点击新增可以添加商品,点击编辑商品修改商品的信息,以及删除商品等操作。

  2. 用户的登录模块实现:该小程序系统使用的是微信身份认证体系。小程序为每一个登录的用户生成一个code码,编写的getToken接口把获取到的code码发送给微信服务器,微信服务器接收到code码后会响应一个openid,接口获取到openid后存入数据库中,并且生成一个Token令牌发送给小程序客户端上,这个openid就是用户身份的唯一标识,当用户再次访问小程序的时候,就会携带令牌发送到接口,服务器效验令牌,当验证通过后,就可以直接登录小程序了。

  3. 商品详情模块实现:点击商品可进入商品信息推荐界面,详情界面包括商品头图,可以选择商品数量,商品的金额。加入购物车操作

  4. 购物车模块实现:选中的商品会添加到购物车中,在购物车界面可以对商品的数量可进行修改操作

  5. 订单模块实现:订单界面可获取用户的详细地址信息,显示加入到购物车中的商品,以及购买的商品价格,对用户订单进行付款操作。

六、代码示例:

管理员功能设计
@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);
	}

 
用户的登录模块实现
@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<OrdersEntity> wrapper = new EntityWrapper<OrdersEntity>();
		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 = ordersService.selectCount(wrapper);
		return R.ok().put("count", count);
	}

 
商品详情模块实现
	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);
	}

 
购物车模块实现
购物车相关业务逻辑
/**
     * 查询
     */
    @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") String id){
   
        CartEntity cart = cartService.selectById(id);
        return R.ok().put("data", cart);
    }
    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String 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("/query")
    public R query(OrdersEntity orders){
   
        EntityWrapper< OrdersEntity> ew = new EntityWrapper< OrdersEntity>();
 		ew.allEq(MPUtil.allEQMapPre( orders, "orders")); 
		OrdersView ordersView =  ordersService.selectView(ew);
		return R.ok("查询订单成功").put("data", ordersView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
   
        OrdersEntity orders = ordersService.selectById(id);
        return R.ok().put("data", orders);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
   
        OrdersEntity orders = ordersService.selectById(id);
        return R.ok().put("data", orders);
    }

 

七、论文参考:

八、项目总结:

通过对现在社会生活日用品微信小程序的需求分析,运用JavaScript、SQL数据库、PhpStorm技术,使用微信开发者工具,火狐浏览器进行测试。从而制作出一个基于微信小程序的生活日用品交易平台,主要实现这个微信小程序的购物功能,提供给用户一个在线交易的平台,用户可以在该小程序中进行购买操作、修改地址、查看物流信息的操作,该小程序操作简单,结构清晰,界面新颖,满足了用户与商家的基本需求。

九、源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻

链接点击直达下载链接


转载:https://blog.csdn.net/weixin_46228112/article/details/129102424
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场