1. 需求概述
1.1. 背景
ERP目前门槛比较高,适用于中大型跨境电商企业,公司为拓展中小型跨境企业市场,特推出ERP1.0充值版,主要是通过购买订单量的方式来引入小型电商公司使用我们ERP。
1.2. 目标
推出ERP1.0充值版,为公司拓展市场份额。
2. 功能设计
2.1. 流程图
2.3. 对接外部接口
2.3.1 判断是否按单收费
select b.*,a.CustomerID,b.RenewalMethod as '续费方式:1:按单续费,2按时续费' from RB_VersionType_Customer a with(nolock) inner join RB_VersionType b with(nolock)
on a.VersionTypeID=b.ID where a.CustomerID=1
这个是产品3部杨文胜组提供的sql,其中续费方式为‘1:按单续费’,代表是按单收费,需要调用赛盒钱包;否则无需调用钱包接口,按照原逻辑下载或者添加订单
2.3.2 赛盒钱包接口
a)客户单量查询接口
协议名称:GetFeeItemList,服务ID:13
b)客户单量扣减接口
协议名称:UpdatePaymentNumber,服务ID:13
c)前往充值跳转地址协议名称:钱包购买跳转接口,服务ID:13
注:客户单量服务ID:13。赛盒钱包对外接口文档见附件!

2.3. 客户订单
2.3.1 需求说明
1、订单下载
在下载前,先判断‘是否按单收费’:
如果不是,则无需调用钱包接口,直接下载订单;
如果是,则调用钱包客户单量查询接口,存在单量则进行下载,否则直接停止下载。
注:如果客户超过7天再充值,那么系统自动同步3天内订单;如果再7天内充值,则接着上次队列继续下载。
2、订单映射
映射前,先判断‘是否按单收费’:
如果不是,则无需调用钱包接口,直接下载订单;
如果是,则调用钱包客户单量扣减接口,扣减成功之后将订单映射客户订单业务表,否则停止映射。
3、手工建单
保存订单的时候,先判断‘是否按单收费’:
如果不是,则无需调用钱包接口,直接保存订单;
如果是,则调用钱包客户单量扣减接口,扣减成功则保存订单成功,否则保存失败并将接口返回错误信息提示给用户。
涉及功能:新建、复制、批量复制、无API导入、赛盒对接API接口
4、客户订单
打开页面,先判断‘是否按单收费’:
如果不是,则无需调用钱包接口,正常显示订单;
如果是,则调用钱包客户单量查询接口,存在单量则页面提示‘当前剩余X单量,预计还可使用Y天;否则页面提示:您当前单量不足,为不影响您订单下载,请及时前往充值!
-----说明-----
a)预计可使用Y天:当前单量X/近7天内平均日单量,如存在小数则向上取整!
b)用户点击蓝色字体【前往充值】则跳转钱包系统地址。
2.3.2 原型页面

- #43398 [10703]不开启单量限制时,订单下载到ERP不受限制
- #43399 [10703]不开启单量限制时,手工新建订单不受限制
- #43400 [10703]不开启单量限制时,复制创建订单不受限制
- #43401 [10703]不开启单量限制时,批量复制订单不受限制
- #43402 [10703]不开启单量限制时,无API导入订单不受限制
- #43403 [10703]不开启单量限制时,赛盒对外接口创建订单不受限制
- #43404 [10703]不开启单量限制时,拆分创建订单不受限制
- #43405 [10703]开启单量限制时,单量充足,订单下载到ERP不受限制
- #43406 [10703]开启单量限制时,单量充足,手工新建订单不受限制
- #43407 [10703]开启单量限制时,单量充足,复制创建订单不受限制
- #43408 [10703]开启单量限制时,单量充足,批量复制订单不受限制
- #43409 [10703]开启单量限制时,单量充足,无API导入订单不受限制
- #43410 [10703]开启单量限制时,单量充足,赛盒对外接口创建订单不受限制
- #43411 [10703]开启单量限制时,单量充足,拆分创建订单不受限制
- #43412 [10703]开启单量限制时,单量不足,订单下载到ERP受限制
- #43413 [10703]开启单量限制时,单量不足,手工新建订单受限制
- #43414 [10703]开启单量限制时,单量不足,复制创建订单受限制
- #43415 [10703]开启单量限制时,单量不足,批量复制订单受限制
- #43416 [10703]开启单量限制时,单量不足,无API导入订单受限制
- #43417 [10703]开启单量限制时,单量不足,赛盒对外接口创建订单受限制
- #43418 [10703]开启单量限制时,单量不足,拆分创建订单受限制
- #43419 [10703]客户订单页面新增提示单量提示

