当前位置: 首页>编程语言>正文

大会员账户体系架构图怎么做 大会员成长体系

1.需求描述

1.任务体系,任务动态配置

  • 任务目前分三大类,每个大类分很多小类。两层树状结构,可以同一张表进行数据管理,通过fatherId进行关联
  • 细分规则,进行任务规则管理

2.任务与业务降低耦合度

  • 现有业务不受活动影响
  • 业务关联可自动化配置关联
  • 任务关联个性化返回活动数据

3.任务完成记录信息

  • 已经完成任务信息记录

4.对接积分和橙值记录接口

  • 用户橙值计算和积分计算的接口要进行对接

5.自定义规则实现

  • 提供可配置化的方式,提供动态的规则配置方式

2.设计分析点

2.1 需要考虑的核心点

  • 1.任务的抽象化,可配置化
  • 2.规则的规范化,特殊规则可以通过自定义类实现,可通过反射类配置实现。
  • 3.复杂规则,通过规则引擎的使用
  • 4.拦截器统一配置处理任务体系数据
  • 5.对接积分和橙长值接口

2.2 基于上面的这些核心点,首先要知道任务配置的数据结构,任务完成的记录结构

任务主表配置结构

  • 任务大类和任务分类
  • 进行相关排序
  • 任务的状态是否有效
  • 任务对应“去完成”按钮的跳转路径配置
  • 关联的业务的url(这里的作用是解耦具体业务)

大会员账户体系架构图怎么做 大会员成长体系,大会员账户体系架构图怎么做 大会员成长体系_拦截器,第1张

任务规则表

  • 任务类型:用于区分任务,方便任务缓存及个性化处理
  • 通用任务类型
  • 会员任务类型
  • 个性化任务类型
  • 任务时间类型
  • 一次性任务(once):表示只需要完成一次的任务,例如新手任务
  • 周期性任务(cycle):表示固定周期内完成制定数量任务,例如:7天一个周期的签到积分
  • 永久性任务(persist):表示不受限制的任务
  • 任务周期: 表示本任务的计算周期
  • 例如,新手任务周期为30天
  • 积分任务的周期为7天
  • 任务周期单位:可以指定任务的计时单位
  • 考核时长(可为空):表示在制定的考核时长
  • 考核单位:小时/天/月
  • 考核任务完成次数:任务在考核时长中的完成次数
  • 例如:积分签到,1天要有1次,且只能一次。则通过限制考核次数和时长进行限制,且7天为一个周期的周期性任务
  • 再如:新手任务,考核时长30天,只需要完成1次的1次性任务
  • 是否固定模式
  • 用于判断任务是否固定任务,如果固定任务,则取对应积分值和橙长值
  • 如果不属于,两种情况,一种是可以直接配置相对复杂的规则表达式,规则引擎执行
  • 设计跨越多个业务的,提供了通用接口,实现接口,重写接口方法。通d过反射进行
  • 开始日期:考核任务完成的起始时间,结束日期为当前时间
  • Today:当天——适用积分任务。。。。当然也要和对应的考核单位进行匹配,如果是小时考核的话,进行小时数匹配
  • RegisterDate:注册时间——新手任务
  • Now-7:从今天前推N天完成任务情况
  • Monday:周一开始到今天
  • PastTime:表示往昔的时间中任务完成次数
  • 规则表达式
  • 规则实现类

大会员账户体系架构图怎么做 大会员成长体系,大会员账户体系架构图怎么做 大会员成长体系_大会员账户体系架构图怎么做_02,第2张

任务记录表

记录任务类型和任务完成的具体时间

大会员账户体系架构图怎么做 大会员成长体系,大会员账户体系架构图怎么做 大会员成长体系_大会员账户体系架构图怎么做_03,第3张

3.流程设计

3.1 任务规则处理流程

大会员账户体系架构图怎么做 大会员成长体系,大会员账户体系架构图怎么做 大会员成长体系_ci_04,第4张

3.2 拦截器任务规则处理逻辑

  • 使用postHandler,后置拦截
  • 判断url是否需要拦截
  • 判断任务是否完成
  • 更改响应的response,增加任务体系通用响应参数

大会员账户体系架构图怎么做 大会员成长体系,大会员账户体系架构图怎么做 大会员成长体系_拦截器_05,第5张

4.设计及说明

4.1 任务列表接口设计

接口文档地址:

响应数据格式

