Java生鲜电商平台-电商中"再来一单"功能架构与详细设计(APP/小程序)

说明:在实际的业务场景中(无论是TO B还是TO C)不管是休闲食品、餐饮、水果、日用百货、母婴等高频购买行业,还是其他行业,“再来一单”都能够大大缩短买家再次下单的流程,促进转化。

于是就有了针对生鲜电商平台的“再来一单”功能,买家只要在订单列表、订单详情或者支付成功中点击“再来一单”,就可以把订单中的商品再次加入购物车,方便快捷,高效.

上面的话可以总结出来"再来一单“以下几个信息.

         1. 再来一单的功能在订单列表或者订单详细里面,或者在支付成功里面存在.

         2. 用户点击"再来一单"是把商品加入购物车

         3. 目的是通过加入购物车这个快捷的方法来促进用户再次下单,方便与快捷.  

    

         那么简约的流程图为: 

      

对此基本流程图,我有了以下的思考:

  1. 什么是再来一单?

2. 为什么要做再来一单?

3. 怎么做在来一单?业务逻辑如何判断与处理呢?

4. 最终的代码与实战如何呢?

1. 什么是再来一单呢?

说明:再来一单是根据人类的惯性以及惰性,对已经购买了的产品希望再次方便的下单的一个过程。

2. 为什么要做再来一单?

说明:方便,快捷的服务用户,无论是TOB 还是TOC的用户群体,再来一单有一个非常快捷与高效的功能点击,在促进购买力方面有非常显著的特点与点击量.

3.  怎么做再来一单呢? 业务逻辑如何判断与处理呢?

说明:通过上面分析,我们发现再来一单的功能有如下几个特点:

        1. 再来一单的功能在订单列表或者订单详细里面,或者在支付成功里面存在.

         2. 用户点击"再来一单"是把商品加入购物车

         3. 目的是通过加入购物车这个快捷的方法来促进用户再次下单,方便与快捷.  

由于”再来一单“存在任何订单里面,可能有些时间比较长的历史订单,再点击加入购物车以及跳转到购物车的页面中的时候,会出现商品已经下架,商品

价格已经变动等等情况,那么这个时候业务应该如何进行判断与处理呢?

         先看下基本的流程图:

其实最核心的判断是三点:

1. 判断商品是否下架。下架的商品简单粗暴的解决,不显示。或者加入购物车的时候,显示商品下架。

2. 判断商品价格是否有改动,不管是否有改动,都需要去获取最新的价格.,这里可以做得比较好的就是把原来的价格进行比较,说明是降价与涨价.

3. 判断是否商品还有库存,没有库存也可以加到商品缺少库存的提醒中,但是不可用作为提交订单的依据。

        4. 最终的代码与实战如何呢? 

                 

/**
* 再来一单
* @param userId
* @param orderId
*/
@Override
public void copyOrderToCart(Integer userId, Integer orderId) throws ServiceException
{
List<OrderGoods> orderGoodsList = orderGoodsService.getListOrderGoodsByOrderId(orderId); if(CollectionUtils.isEmpty(orderGoodsList))
{
throw new ServiceException(ServiceExceptionCode.PARAM_INVALID.getCode(), "再来一单商品列表不能为空");
} List<Cart> resultCartList = new ArrayList<Cart>();
for(OrderGoods orderGoods : orderGoodsList)
{
//判断商品是否可以购买
Goods goods = goodsService.findById(orderGoods.getGoodsId()); //对象不为空,而且商品在售
if (goods != null && goods.getOnSale())
{
//判断购物车中是否存在此规格商品
Cart existCart = queryExist(goods.getId(), userId);
if (existCart == null)
{
//取得规格的信息,判断规格库存
Cart cart = new Cart();
cart.setUserId(userId);
cart.setGoodsId(orderGoods.getGoodsId());
cart.setGoodsSn(orderGoods.getGoodsSn());
cart.setGoodsName(orderGoods.getGoodsName());
cart.setPicUrl(orderGoods.getPicUrl());
cart.setChecked(true);
cart.setNumber(orderGoods.getNumber());
cart.setPrice(orderGoods.getPrice());
cart.setAddTime(LocalDateTime.now());
cart.setUpdateTime(LocalDateTime.now());
cart.setDeleted(false);
resultCartList.add(cart);
} else
{
//取得商品的库存
int num = existCart.getNumber() + orderGoods.getNumber();
if (num <= orderGoods.getNumber())
{
//如果库存够,更新购物车
existCart.setNumber(num);
cartMapper.updateCart(existCart);
}
}
}
} if(CollectionUtils.isNotEmpty(resultCartList))
{
//批量新增加
cartMapper.batchAddCart(resultCartList);
}
}

相关规则总结如下:

1、买家端小程序订单列表和详情符合条件的订单增加“再来一单”,支持一键把订单中的商品加入购物车;

2、目前支持再来一单的商品为实物商品类型的普通订单,周期购、拼团等营销活动订单不支持;

3、“再来一单”按钮位置根据对应订单状态,根据各操作按钮优先等级排列;

4、点击“再来一单”,把当前订单中的商品批量加入购物车,商品规格、数量、商品留言等信息取当前订单的设置;

5、如果原来购物车中已经有相同商品,“再来一单”不对原商品做删除,在数量上会叠加;

6、点击再来一单时,商品价格、规格信息可能已经发生变更,点击“再来一单”,重新校验,所有营销活动的价格计算目前仅支持限时折扣、自定义会员价、会员折扣;

7、点击再来一单时,如果商品留言字段有增减,会重新校验,不符合条件的商品会提示不支持再来一单;

8、多件商品批量再来一单,如果有部分商品不支持,则会把支持的商品加入购物车,不支持的给出提示。