ERP订单下载队列控制
检测按单消费逻辑:
检测是否按单消费逻辑sql,当字段RenewalMethod=1表示为按单续费(不是1或为空或者根本没配置表无数据表示按时,则不进行校验),才进行调用钱包接口获取钱包单量(RemaindNumber)
共享库
select b.*,a.CustomerID,b.RenewalMethod as '续费方式:1:按单续费,2按时续费' from RB_VersionType_Customer a with(nolock) inner join RB_VersionType b with(nolock)
on a.VersionTypeID=b.ID where a.CustomerID= 商户号
注意验证单个商户、多个商户渠道队列下载情况,其中单商户或多商户都未配置RB_VersionType_Customer和RB_VersionType相关数据,多商户只配置其中的商户,多商户全部配置,单商户钱包单量不够,多商户其中部分商户钱包单量不够,多商户钱包单量都不够和单量都足够等情况。
2.业务判断逻辑
需要验证什么都没配置的场景,即以前商户数据,一上线可以运行正常,后面再测试根据实际客户配置进行处理逻辑。
a.当前商户如果不是按单续费,则改商户队列正常执行且下载
b.当前商户如果是按单消费,则判断钱包单量RemaindNumber是否大于0,大于0则正常下载。单量不够,则不会执行订单下载也不会生成订单队列,中间表不会产生订单。
(如果队列最后修改时间updatetime小于最近7天,则自动初始化该商户队列开始时间为三天前0点到结束时间0:30;否则继续之前队列执行下载)。
检测队列执行脚本
SELECT
OS.OrderSourceName,
API.CustomerID,
OS.OrderSourceType,
API.OrderSourceID,
OS.OrderSourceCountry,
Max(PTT.ID) AS TimeIntervalID,
Max(Isnull(Dateadd(MINUTE, -2, PTT.EndTime), CONVERT(CHAR(10), Getdate(), 111))) AS StartTime,
Dateadd(Minute, 30, Max(Isnull(PTT.EndTime, CONVERT(CHAR(10), Getdate(), 111)))) AS EndTime,
MAX(PTT.UpdateTime) AS UpdateTime,
1 AS ProcessType,
(
SELECT Times
FROM RB_ProcessTask_TimeInterval WITH(nolock)
WHERE ID = Max(PTT.ID)
) AS Times
FROM RB_OrderSource_EbayAmazonAPI API WITH(nolock)
LEFT JOIN RB_OrderSource OS WITH(nolock) ON OS.CustomerID = API.CustomerID AND OS.ID = API.OrderSourceID
LEFT JOIN RB_ProcessTask_TimeInterval PTT WITH(nolock) ON OS.CustomerID = PTT.CustomerID AND OS.ID = PTT.OrderSourceID AND PTT.ProcessType=1
WHERE 1=1
and API.IsActive = 1
AND OS.IsActive = 1
AND OS.OrderSourceType = 平台枚举id
AND OS.IsDownloadOrder = 1
AND isnull(IsNewSale ,0)=0
GROUP BY OS.OrderSourceName,
API.CustomerID,
OS.OrderSourceType,
API.OrderSourceID,
API.DevIDSellerId,
API.AppIDMarketplaceId,
API.CertIDAccessKeyId,
API.ServerUrl,
API.UserTokenSecretAccessKey,
API.MerchantToken,
API.EUBAPIPassword,
OS.OrderSourceCountry
Having Max(Isnull(PTT.EndTime, CONVERT(CHAR(10), Getdate(), 111))) <Dateadd(Minute, -50, GETDATE())
ORDER BY MAX(PTT.UpdateTime) desc
单个渠道队列执行情况,每次执行完成,StartTime和EndTime往前推30分钟
select id,Times,[Message],StartTime,EndTime,AddTime,UpdateTime from RB_ProcessTask_TimeInterval where
CustomerID = 1 and OrderSourceID = 5240 and processtype=1 order by AddTime desc。
提供测试验证按钮 shipfeetest。aspx,提供 【速卖通下载】按钮,给来源渠道配置对应的授权信息,点击按钮自动运行订单下载,生成队列(调用成功则时间往前推移。调用失败则提示错误)
自测截图
执行失败
执行成功,满足状态中间表会下载有待处理订单