[关闭]
@my943813636 2020-02-13T08:52:05.000000Z 字数 4992 阅读 588

概述

对 优惠券 促销 购物车 配送方式 积分使用 创建订单. 相关功能的接口
提供 必要字段的 描述和类型枚举,作用描述,数据类型, 使用条件, 返回错误码 作为参考

促销

数据类型(@促销)

获取可用促销活动

请求参数:

type 类型 枚举值 购物车 商品, 需要的促销类型

成功响应:

@促销[] -- (促销列表)

异常:

参数错误找不到对应数据

优惠券

这些接口全部需要登录才能使用

数据类型(@优惠券)

  1. - id
  2. - type 优惠码类型 枚举 平台 个人
  3. - value 优惠金额 百分比或者数字
  4. - coupon_type 优惠类型 枚举 固定金额, 百分比, 运费抵扣, 小物一件
  5. - start_date 开始时间 UTC 时间戳
  6. - end_date 结束时间 UTC 时间戳
  7. - min_price_boundary 最小价格限制, 0 表示不限制
  8. - max_price_boundary 最大价格限制, 0 表示不限制
  9. - min_amount_boundary 最小商品数量限制, 0 表示不限制
  10. - max_use_limit 最大使用次数
  11. - usage_counter 已经使用次数
  12. - is_exclusive ,bool 独占使用, 不能与其他优惠券一起生效
  13. - is_enable ,bool 是否启用
  14. - is_visible ,bool 是否显示
  15. - condition_des 使用条件描述
  16. - award_probability 中奖概率, 万分制
  17. - remarks 备注
  18. - is_use , bool 是否是启用的优惠券, 通过使用优惠券接口,和取消优惠券接口更改

兑换优惠券

通过优惠券码兑换优惠券,返回兑换成功的优惠券, 客户端直接添加到优惠券列表中,不再请求我的优惠券接口

请求参数:

token
兑换码

成功响应:

@优惠券 (新兑换的优惠券)

异常:

参数错误找不到对应数据
用户未登录,或者登陆授权过期

我的优惠券

获取我的优惠券列表

请求参数:

token
cart_id 购物车id(不允许是临时购物车id)

成功响应:

@优惠券[] -- (优惠券列表)

异常:

数据为空
用户未登录,或者登陆授权过期

使用优惠券

使用该优惠券进行优惠减免, 如果优惠券是独占优惠券,会导致之前选中的优惠券不是使用状态,
根据购物车的选中情况, 客户端会进行优惠券时候可以使用的校验, 服务器也需要进行校验,改优惠券是否允许使用
返回最新的优惠券列表 客户端替换整个优惠券列表

请求参数:

token
优惠券id
cart_id 购物车id(不允许是临时购物车id)

成功响应:

@优惠券[] -- (优惠券列表)

异常:

参数错误找不到对应数据
用户未登录,或者登陆授权过期

取消使用优惠券

取消使用该优惠券进行优惠减免, 返回最新的优惠券列表 客户端替换整个优惠券列表

请求参数:

token
优惠券id
cart_id 购物车id(不允许是临时购物车id)

成功响应:

@优惠券[] -- (优惠券列表)

异常:

参数错误找不到对应数据
用户未登录,或者登陆授权过期

购物车

假定需求

  • 未登录购物车数据保存
  • 未登录购物车与登录后购物车的融合
  • 能记住用户勾选的商品,避免用户重复选取
  • 能记住用户选中的优惠券,避免用户重复选取
  • 能记住用户使用的积分, 且最大使用积分 min(用户积分, 选中商品价值 * 10%)
  • 购物车结算信息,根据 积分 , 优惠券 , 促销 , 勾选商品, 商品数量价格, 配送方式 共同决定
  • 一个用户有且只有一个购物车

更改勾选,商品购买量 会存在的问题

  • 勾选商品,加减删商品 改变导致优惠券选取情况变化,之前使用的优惠券不再可用,需要识别并将不符合使用条件的优惠券自动从使用的优惠券中去除
  • 勾选商品,加减删商品 改变导致积分使用量变化, 积分最大使用量假定为 min(用户积分, 选中商品价值 * 10%) , 如果之前使用了 2000 积分 但是现在取消勾选了部分商品后最多只能使用 1000 需要自动降低积分的使用数量
  • 促销优惠优先级,折扣和减免优先级问题

未登录使用购物车

  • 服务器保存, 创建临时购物车, 用于保存购物车商品, 勾选商品 增删改查
  • 客户端保存购物车产品数据

    客户端保存购物车产品数据存在一些问题, 因为要支持不登陆情况下查看结算信息需要传递大量的产品信息,且难以实现记住用户选取的优惠券(优惠券会根据当前商品勾选状态) , 在客户端保存 导致需要传递产品信息的接口

    • 获取结算信息
    • 获取我的优惠券列表
    • 使用优惠券
    • 使用积分接口

    所以后面的接口均基于 服务端保存购物车数据进行设计

部分勾选商品

  • 商品勾选 和 取消勾选 会使 优惠券,促销 的计算有不同的生效规则,会影响的接口返回的数据 有一下接口
    • 获取结算信息
    • 获取购物车列表
    • 获取我的优惠券列表
    • 生成订单接口

多张优惠券可能满足当前使用条件, 取消勾选掉部分商品后有些优惠券就不再满足使用条件了