共同学习QQ群:793305035

         

Java生鲜电商平台-电商中"再来一单"功能架构与详细设计(APP/小程序)的更多相关文章

  1. Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析

    Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析 生鲜电商搜索引擎的特点 众所周知,标准的搜索引擎主要分成三个大的部分,第一步是爬虫系统,第二步是数据分析,第三步才 ...

  2. Java开源生鲜电商平台-财务系统模块的设计与架构(源码可下载)

    Java开源生鲜电商平台-财务系统模块的设计与架构(源码可下载) 前言:任何一个平台也好,系统也好,挣钱养活团队这个是无可厚非的,那么对于一个生鲜B2B平台盈利模式( 查看:http://www.cn ...

  3. Java生鲜电商平台-电商虚拟币的充值与消费思考

    Java生鲜电商平台-电商虚拟币的充值与消费思考 项目背景 最近由于项目业务原因,需要为系统设计虚拟币的充值及消费功能.公司内已经有成熟的支付网关服务,所以重点变成了如何设计项目内虚拟币的充值流程,让 ...

  4. Java生鲜电商平台-电商起送价的深入思考与实战

    Java生鲜电商平台-电商起送价的深入思考与实战 说明:在生鲜电商中,起送价是一个非常普遍的话题,今天我们就用实战来告诉大家,如何设置起送价,如何编写起送价的代码,以及如何同步起送价. 在开始题目之前 ...

  5. Java生鲜电商平台-电商系统性能指标

    Java生鲜电商平台-电商系统性能指标 1.响应时间和吞吐量 根据应用程序的响应时间可以知道程序完成传输数据所用的时间.也可以从HTTP请求级别,或者成为数据库级别来看.对那些缓慢的查询你需要做一些优 ...

  6. Java生鲜电商平台-电商数据运营统计与分析

    Java生鲜电商平台-电商数据运营统计与分析 今天分享将会分为以下几个方面来阐述: 1. 作为运营我们需要统计与分析的几个核心数据是什么? 2. 核心数据对业务的指导价值在哪里呢? 3. 作为产品PM ...

  7. Java生鲜电商平台-电商订单系统全解析

    Java生鲜电商平台-电商订单系统全解析 说明:Java生鲜电商平台-电商订单系统全解析主要讲解OMS的内容,设计,开发,架构等知识. 今天分享将会分为以下三个环节来阐述: 1.订单系统的介绍 2.订 ...

  8. Java生鲜电商平台-电商会员体系系统的架构设计与源码解析

    Java生鲜电商平台-电商会员体系系统的架构设计与源码解析 说明:Java生鲜电商平台中会员体系作为电商平台的基础设施,重要性不容忽视.我去年整理过生鲜电商中的会员系统,但是比较粗,现在做一个最好的整 ...

  9. Java生鲜电商平台-电商支付流程架构实战

    Java生鲜电商平台-电商支付流程架构实战 说明:我一直秉承的就是接地气的业务架构实战.我的文章都有一个这样的核心. 1. 业务场景 2. 解决问题. 3.代码实现. 4.代码重构. 5.总结与复盘. ...

随机推荐

  1. R语言入门级实例——用igragh包分析社群

    R语言入门级实例——用igragh包分析社群 引入—— 本文的主要目的是初步实现R的igraph包的基础功能,包括绘制关系网络图(social relationship).利用算法进行社群发现(com ...

  2. Java Web环境配置

    准备工作 jdk-8u241 apache-tomcat-9.0.31-windows-x64.zip Eclipse IDE for Enterprise Java Developers 关于版本选 ...

  3. 【Python3】HTML基础

    [web前端]HTML基础 一.BS模式 BS(Browser-Server)模式:顾名思义为浏览器-服务器的意思,对比的话类似我们PC上面浏览器使用的产品即为BS模式产品,例如google doc. ...

  4. ES6的编程风格

    1,建议使用let替代var 2,全局常量使用const,多使用const有利于提高程序的运行效率. const有两个好处:一是阅读代码的人立刻会意识到不应该修改这个值,二是防止无意间修改变量值导致错 ...

  5. 使用java程序jxl操作Excel表格

    在实际开发中企业办公系统都会涉及到一个打印报表的功能,也许你的需求就是把web前端展示的员工信息以Excel表格形式打印出来 ,那么具体怎么操作下面我来实现一下 首先我们使用的是 java的jxl技术 ...

  6. java面试汇总一

    第一部分 Java SE基础(1) 1.1 java的8种基本数据类型 装箱  拆箱 1.1.1  8种基本的数据类型 1.1.2装箱  拆箱 自动装箱是 Java 编译器在基本数据类型和对应的对象包 ...

  7. PyCharm设置远程虚拟环境

    1. 创建项目 2. 配置解释器 1. 先打开srttings 2. 选择配置解释器选项 3. 配置远端虚拟环境 4. 成功提示 5. 查看pip列表信息 经过以上操作,PyCharm设置远程虚拟环境 ...

  8. HTML5&CCS3(3)基本HTML结构

    3.1 开始编写网页 每个HTML文档都应该包含以下基本成分: DOCTYPE: html元素(包含lang属性.该属性不是必需的,但推荐加上): head元素: 说明字符编码的meta元素: tit ...

  9. Navicat15最新版本破解 亲测可用!!!

    1.下载Navicat Premium官网https://www.navicat.com.cn/下载最新版本下载安装 2.本人网盘链接:https://pan.baidu.com/s/1ncSaxId ...

  10. 深度学习与人类语言处理-语音识别(part2)

    上节回顾深度学习与人类语言处理-语音识别(part1),这节课我们将学习如何将seq2seq模型用在语音识别 LAS 那我们来看看LAS的Encoder,Attend,Decoder分别是什么 Lis ...