Home 成长之路 Leetcode题解 直播间技术方案

直播间技术方案

一、背景

【tapd】:https://www.tapd.cn/20060141/prong/stories/view/1120060141001316092

    1. 往期直播有收到用户在直播间评论区反馈想定向听某些商品讲解,评论区无法实时采集用户意愿数据,只能事后分析用于改善下一场直播,无法用于优化当前直播间讲解策略,需有功能承载该场景诉求;

2. 直播间商品初始排序无法人为干预管控,直播开播前运营需手动调整直播间商品展示排序,目前调整排序交互是拖动,效率比较低,严重影响操作效率,需优化;

二、需求拆分

工程:afterpay_offline_marking_server

分支:rel_liveAsk_1316092

2.1 直播间商品求讲解功能

2.1.1 用户端

实现解析

模块设计内容备注
用户点击商品求讲解网关新增【商品求讲解】功能接口网关:/route0002/ecLive/incrProductAskCount.json入参:liveId + skuId + 登录态 
用户明细记录异步将明细写入Kakfa,上报给大数据 
统计计数Redis实现Key: AskCountNum : liveId  + skuIdValue: askCount有效期:7s(正常情况5S就会删除一次) 
数据落库延时队列每5s将Redis中的数据同步到数据表(直播商品属性统计表)t_live_sku_attribute_statis_record

2.1.2 管理端

实现解析

模块设计内容备注
直播选品统计页展示网关新增【查询直播选品统计详情】功能接口网关:oa/mix/live/queryLiveSelectStatis.json入参:liveId + skuId + 登录态 
查询选品信息(已有)rc_oa_gateway/mix/selection/selectGoodsAdminQuery.json 
查询已讲解次数 + 求讲解人数查询统计表t_live_sku_attribute_statis_record
商品求讲解趋势图接入大数据实现通过大数据侧明细实现 
直播选品讲解/取消讲解更新库表【讲解中的商品】更新直播间管理表 t_live_event_record
更新【已讲解次数】、【求讲解次数】更新统计表t_live_sku_attribute_statis_record
更新缓存【讲解中商品】、【求讲解次数】Key见上述缓存设计 

2.1.3 缓存设计

  • 商品求讲解统计

Key: AskCountNum_liveId + skuId

Value: askCount

2.1.4 延时队列设计

  • RocketMQ

Topic: LIVE_SKU_ASK_COUNT_STATIS_TOPIC

Group: LIVE_SKU_ASK_COUNT_STATIS_TOPIC_GROUP

2.1.5 库表设计

  • 直播商品属性统计表