用户登陆,未登录购物车和用户的购物车融合 商品数量, 勾选情况 融合

  • 产品数量
    • 未登录购物车和的用户购物车相同产品id && sku 相同,的商品进行购买数量累加, 否则 添加新的商品
  • 选中商品
    • 未登录购物车和用户的购物车相同产品id && sku 相同的时候,未登录购物车中的勾选优先级大于登陆后的购物车勾选
    • 未登录购物车的新增商品 保留 未登录购物车的勾选
    • 不满足上述条件, 保留用户购物车之前的勾选情况

数据模型(@购物车列表)

  1. - cart_id 购物车id
  2. - products[]
  3. - id 在购物车中的id
  4. - product_id 商品id
  5. - sku_id 选中的sku id
  6. - options 商品options 选取 与接口 api/v1/product/:id/options 返回数据一致, 但只要选中的那一组数据即可
  7. - amount 商品购买数量
  8. - product_base 与接口/api/v1/product/:id 返回数据一致
  9. - is_check ,bool, 表示是否勾选

创建未登录购物车

在没有登录的情况下, 调用改接口 获取一个购物车id, 后面对购物车的操作都带上这个购物车id
在本地存储了一个购物车id 的情况下,不要反复请求购物车接口. 使用原来的 id即可

请求参数:

成功响应:

cart_id : string , uuid, 临时购物车id 例如 4ca6e36b-ecfb-4f01-ab9e-f4016eeffd9b

获取用户购物车id

用户登陆后 获取用户自身的购物车id

请求参数:

token

成功响应:

cart_id : string , uuid, 用户购物车id 例如 4ca6e36b-ecfb-4f01-ab9e-f4016eeffd9b

异常

用户未登录,或者登陆授权过期

获取购物车个性推荐

请求参数:

token (可空)
page
size
cart_id (临时购物车id 或者 用户购物车id)

成功响应:

商品列表 返回结构类似 /api/v1/product/sections

异常

数据为空

获取购物车列表

在token 有效的情况下 需要校验, cart_id 是否属于该用户,

请求参数:

token (可空)
cart_id (临时购物车id 或者 用户购物车id)

成功响应:

@购物车列表

异常

数据为空

更新购物车商品sku

在token 有效的情况下 需要校验, cart_id 是否属于该用户,
因为商品有多规格属性,同一个商品可能会添加不同sku 进入购物车多次, 购物车中使用单独的id 进行标识,而不用商品id

需要支持 更改sku_id 后更新 对应的options

可能存在的问题:
A 商品 蓝色 M
A 商品 蓝色 L

更新 蓝色 M 的 sku => 蓝色 L, 需不需要将两者合并为一个

请求参数:

token (可空)
cart_id (临时购物车id 或者 用户购物车id)
id 购物车中的商品id
sku_id 该商品选中的sku 属性
amount 购买数量 最低为1

成功响应:

@购物车列表

异常

数据为空

加入购物车

在商品详情页面使用, 添加商品进入购物车列表. 如果之前这个商品sku已经添加到了购物,那么将购买数量叠加,勾选保持不变
新增加的商品默认不勾选

请求参数:

token (可空)
cart_id (临时购物车id 或者 用户购物车id)
product_id 商品id
sku_id 商品sku 属性
amount 购买数量 最低为1

成功响应:

@购物车列表

异常

数据为空

购物车批量删除

请求参数:

token (可空)
cart_id (临时购物车id 或者 用户购物车id)
ids 购物车中的商品id , 使用"," 分割

成功响应:

@购物车列表

异常

数据为空

勾选购物车中的商品

批量勾选商品, 在参数ids 中的商品均为勾选的, 没有在ids 的都表示不勾选

请求参数:

token (可空)
cart_id (临时购物车id 或者 用户购物车id)
ids, 购物车中的商品id , 使用"," 分割

成功响应:

@购物车列表

异常

数据为空

合并购物车

合并临时购物车和用户购物车

请求参数:

token
source_cart_id (临时购物车id)
target_cart_id (用户购物车id)

成功响应:

@购物车列表

异常

数据为空

结算信息+创建订单

获取结算信息(促销 优惠 积分 价格结算 等信息)

请求参数:

token (可空)
cart_id (临时购物车id 或者 用户购物车id)

成功响应:

  1. point //eg: 0 使用积分数量
  2. point_deduction_price //单位百分 积分抵扣价格
  3. active_coupons: [] //使用中的 @优惠券 列表
  4. coupons_deduction_price //单位百分 优惠券减少的价格
  5. active_promotes: [] //满足条件的 @促销 列表
  6. promotes_deduction_price //单位百分 促销减少的价格

异常

用户未登录或者登录授权过期

获取配送方式

这个接口需要登录使用, 且 购物车id 不能为临时购物车id

请求参数:

token
cart_id

成功响应:

  1. {
  2. "id": 2,
  3. "name": "EMS国際郵便配送",
  4. "delivery_time": "4 - 8 営業日",
  5. "list_freight": "2000.00",
  6. "freight": "1599.00",
  7. "is_default": 0,
  8. "free_categories": "[]",
  9. "take_target": "min",
  10. "freight_discount": "20",
  11. "shipping_method_values": []
  12. }

异常

数据为空
用户未登录或者登录授权过期

更新购物车积分信息

请求参数:

token
cart_id (用户购物车id)
point (更新积分数量, 可能需要考虑积分最大限制条件)

成功响应:

异常

用户未登录或者登录授权过期

生成订单

生成订单, 必须登录后才能使用. 生成订单后 需要清除购物车中勾选的商品, 选中的优惠券, 积分 这些信息

请求参数:

token
cart_id (用户购物车id)
shipping_method_id 配送方式id
address_id 收货地址id

成功响应:

  1. order_id //订单id

异常

用户未登录或者登录授权过期

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注