写点什么

电商平台:收货地址

用户头像
worry
关注
发布于: 2021 年 02 月 24 日
电商平台:收货地址

收货地址是电商类产品中一个通用功能,实物类的商品,用户下单过程中一般都需要添加或选择收货地址。虽说收货地址是一个小功能,但是,为了提升用户满意度,一套体验较好、操作较快,认知明确的收货地址流程,不仅需要产品设计人员精心设计,也需要技术开发人员仔细考量需求细节,比如:默认收货地址的设置与变更;选择收货地址列表页面的排序方式;新增收货地址入口不同时,保存后的跳转逻辑;横向越权添加或修改问题等等。

产品功能

收货地址功能,包括:进入下单页面显示默认收货地址功能;用户需要重新选择收货地址时,为用户提供的选择收货地址列表功能;当用户首次下单或需要将物品发往一个新的地址时,就需要为用户提供新增收货地址功能,相应的也要为用户提供修改收货地址和删除收货地址功能;对于微信小程序类应用,还需要为用户提供导入收货地址功能,方便用户共用收货地址;另外在用户个人中心还应该提供管理收货地址的功能。

下单页面,显示默认收货地址功能

进入下单页面,要为用户显示默认的收货地址。用户首次下单没有收货地址时,系统应积极引导用户去添加收货地址,此时的引导应明确,提示的力度也要恰如其分,不要让用户有突兀的感觉。

下单页面显示的收货地址信息包括:收货人姓名、联系方式、收货地址、标签、是否是默认地址。下单页面也要提供更改收货地址的入口,点击后进入选择收货地址列表页面。

选择收货地址列表功能

用户想更改自己的收货地址时进入此页面,此页面列出用户以往添加的所有收货地址供用户选择,同时也要提供让用户新增收货地址或者编辑现有收货地址的入口。

此页面需要标记出当前所选收货地址和默认收货地址,排列显示时,将默认收货地址置顶显示,其他地址依次按最后修改时间由近及远排列。显示的单条地址信息包括:收货人姓名、联系方式、收货地址、标签、默认标识。

管理收货地址列表

在用户个人中心提供管理收货地址的功能。作为专门管理收货地址的页面,增、删、改、查功能都应该具备;而且为了缩短用户使用路径,可以将“设为默认”、“编辑”、“删除”全部展现出来;

排列显示时,将默认收货地址置顶显示,其他地址依次按最后修改时间由近及远排列。显示的单条地址信息包括:收货人姓名、联系方式、收货地址、标签、默认标识。

添加/修改收货地址

添加/修改收货地址表单,如下:


在微信小程序中,部分信息可以通过查询联系人信息接口导入,可以提升用户添加效率。从【选择收货地址】进入添加或修改收货地址时,完成后应该给用户“保存并使用”的选择,减少用户回到订单确认页的操作步骤;从【管理收货地址】进入添加或修改收货地址时,完成后给用户“保存”按钮,回到【管理收货地址】让用户自行其他操作;编辑状态下包含删除操作,可以方便用户操。

删除收货地址

删除收货地址时,需要给用户必要的提示。默认地址删除后,需要将最后更新的一条地址设置为默认。

导入微信收货地址

在微信小程序中,可以给用户提供导入微信收货地址功能。

页面跳转逻辑


技术实现

接口设计

  • 获取用户默认收货地址接口

  • 请求地址:userContactAddress/getDefault

  • 请求头:需要包含用户认证头 Authorization

  • 请求方法:GET

  • 请求参数:无

  • 返回结果:收货地址 DTO

  • 其他:接口设计时需要注意用户权限,防止横向越权;没有默认地址时,取最近更新的一条。

  • 获取用户收货地址列表接口

  • 请求地址:userContactAddress/list

  • 请求头:需要包含用户认证头 Authorization

  • 请求方法:GET

  • 请求参数:page-开始页码、pageSize-页面大小

  • 返回结果:收货地址 DTO 的 Page

  • 获取用户收货地址详情接口

  • 请求地址:userContactAddress/get

  • 请求头:需要包含用户认证头 Authorization

  • 请求方法:GET

  • 请求参数:收货地址 ID

  • 返回结果:收货地址 DTO

  • 其他:接口设计时需要注意用户权限,防止横向越权

  • 添加用户收货地址接口

  • 请求地址:userContactAddress/save

  • 请求头:需要包含用户认证头 Authorization

  • 请求方法:POST

  • POST 数据:收货地址 DTO

  • 返回结果:Ok 应答或错误应答

  • 其他:接口设计时需要注意用户权限,防止横向越权

  • 修改用户收货地址接口

  • 请求地址:userContactAddress/update

  • 请求头:需要包含用户认证头 Authorization

  • 请求方法:POST

  • POST 数据:收货地址 DTO

  • 返回结果:Ok 应答或错误应答

  • 其他:接口设计时需要注意用户权限,防止横向越权

  • 删除用户收货地址接口

  • 请求地址:userContactAddress/delete

  • 请求头:需要包含用户认证头 Authorization

  • 请求方法:POST

  • POST 数据:收货地址 ID

  • 返回结果:Ok 应答或错误应答

  • 其他:接口设计时需要注意用户权限,防止横向越权

  • 设为用户默认收货地址接口

  • 请求地址:userContactAddress/setDefault

  • 请求头:需要包含用户认证头 Authorization

  • 请求方法:POST

  • POST 数据:收货地址 ID

  • 返回结果:Ok 应答或错误应答

  • 其他:接口设计时需要注意用户权限,防止横向越权

实体设计

收货地址实体涉及的属性如下:


表单中的地区信息由国标收货地址第一级地址、第二级地址、第三级地址构成;标签字段可以没有,需要考虑产品意义;某些场合下,经纬度坐标可以用于优化物流线路,这里我们需要了解地图坐标系的一些相关知识。

实现类设计

  • API Controller:UserContactAddressController

  • Service 接口:UserContactAddressService

  • Service 实现:UserContactAddressServiceImpl

  • Repository 接口:UserContactAddressRepository

  • Entity 类:UserContactAddress

  • QueryDSL 自动生成:QUserContactAddress

  • DTO:UserContactAddressDTO

  • 实体与 DTO 相互转换 Mapper:UserContactAddressMapper

  • 实体与 DTO 相互转换 Mapper 实现:UserContactAddressMapperImpl(MapStruct 自动生成)

其他说明

  • 关于收货地址的标签属性,关联默认选项也可以扩展添加自定义选项

  • 关于收货地址的地区信息,在不支持地图选择时,还要关联一个地区的三级级联选择框便于用户选择

参考资料

发布于: 2021 年 02 月 24 日阅读数: 16
用户头像

worry

关注

心若有翼,我自飞翔 2018.01.25 加入

一个戴着眼睛的肥胖的扑腾蛾子

评论

发布
暂无评论
电商平台:收货地址