You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.0 KiB

package shop
import (
"recook/internal/model/order"
"recook/internal/model/user"
"github.com/jinzhu/gorm"
"github.com/shopspring/decimal"
)
func OrderProfit(od order.Information, tx *gorm.DB) error {
var u1 user.Information
tx.First(&u1, "id = ?", od.UserID)
var s1 user.Information
tx.First(&s1, "id = ?", od.SharerID)
var ods []order.GoodsDetail
tx.Find(&ods, "order_id = ?", od.ID)
base := decimal.Zero
for _, v := range ods {
base = base.Add(v.GetBase().Mul(decimal.NewFromInt(int64(v.Quantity))))
}
condition := od.SharerID == od.UserID
switch u1.Level {
case 0:
// 会员买
if condition {
// 自购平台100%
return nil
} else if s1.Level != 0 {
// 40%导购
if err := tx.Create(order.CreateProfit(od.SharerID, order.Guide, base, od.ID)).Error; err != nil {
return err
}
// 10%品牌
if err := tx.Create(order.CreateProfit(od.SharerID, order.Brand, base, od.ID)).Error; err != nil {
return err
}
spID := od.SharerID
if s1.Level == 1 {
var sp1 user.Information
tx.First(&sp1, "user_id = ?", s1.ParentID)
spID = sp1.ID
}
// 20%平台
if err := tx.Create(order.CreateProfit(spID, order.Shop, base, od.ID)).Error; err != nil {
return err
}
}
case 1:
// 店主买
if err := tx.Create(order.CreateProfit(od.UserID, order.Self, base, od.ID)).Error; err != nil {
return err
}
if err := tx.Create(order.CreateProfit(od.UserID, order.Brand, base, od.ID)).Error; err != nil {
return err
}
if err := tx.Create(order.CreateProfit(u1.ParentID, order.Shop, base, od.ID)).Error; err != nil {
return err
}
case 2:
// 店铺买
r1 := order.CreateProfit(od.UserID, order.Self, base, od.ID)
r2 := order.CreateProfit(od.UserID, order.Brand, base, od.ID)
r3 := order.CreateProfit(od.UserID, order.Shop, base, od.ID)
if err := tx.Create(r1).Error; err != nil {
return err
}
if err := tx.Create(r2).Error; err != nil {
return err
}
if err := tx.Create(r3).Error; err != nil {
return err
}
}
return nil
}