@startuml
start
partition ﻿构建订单组对象 {
    if(使用了通用优惠券) then (yes)
        :﻿验证并包装优惠券信息;
        :﻿筛选需要均摊的商品，计算总价;
        if(判断是否达到优惠券使用门槛) then (yes)
            if(商品总价小于优惠券优惠金额) then (yes)
                :设置优惠金额为商品总价;
            endif
            :﻿设置关联商品的结算信息;
            :﻿设置关联商品的均摊价;
            :﻿更新关联商品的结算信息;
            :﻿按店铺分组被均摊的商品，设置相应订单的价格信息（总价、原始金额、优惠额）;
        else
            :抛出异常;
        endif
    endif
}
stop
@enduml
