电商平台:收货地址
收货地址是电商类产品中一个通用功能,实物类的商品,用户下单过程中一般都需要添加或选择收货地址。虽说收货地址是一个小功能,但是,为了提升用户满意度,一套体验较好、操作较快,认知明确的收货地址流程,不仅需要产品设计人员精心设计,也需要技术开发人员仔细考量需求细节,比如:默认收货地址的设置与变更;选择收货地址列表页面的排序方式;新增收货地址入口不同时,保存后的跳转逻辑;横向越权添加或修改问题等等。
产品功能
收货地址功能,包括:进入下单页面显示默认收货地址功能;用户需要重新选择收货地址时,为用户提供的选择收货地址列表功能;当用户首次下单或需要将物品发往一个新的地址时,就需要为用户提供新增收货地址功能,相应的也要为用户提供修改收货地址和删除收货地址功能;对于微信小程序类应用,还需要为用户提供导入收货地址功能,方便用户共用收货地址;另外在用户个人中心还应该提供管理收货地址的功能。
下单页面,显示默认收货地址功能
进入下单页面,要为用户显示默认的收货地址。用户首次下单没有收货地址时,系统应积极引导用户去添加收货地址,此时的引导应明确,提示的力度也要恰如其分,不要让用户有突兀的感觉。
下单页面显示的收货地址信息包括:收货人姓名、联系方式、收货地址、标签、是否是默认地址。下单页面也要提供更改收货地址的入口,点击后进入选择收货地址列表页面。
选择收货地址列表功能
用户想更改自己的收货地址时进入此页面,此页面列出用户以往添加的所有收货地址供用户选择,同时也要提供让用户新增收货地址或者编辑现有收货地址的入口。
此页面需要标记出当前所选收货地址和默认收货地址,排列显示时,将默认收货地址置顶显示,其他地址依次按最后修改时间由近及远排列。显示的单条地址信息包括:收货人姓名、联系方式、收货地址、标签、默认标识。
管理收货地址列表
在用户个人中心提供管理收货地址的功能。作为专门管理收货地址的页面,增、删、改、查功能都应该具备;而且为了缩短用户使用路径,可以将“设为默认”、“编辑”、“删除”全部展现出来;
排列显示时,将默认收货地址置顶显示,其他地址依次按最后修改时间由近及远排列。显示的单条地址信息包括:收货人姓名、联系方式、收货地址、标签、默认标识。
添加/修改收货地址
添加/修改收货地址表单,如下:
在微信小程序中,部分信息可以通过查询联系人信息接口导入,可以提升用户添加效率。从【选择收货地址】进入添加或修改收货地址时,完成后应该给用户“保存并使用”的选择,减少用户回到订单确认页的操作步骤;从【管理收货地址】进入添加或修改收货地址时,完成后给用户“保存”按钮,回到【管理收货地址】让用户自行其他操作;编辑状态下包含删除操作,可以方便用户操。
删除收货地址
删除收货地址时,需要给用户必要的提示。默认地址删除后,需要将最后更新的一条地址设置为默认。
导入微信收货地址
在微信小程序中,可以给用户提供导入微信收货地址功能。
页面跳转逻辑
技术实现
接口设计
获取用户默认收货地址接口
请求地址: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 自动生成)
其他说明
关于收货地址的标签属性,关联默认选项也可以扩展添加自定义选项
关于收货地址的地区信息,在不支持地图选择时,还要关联一个地区的三级级联选择框便于用户选择
参考资料
产品 关于“收货地址”的二三事
技术 微信小程序收货地址功能页
技术 收货地址表
技术 各种国内地图坐标系总结
版权声明: 本文为 InfoQ 作者【worry】的原创文章。
原文链接:【http://xie.infoq.cn/article/3b09e33de22e3f786d5f4b8a6】。文章转载请联系作者。
评论