CREATE TABLE `t_live_sku_attribute_statis_record` (

  `Fid` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘自增主键’,

  `Flive_activity_id` varchar(32) NOT NULL DEFAULT ” COMMENT ‘直播间ID’,

  `Fsku_id` varchar(32) NOT NULL DEFAULT ” COMMENT ‘商品ID’,

  `Fextend_info` varchar(128) NOT NULL DEFAULT ” COMMENT ‘扩展信息’,

  `Fversion` int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘版本号’,

  `Fcreate_time` datetime NOT NULL DEFAULT ‘1970-01-01 00:00:00’ COMMENT ‘创建时间’,

  `Fmodify_time` datetime NOT NULL DEFAULT ‘1970-01-01 00:00:00’ COMMENT ‘修改时间’,

  `Fask_count` int(20) NOT NULL DEFAULT ‘0’ COMMENT ‘求讲解人数’,

  `Fexplained_count` int(20) NOT NULL DEFAULT ‘0’ COMMENT ‘已讲解次数’,

  `Fjg_auto_test_id` varchar(256) NOT NULL DEFAULT ”,

  PRIMARY KEY (`Fid`) USING BTREE,

  UNIQUE KEY `idx_unique_live_sku` (`Flive_activity_id`,`Fsku_id`),

  KEY `idx_modify_time` (`Fmodify_time`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’直播|直播商品属性统计表|breakyang|20240116′;

  • 直播商品属性用户明细表(在大数据侧建表)

CREATE TABLE ec_live_db.t_live_sku_use_record(

  `Fid` int(20) NOT NULL AUTO_INCREMENT COMMENT ‘自增主键’,

  `Flive_activity_id` varchar(32) NOT NULL DEFAULT ‘0’ COMMENT ‘直播ID’,

  `Fsku_id` varchar(32) NOT NULL DEFAULT ” COMMENT ‘商品ID’,

  `Fuid` int(20) NOT NULL DEFAULT ‘0’ COMMENT ‘用户Uid’,

  `Fextend` varchar(256) NOT NULL DEFAULT ” COMMENT ‘扩展信息’,

  `Fmodify_time` datetime NOT NULL DEFAULT ‘1970-01-01 00:00:00’ COMMENT ‘修改时间’,

  `Fcreate_time` datetime NOT NULL DEFAULT ‘1970-01-01 00:00:00’ COMMENT ‘创建时间’,

  `Fversion` int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘版本号’,

  PRIMARY KEY (`Fid`) USING BTREE,

  UNIQUE KEY `idx_unique_live_sku` (`Flive_activity_id`,`Fsku_id`),

  KEY `idx_modify_time` (`Fmodify_time`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8  COMMENT=’直播|直播商品属性统计流水表

|breakyang|20240116′;

2.1.5 接口文档

轮询讲解中商品接口:

接口名称直播间ID获取直播间信息接口
gateway/route0002/ecLive/queryLiveInfo.json
接口 
方法queryLiveInfo
group*
版本号1.0.0
超时时间3000ms
是否登录
入参字段名字段类型是否必传描述
 live_activity_idString直播间ID
出参    
     
resultint0-成功
res_infoStringok
result_rows  
 live_activity_idString直播间ID
 live_activity_nameString直播间名称
 event_base_idString促销ID
 select_idString选品池ID
 live_stateint1-未开播,2-直播中,3-已结束 
 explaining_sku_infoString讲解中的商品信息
 update_timeString直播间商品列表更新时间
 couponActivityEventInfoJSONObject直播活动信息
     

直播间商品接口:(无改动)

https://m.fenqile.com/route0002/galaxy/recommendSku.json

新增【商品求讲解】功能接口

接口名称商品求讲解接口
gateway/route0002/ecLive/incrProductAskCount.json
接口com.fenqile.afterpay.offline.marketing.cgi.live.CgiLiveSkuAskService 
方法increaseProductAskCount 
group*
版本号1.0.0
超时时间3000ms
是否登录
入参字段名字段类型是否必传描述
 live_activity_idString直播间ID
sku_idString商品ID
登录态   
出参   

新增【查询直播选品统计详情】接口

接口名称查询直播选品统计详情功能接口
gatewayrc_oa_gateway/mix/live/queryLiveSelectStatis.json
接口com.fenqile.afterpay.offline.marketing.cgi.live.CgiLiveEventRecordQueryService
方法queryLiveSelectorStatis
group*
版本号1.0.0
超时时间3000ms
是否登录
入参字段名字段类型是否必传描述
 登录态   
live_activity_idString直播间ID
select_idString选品ID
query_sceneInteger查询场景2 – smart选品明细
出参字段名字段类型  
 sort int  序号 
sku_id String  skuId 
sku_pic List<String>  商品图片 
mart_amount String  商品市场价 
stock String  可销售库存 
is_product_up_down String  状态 
is_product_up_down_desc String  状态描述 
short_product_name   
ask_countint  求讲解人数 
explained_countint  已讲解次数 

                {

// 已讲解次数

“explained_count”: 10,

// 求讲解次数

“ask_count”: 52,

                    “mart_amount”: “10”,

                    “category_concat_name”: “测试类目-测试类目-测试类目01”,

                    “category_id_2”: 2380,

                    “category_id_1”: 80,

                    “order_cnt_30_new”: 0,

                    “sku_pic”: [

                        “https://coss-ec.fenqile.com/ecproduct201/M00/ex/20230920135058-fcd2ee07-c50b-456d-aab9-572fcded1a26.png”

                    ],

                    “operate_list”: [

                        1,

                        2

                    ],

                    “self_pop”: 2,

                    “category_name_2”: “测试类目”,

                    “category_name_1”: “测试类目”,

                    “product_id”: “P202309207375402”,

                    “stock”: 999999,

                    “category_id_3”: 2134,

                    “is_product_up_down”: 0,

                    “amount”: “9”,

                    “discounted_amount”: 0.0,

                    “self_pop_desc”: “POP”,

                    “brand_name”: “阿玛尼(ARMANI)”,

                    “sku_id”: “MES202309207855022”,

                    “category_name_3”: “测试类目01”,

                    “sku_key_1”: “3”,

                    “sort”: 1,

                    “product_name”: “单品促销测试0”,

                    “sku_key_concat_name”: “3,d,a”,

                    “brand_id”: 53,

                    “extend”: {},

                    “merch_name”: “测试一号店铺”,

                    “is_product_up_down_desc”: “下架”,

                    “sku_key_2”: “d”,

                    “sku_key_3”: “a”,

                    “merch_id”: “MC201601210278193”

                }

改动【商品讲解/取消讲解】接口

接口名称商品讲解/取消讲解接口
gatewayoa/mix/live/explaining_goods.json
接口com.fenqile.afterpay.offline.marketing.oa.cgi.live.CgiLiveEventRecordApplyService
方法explainGoods
group*
版本号1.0.0
超时时间3000ms
是否登录
入参字段名字段类型是否必传描述
 登录态   
live_activity_idString直播间ID
explain_actionInteger1 – 讲解2 – 取消讲解
explaining_sku_infoString操作的商品
出参字段名字段类型  

SIMILAR ARTICLES

0 8

0 9

发表评论

发表评论