点击空白处退出提示
作品详情
● 技术:springcloud(springcloud gateway、feign、nacos)、redis、rocketmq、xxl-job、elk、es、mangodb、mysql、canal
● 工具:idea、navicat、gitlab、Jenkins、jira、kuboard、zipkin、es-header、RedisDesktopManager
● 内容:
(1)门店(家宴)预约,预结算页采用雪花算法生成防重编号存储在redis,下单时校验防重编号防止重复下单,采用xxl-job根据创建时间查询近一小时订单,对未接单、未到店订单变更为取消状态。
(2)订单相关流程为了兼容多业务,增加多种业务场景类型(如普通正向单、预约、导购),分类定义销售、售后类型。订单流程系统设计实现采用命令模式,实现通过基类定义公共行为,每个handle对应订单操作,handle下层对应多个command,handle实现的基类方法有对应的订单状态设置方法,更优雅的实现状态流转。例如下单流程中包含订单初始化command、营销活动价格计算command、运费计算command、库存扣减command,每个command实现底层采用分布式锁保证数据修改安全,对应下单失败会调用库存回退command。订单的每次操作状态变更最终都投递消息到订单状态变更mq,便于后续其他业务扩展使用。
(3)商品评价,评价设计考虑后期会扩展多场景(门店、人员、售后、物流),表结构设计采用type区别类型,增加关联的业务id(商品id、人员id)等,业务数据json字段(商品信息、人员信息),便于c端小程序查询。对于评价的组合形式(文字、图片、标签、星级)采用二进制标识,通过十进制数表示多个状态叠加的组合,通过位运算判断当前评价是否包含对应的评价内容。商品评价等级支持按多维度聚合,c端查询包括全部、有图、好评、中差评,评价等级表db存的是分数,在业务层根据标准聚合分数,后续可按标准进行改动。接入腾讯的敏感词识别、图片识别接口。
(4)埋点功能,考虑后期数据结构扩展性,入参设置为两个业务json字符串,实现兼容原有大数据上报功能同时支持埋点,根据取值是否非空判断是否处理。埋点数据投递埋点mq异步消费,避免db压力,埋点同时支持导购业务接入将业务数据组装投递到导购mq。表结构设计根据每个埋点操作定义为一个事件,前端业务json参数带有事件特有的code,支持保存按业务json的定制化参数,便于后期按不同维度统计埋点数据。
(5)销售导购订单,中台查询为了提高查询效率。创建订单通过canal数据同步es,生成es订单相关的数据,订单索引按每月建立一次,利用es的分词功能提高查询效率。
(6)订单配置,考虑订单后续可能会增加更多的配置项,采用了mongodb的数据存储,数据存储结构更为灵活,后续只需改动java实体,不需要跟mysql一样变动表结构。订单配置查询先从redis查询,然后再从mangodb查询,通过缓存提升查询效率。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论