model_package - TimYi/FengHuang GitHub Wiki

套餐概念

装修套餐,是一个承诺的每平米装修价格(元/m²)。
现在这个套餐的概念,并没有提供其它服务指标的保障,也就是这个套餐下,用什么料,有什么装修
标准,还没有给用户一些指标的保障。因此区分各个套餐的唯一标识,就是套餐价格。而如装修风
格,装修材料等信息,通过线下和客户协商确定。

套餐字段和含义

套餐列表和详情接口返回的套餐信息,包含用户预约状态等信息,方便前端提供不同的展现。
id:套餐id
salePrice:套餐价格
description:套餐描述
totalNumber:总库存
remainNumber:剩余库存
decorateType:装修类别,暂时没有列表查询的需要,因此改用string字段
mainPic:套餐主图 {
    id:id
    url:图片地址
}

scrambleStartTime:抢购开始时间(如果为空,表示还没有确定下一次抢购计划)
scrambleEndTime:抢购截止时间(如果为空,表示抢完才结束)

【注】:预约、抢购状态的判断,应该以下面的状态字段判断,时间仅供前端展示使用。
status:抢购周期状态,为枚举值:PREPARING 抢购开始之前的准备阶段,
SCRAMBLING 抢购中,FINISHED 抢购结束

hasAppointed:【是否已经预约了指定套餐】,布尔值。这个字段需要传用户token给后台,
否则一律显示false
couldAppoint:【是否可以预约套餐】,布尔值。如果用户信息不完整,或者由于之前预约
过其它套餐等不符合预约套餐规则,返回false
reasonForCantAppoint:【不能预约套餐的原因】,例如:“用户未登录”,“预约未开始”,
“预约期已结束”,“一个月内不能重复预约”

前端需要根据用户是否登录,以及hasAppointed和couldAppoint字段,展示套餐的不同状态。
例如:
1、用户未登录,套餐上显示预约,或者其它信息,引导用户登录,并完善个人信息。
2、用户已经登录,但是没有预约套餐,引导用户预约。
3、如果用户已登录,但是没有预约,并且couldAppoint为false,显示不能预约的原因。
4、用户已登录,并且已经预约,则根据status判断应该显示哪些内容。

【补充】后台计算一组套餐生命周期字段,返回给前端,方便前端判断展示逻辑:
lifeCycle:枚举字段:APPOINT 用户没有预约,并且可以预约,就让用户去预约; 
WAITING 用户已经预约,套餐抢购尚未开始; SCRAMBLE 让用户抢购套餐; 
FINISHED 用户处于无法预约的状态,且套餐抢购已经结束; 
PAY 用户没有可用预约,且不能再次预约,且已经抢购一个套餐并且没有支付,让用户去支付 
COMPLETE 用户完成了预约抢购支付全部内容,并且没有可以用预约,也无法进行下一次预约