会员成长体系
2019-08-22 19:37:46 0 举报
会员成长体系
作者其他创作
大纲/内容
ActionBusinessImpl#triggerSyncCheck
TOPIC:ORDERTPOC:SHOPTOPIC:.......
数据看板
根据前置条件过滤任务,匹配计划
奖励服务
基础支撑
AkcGrowActionService#getAction
triggerParam.getActTaskType()根据TaskType获取action-一条,代表Type和Action1:1
成长体系管理系统
ActionBusinessImpl#matchTaskActions
其他服务
根据action_releation的taskType的value动态获取triggerCheck
过滤没有exeTag或已被执行的计划
复用变量清洗逻辑
奖励
核验
执行任务
Exector定时执行
triggerUserTypeEnum根据任务用户类型创建策略动态获取beanriggerUserTypeEnum.beanName
执行奖励ACTION
用户画像
用户端-其他服务
奖励钱/劵/积分..
ActionBusinessImpl#getAkcGrowTaskActions
BaseTriggerMQHandler#doHandler
根据行为动作(数据源)采用策略模式驱动状态机
根据triggerParam.getActTaskType(act_task_type)查询akc_grow_action
人(会员/店主/代理/C)
动作管理
行为Action
MQ
Exector定时执行,未结束的任务Action进行check
IProgressBusiness#isCompleteGroupTask
ProgressBusinessImpl#executeProgress
BaseTriggerMQHandler#execute
BaseTriggerMQHandler#cleanTreatment
重要方法 ,再次分解
根据panl.id+user_id查询akc_grow_task_plan_member_progress此用户是否执行过此计划
反射出不同的实现类,清洗入参构建统一的入参TriggerParam
Data is List
规则/策略
BuildActionFactory#createBuildAction
用户操作
com.akucun.member.task.business.api.action.check.
循环执行匹配到的计划
任务集管理
Watcher观察者MQ状态机
actTaskType根据行为创建任务体系行为构建动态获取beane.g.BUILD_XD_COMPLETE_ORDER--》BuildXDComplete
根据task_id匹配akc_grow_task_action_relation的actions,如果有被过滤掉的则不添加则返回的tasklist。过滤被前置条件过滤的任务,并打印日志,返回符合条件的任务
入参变量 规则判断
N循环调用
管理系统
发送奖励
根据前置条件(.CheckTypeEnum#TRIGGER)过滤命中的Task返回未过滤的
具体的任务驱动执行器
创建任务快照akc_grow_task_plan_member_progress.progress通过task_id拿到task_action的List并记录执行的次数
TriggerParamBusiness#serialParam
取数
是否满足
记录行为入参akc_grow_task_plan_member_progress.params通过task_id拿到task_action的List并记录执行的次数
会员体系
Container
TriggerMQHandler#doHandler
1.根据task_id匹配akc_grow_task_plan2.根据akc_grow_task_group.user_type与TriggerParam.getUserType比对一致才会加入plan列表,返回plan。
任务执行器
更新用户任务状态
驱动数据源
添加任务执行快照记录akc_grow_task_plan_member_progress_record
IPlanBusiness#matchPlan
活动秒杀/抽奖...
任务引擎(策略+反射+Action)驱动任务
根据akc_grow_action的id与parentId关联akc_grow_task_action_relation的action_idaction_relation会记录任务和动作的关系,以及校验的逻辑。TAKS-ACTION:N-M
按照taskId进行分,返回符合条件的任务集组
配置任务
构建行为参数
过滤不符合条件的trigger,根据trigger过滤不同的值。决定是否继续
RulEengine规则引擎Drools
N
开始
progress==null
任务体系执行器
Action
AkcGrowTaskPlanMemberProgressRecordService#addRecord
奖励管理
PlanBusinessImpl#checkTriggerRepeat
清洗数据源,根据策略模式清洗出任务所需的入参
用户任务
营销平台
Sidecar近端JAR低侵入回执
1.根据前置条件(.CheckTypeEnum#TRIGGER)过滤命中的Task返回未过滤的task2.根据task_id匹配akc_grow_task_plan3.根据akc_grow_task_plan.group_id匹配akc_grow_task_group,与入参的用户类型一致才会继续执行plan执行将过滤好的plans
PlanBusinessImpl#executePlans
Exector策略模式动态编译反射机制
@MQConsumer(consumerGroup = \"OpenShopFirstOrderCShopMQ\
规则引擎
是否检查已执行过重复触发请求 (只有带着请求执行链execTag的请求才能处理)如果匹配到该行为任务集已完成则不再执行任务加锁后不会再执行
1.数据流通过统一的ActionName驱动2.如一对多关系则将ActionName关联至GROUP
是
List<TriggerParam>
行为数据
UserTypeStrategyFactory#create
Y
积分
任务管理
奖励金
1.校验任务是否已完成(redis存在GROUP_COMPLETE_SIGN_KEY_userId_groupId)2.根据plan_id与user_id查询akc_grow_task_plan_member_progress为空则继续(代表目前正在执行的任务,不是当前任务)3.如果状态TaskPlanProgressStatusEnum待领奖或已完成则不继续执行(任务已结束)
IBuildAction#buildTriggerParam
AkcGrowGroupMemberService#receiveGroup
ProgressBusinessImpl#getTaskProgress
成长计划管理
执行动态创建的triggerParams
变量引擎
根据plan_id与user_id排他锁,保障每个用户在同一一时刻只有一个任务执行
任务状态流转
统一的用户体系,人需要唯一标识
数据中台
TriggerAction#trigger
任务循环/父子/进阶
同步任务
清洗好的变量
根据动态参数匹配任务动作
BI
优惠卷
AkcGrowTaskPlanMemberProgressService#selectOne
已完成的用户任务
根据ActTaskType匹配动作ackTaskType就是ActTaskTypeEnum根据act_task_type读取akc_grow_action,拿到action。action会记录beanname以及实现类,入参等等。
1.task_id关联task_action_releation2.如果有action_type有TaskActionAtTypeEnum.UNIQUE的则先检测一次约束。如果有则不再继续执行
TriggerCheckFactory#createCheck 根据value获取 triggerCheck = (TriggerCheck) SpringBeanFactoryUtils.getBean(taskActionAtTypeEnum.triggerCheckBeanName);
边缘服务
取数服务
未完成的任务才会继续执行
通过triggerUserTypeEnum构建,根据不同的业务获取不同的user_id
0 条评论
下一页