{
  "errCode": "0",
  "errMsg": "成功",
  "result": [
    {
      "id": 1,
      "taskName": "新人任务",
      "taskCode": "NEW_USER_TASK",
      "taskDesc": "新用户注册一个月(30天)任务",
      "children": [
        {
          "id": "2",
          "taskName": "关注公众号",
          "taskCode": "FLLOW_WECHAT",
          "taskDesc": "",
          "startTime": "2020-12-01",
          "endTime": "2020-12-30",
          "totalTask": "1",
          "completedTask": "0",
          "taskSkipUrlurl:"{\"app\":\"\"/user/info\",\"h5\":\"/app/user/info\"}"  -----1.小程序,2.App
          "children": []
        }
      ],
      "startTime": "2020-12-01",
      "endTime": "2020-12-30",
      "totalTask": "",
      "completedTask": ""
    }
  ]
}

4.2 拦截器处理 及 页面任务列表请求UML

大会员账户体系架构图怎么做 大会员成长体系,大会员账户体系架构图怎么做 大会员成长体系_ci_06,第6张

5.数据库设计

大会员账户体系架构图怎么做 大会员成长体系,大会员账户体系架构图怎么做 大会员成长体系_拦截器_07,第7张

drop table if exists t_task_system_detail;

/*==============================================================*/
/* Table: t_task_system_detail                                  */
/*==============================================================*/
create table t_task_system_detail 
(
   id                   int                  not null  comment "id",
   task_type            varchar(10)          not null comment "任务类型",
   task_name            varchar                        null    comment '任务名称',
   task_code            varchar                        null  comment  '任务code',
   task_desc   			varchar(500)                   null  comment "任务描述", 
   father_id            int                            null  comment  '父id',
   "order"              int                            null  comment '顺序',
   status               varchar                        null  comment  '是否有效:0-无效,1有效',
   task_cycle_type      varchar                        null  comment  '任务周期类型:once- 一次性,cycle-周期性,persist-永久性',
   task_cycle_time      varchar                        null  comment  '任务时间,周期性表示周期时间,一次性任务表示任务必须在时间内完成',
   task_cycle_time_unit varchar                        null  comment  '任务时间戳',
   check_time           varchar                        null	 comment  '考核时间',
   check_time_unit      varchar                        null  comment  '考核时间戳',
   check_task_num       int                            null  comment  '考核时间内完成次数考核',
   is_normal_pattern    varchar                        null  comment '是否正常校验模式:0-否,1是',
   start_time_type      varchar    null  comment '考核开始时间类型:now-当天,RegisterDate-注册日期,Now-7从今天往前7天,Monday-周一,PastTime-往昔',
   orange_high_level    int                            null   comment '非会员橙长值',
   points               int                            null	  comment  '非会员积分',
   vip_orange_high_level int                           null   comment   '会员橙长值' ,
   vip_points           int                            null   comment  '会员积分',
   task_skip_url        varchar                        null   comment  '任务跳转url',
   task_relate_url      varchar                        null   comment  '任务关联url',
   rule_press           varchar(100)                   null	  comment  '规则表达式',
   rule_class           varchar(100)                   null   comment  '规则实现类' ,
   create_time          date                           null,
   create_user          varchar                        null,
   update_time          date                           null,
   update_user          varchar                        null,
   constraint PK_T_TASK_SYSTEM_DETAIL primary key clustered (id)
)ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '任务体系明细表' ROW_FORMAT = Dynamic;
drop table if exists t_task_history;

/*==============================================================*/
/* Table: t_task_history                                        */
/*==============================================================*/
create table t_task_history 
(
   id                   int                            null		comment 'id',
   task_id              int                            null		comment '任务id',
   user_id              int                            null		comment '用户id',
   is_vip               char                           null		comment '是否会员:0-不是,1-是',   
   complete_time        date                           null		comment  '完成时间',
   create_time          date                           null,
   create_user          int                            null,
   update_time          date                           null,
   update_user          int                            null
)ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户任务完成明细表' ROW_FORMAT = Dynamic;

6.需求程序开发难点分析

1. 对接已有任务的接口,对接积分计算保存的接口

  • 任务数量多,需要关联测试的接口会有十几个
  • 对应用户积分保存的接口,需要积分和橙长值接口已经完成

2.任务体系的配置

  • 任务数据量比较多
  • 可以增加后台配置页面,避免直接数据库操作

3.拦截器模块涉及的内容比较广,也比较重要

  • 任务规则,提供通过接口,特殊规则需要自定义实现类进行配置。这一块比较重要,容易出错,所以要化一些时间
  • 使用规则引擎 , 整合规则引擎使用

4.数据缓存

  • 任务数和用户完成记录缓存




https://www.xamrdz.com/lan/52w1937218.html

相关文章: