在线交易

400 阅读13分钟

业务需求

在线交易

解决人、货、场的事情。

1、可以独立私有化部署

2、可以服务化,支持多租户,saas化

商业模式

1、自营模式,平台即为销售方(卖家、商家),不接入外部商家入驻。经营的商品有统一的采购渠道,面向C端销售。

2、自配送物流,配送范围仅限国内。

3、仓储模式,按照核心城市(省会城市以及次省会城市为主)配置仓库,提前备货。

4、经营商品包括实物商品和虚拟服务商品,且虚拟商品无配送流程,但有服务流程。

5、7 * 24 小时在线交易。

业务流程

会员业务

会员的约束限制

1、散客不可以直接购买商品服务,需要是平台的注册用户方可购买商品服务。

2、注册用户不存在付费会员用户,都是一样的,拒绝付费会员模式,都是平等的。

3、注册会员按照实名手机号模式,一个手机号为一个会员。

会员注册

会员注册和实名认证

1、因为散客不能进行在线交易,所以需要散客注册成为平台的注册用户

2、安全交易法,规定在线交易要实名制,在交易之前,注册用户要实名认证

2.1、平台独立自主的实名认证,姓名,身份证号,身份证正反面,上次这些材料。
平台对接实名开发平台相关结构,上次认证材料,对应开放平台给反馈结果。

2.2、通过借助其他已经有实名认证的平台,间接完成认证,比如,微信平台,支付宝平台,银行平台等。

2.3、目前比较流行的玩法,是人脸识别认证,要和绑定的实名信息一致,同时配合人像识别技术。

说明: 注册和认证最好是分为两个步骤完成。注册尽可能小的信息量。实名认证,一定要全,不能草率了事。

购买行为约束

1、先款后货的模式

2、微信、支付宝的付款方式

3、逆向流程退款,先货后款,原路返回

4、注册会员,可以直接购买商品,也可以把商品添加至购物车,从购物车发起(选中的)商品购买。理论上普通交易均是需要走购物车流程的

4.1、非普通交易的,遵循平台活动的流程,可以是走购物车,也可以不走购物车,看平台的具体活动的约束限制

供应链业务

采购部门和供应商之间的业务往来,以合同、对公账务为基础,基于在线化处理。

供应链业务流程图解

业务-供应链.png

1、采供部门,从代理商、品牌商完成采购计划

2、供应商,自配送、物流配送,把货品送至仓库

3、公对公的结算(供应商-平台财务)

*4、仓储,WS管理入库 *

供应链的主要业务流程明细

1、类目管理(同销售类目)

2、品牌授权接入

2.1、品牌授权登记

2.2、品牌接入,绑定类目

3、供应商接入

3.1、代理类供应商接入(二道贩子)

3.2、代理供应商绑定品牌,绑定类目

3.3、品牌类供应商接入(品牌商)

3.4、品牌商绑定类目

4、采购资金管理

4.1、采购资金申请

4.2、采购资金审批

4.3、归还剩余采购资金

4.4、采购资金花费(对公转账申请、登记)

4.4、采购资金(已花费)回撤(对公转账返还、撤销)

5、采购清结算(和本司财务)

5.1、采购业务科目登记

5.2、发票报销

5.3、采购资金浮动补差额

5.4、白条(业务其他开销)

6、采购单业务

6.1、采购单申请(合同草稿)

6.1.1、采购单创建

6.1.2、起草采购合同

6.2、采购单审批(正常审批完,是正式合同)

6.3、采购单下发给供应商

6.4、采购单回馈

6.5、采购单,附加物流信息(自配送),收货预约单申请

6.6、入库单同步(收货后入库,同步货权给货主)

6.7、采购员向供应商索要发票,并登记到采购单上

6.8、货主货权委托(委托给平台销售)

7、其他需求和逆向需求(如采购单退货、层次品换退货等)

仓储业务

【说明: 写完商城后,到卖家履约模块,再回来写仓储】

实体仓

仓储(实体仓)管理

说明: 实体仓,可以是供应链中的一个子业务,也可以是独立业务。本产品把仓储当做独立的业务模块,单独处理。

虚拟仓(实体仓对外能力)

销售虚拟仓(对标虚拟仓)

商城

商城业务的基础模块 : 商品销售类型,品牌商,商品以及销售属性。

商城业务的闭环,要牵扯供应链侧。商城负责卖商品,商品的进货,由采购部门负责,形成业务闭环。如下图

业务-商城和供应链.png

商品销售类目

众多的商品,分门别类。

类目要具有层级,并且每个层级划分的方式要统一标准。

品牌商

产品需求

会员领域

【】

会员模型

1、非注册会员(散客),此类消费用户可以浏览平台商品,不能直接购买商品。想要购买商品,需要转化,从散客身份,转换为注册会员身份。经过会员注册流程。

2、注册会员,由散客转换而来。可以参与平台的在线交易活动。【说明:注册会员,后续均简称会员

3、会员的身份标识是存活的移动手机号(电信、联通、移动,目前国内此3家。)

3.1、经过手机号背后的实名制方式,配合通信商,完成实名认证。

4、会员属性包括两部分,其一是会员自身的属性信息,其二是平台给会员标记的业务属性。

4.1、会员自身属性详情:注册手机号、昵称、真实姓名、联系电话(默认取注册手机号)、性别、出生时间,邮箱地址、职业、主要收入来源、等等(平台经营期间会扩展会员自身属性)

4.2、会员的平台标记属性:购买频次、消费能力、消费分类等等(也会随着平台经营期间有所变动)

5、会员在注册成功的时候,平台会分配一个唯一的身份标识号(简称平台账号,可以用户平台系统的登录账号。)

5.1、平台的会员登录账号,平台账号、注册手机号、邮箱。

账号登录需求

1、会员登录到平台系统服务中,遵循账号+密码[+新设备注册手机号验证码]、注册手机号+验证码、邮箱+密码[+新设备邮箱激活登录设备]的模式,简称平台账号登录,手机号登录、邮箱登录

2、首次登录平台系统服务,需要设置密码[也可以选择放弃设置密码,后续登录时候均会提示],没有设置密码的只能通过手机号和邮箱的方式登录,不能通过平台账号的方式登录

3、登录时,会记录登录的设备地址信息(mac地址),网络IP地址(支持IP4和IP6),登录时间等,生成登录履历记录。

4、登录安全风控,只有被标记为常用登录设备,才可以使用平台账号+密码的模式登录,不需要验证。但频繁登录退出操作,会触发风控,需要验证注册手机号,达到风控的安全阈值,会锁定账号禁止登录,需要联系平台人工客服协商解决。

5、登录成功会绑定角色和授权,生成有效token,token是有时效的,PC端默认20min,移动端默认是7天,H5端默认是24小时。

6、登录退出,主动退出,长时间不操作,达到空闲等待最大阈值时候,自动退出,同时清除token,在登录期间操作,会触发token有效期续租。

会员完善信息

散户在注册成为会员时候,有些信息的填写是没有提供的,也有些信息,是要在注册成为会员后,自主发起完善的。

1、邮箱认证

2、微信认证

3、基本信息补充和变更

4、头像设置和变更

平台中角色划分

1、平台商家

产品专员

主要职责是,按照商品大类目分类,团队式提供产品介绍和咨询业务。

产品运营

主要职责,负责商品的销售管理以及营销业务。

记:产品定价和执行必须是分2波员工,按工单操作,操作员一月一换,1年内不能重复用人。

品牌专员

按照产品的类目划分,以及品牌商维度划分,负责品牌业务以及配合运营人员的营销业务。

2、消费者(C端消费者)

3、技术支持

商品的技术支持

4、督查/监管

权限管理

主体是采用用户、角色、权限的思想(RBAC),完成角色的授权。

同时把权限分散开、粒度切割更小。

平台的所有用户都要要先认证,授权,同时任何线上(或者线下)的操作记录都要记录操作履历,其中涉及操作人,操作时间,操作内容。

供应链领域

品牌接入

厂商对接

采购业务

仓库管理

设计文档

产品文档

会员领域产品交互流程

会员注册流程

1、散客填写注册手机号

2、平台对注册手机号进行识别的认证。注册手机号要是存活的、在用的状态(最低要求能收到短信验证码),一个手机号只能注册一个会员。

3、满足手机号认证规则的,方可进行会员注册,此时可以填写会员的注册信息(包括,必填信息和可选信息)

3.1、必填信息:昵称、真实姓名(会和注册手机号的实名制进行比对)、出生时间

3.2、可选信息:联系电话、性别、职业、邮箱

4、在填写完基本信息后,发起会员注册申请

5、会员注册申请结果,申请成功,平台会分配一个平台账号,并自动授权(会员角色对应的权限)

5.1、会员注册不成功,会给出明确的信息,说明不成功的原因

产品流程-会员注册申请.png

【注册失败异常-人工解决流程】

1、用户提供身份证、本人手持身份证照片和注册申请申明视频

2、平台人工审核,并记录审计档案。

会员登录平台系统服务流程

1、手机号+验证码模式

2、邮箱+激活链接模式

3、平台账号+密码模式

说明:账号操作安全风控,会对上述3种登录模式演变,平台账号+密码模式是基本会衍生出平台账号+密码+手机号验证码模式。

login按钮或者链接触发到登录页,按照需求选择对应的登录模式,可以来回切换。

1、手机号登录模式

1、用户填写注册手机号,作为登录账号

2、点击发送验证码,会触发UI端的交互验证码,和后端的动态验证码(生成验证码参考值),发送验证码到登录账号的SIM卡上,

2.1 验证码发送,前端不能频繁触发发送验证码,验证码发送有安全阈值检查,达到安全阈值则提示不能触发

3、在验证码失效期内,完成验证码的填写,提交发起登录服务

4、后端会比对,登录账号的合法性,以及验证码的有效性。

5、登录结果

5.1、登录成功,认证(登录服务中可以整合认证)和授权,生成token,返回登录成功(如果是带指定连接的,返回指定连接,如未登录直接购买X商品,登录成功后直接到X商品添加到购物车,或者直接生成预提交的订单),跳转到商品首页,或者当前在浏览的原页。【具体详情参看,登录成功链接调整细化流程】

5.2、登录失败会返回提示,验证码错误、账号异常等

手机号登录流程

手机号登录.png

2、邮箱登录模式

3、平台账号模式-安全

4、平台账号模式-风控

原型文档

UI展示省略

架构设计

企业产品架构

待补充

技术架构(服务架构)

待补充

组网架构

待补充

流程设计

存储模型

约定:默认字段都是非空的,默认值 ''

会员模型

会员基础信息表

id  bigint(64) 逻辑主键,非空自增
plat_member_code varchar(64) 会员编号
register_mobile varchar(16) 注册手机号
nickname varchar(64) 昵称
mail varchar(128) 邮箱地址

会员其他信息

会员实名认证档案

id  bigint(64) 逻辑主键,非空自增
plat_member_code varchar(64) 会员编号
register_mobile varchar(16) 注册手机号
real_name varchar(64) 姓名
born_date_year  datetime 出生年份 YYYY
born_date_month varcahr(16) 出生月份 MM
born_date_day varchar(16) 出生日 DD
identity_no varchar(32) 身份证号
id_card_expire_date datetime 身份证有效期 YYYY-MM-DD
sex varchar(16) 性别

会员平台标记信息表

会员拓展信息表

接口文档

区分标准

接口路径以/c开头均为终端接口

接口路径以/m开头均为管理管接口

接口名以/s开头,终端和管理端共用接口

会员服务

检查手机号是否已经注册会员

/s/mobile/check/加密手机号

#请求报文示例
## 13800000000 加密后为 XXX...XXX[32位]

/s/mobile/check/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

#响应报文示例

{
   "code":"success",
   "message":"success",
   "data":{
       "result":"1"
   }
}

result 枚举说明:

1 已经注册
0 没有注册
-1 异常号码

手机号生成验证码,并发送到手机号SIM卡上

/s/mobile/code/密文手机号

# 请求报文示例
/s/mobile/XXX32BIT

# 响应报文示例
{
   "code":"错误码",
   "message":"提示信息"
   "data":{
      "empty":"nio"
   }
}

会员注册申请

/c/member/register

POST
# 请求报文示例
## carrier --1默认连接 2原连接 3计算连接
{
  "mobile":"加密注册手机号",
  "code":"888999",
  "nickname":"小青青",
  "realName":"王小青",
  "deviceMac":"XXX-XXX",
  "carrier":"1xxx",
  "inviteCode":""
}

# 响应报文示例
{
   "code":"错误码",
   "message":"提示信息",
   "data":{
       "account":"登录账号",
       "tip":"通知内容"
   }
}

账号登录

POST
# 请求报文示例
{
  "mobile":"密文手机号",
  "code":"验证码",
  "deviceMac":"登录设备mac号",
  "ip":"ip地址",
  "pwd":"加密后的登录密码",
  "email":"邮箱账号",
  "platAccount":"平台账号",
  "model":"登录模式",
  "terminalType":"终端类型"
  
}

# 响应报文示例
{
   "code":"错误码",
   "message":"提示信息",
   "data":{
     "token":"token值",
     "expire":"失效时间",     
     "role":[
       {
          "roleCode":"角色编号",
          "roleName":"名称"
       },
       {
          "roleCode":"角色编号",
          "roleName":"名称"
       }
     ]
   }
}

## 角色对应的权限如下,不返回
"permission":[
           {
             "permissionCode":"权限编号",
             "permissionName":"权限操作名称",
             "permissionValue":"权限值"
           },
           {
             "permissionCode":"权限编号",
             "permissionName":"权限操作名称",
             "permissionValue":"权限值"
           }
         ]

token 续租

JOB
# 请求报文示例
## doit 1 pc续租 2app续租 3 h5续租
{
   "pc":30,
   "app":60 * 24 *7,
   "h5":"60 * 24",
   "doit":1
   
}