|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
package shop
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"recook/internal/define"
|
|
|
|
|
"recook/internal/model/order"
|
|
|
|
|
"recook/internal/model/user"
|
|
|
|
|
|
|
|
|
@ -22,81 +23,99 @@ func OrderProfit(od order.Information, tx *gorm.DB) error {
|
|
|
|
|
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
|
|
|
|
|
switch od.OrderType {
|
|
|
|
|
case 1: // 零售收益
|
|
|
|
|
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
|
|
|
|
|
if err := tx.First(&sp1, "id = ?", s1.ParentID).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
spID = sp1.ID
|
|
|
|
|
}
|
|
|
|
|
// 20%开店补贴
|
|
|
|
|
if err := tx.Create(order.CreateProfit(spID, order.Shop, base, od.ID)).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
// 30%店铺补贴
|
|
|
|
|
if err := tx.Create(order.CreateProfit(u1.RootID, order.Company, 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 {
|
|
|
|
|
case 1:
|
|
|
|
|
// 店主买
|
|
|
|
|
if err := tx.Create(order.CreateProfit(od.UserID, order.Self, base, od.ID)).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
spID := od.SharerID
|
|
|
|
|
if s1.Level == 1 {
|
|
|
|
|
var sp1 user.Information
|
|
|
|
|
if err := tx.First(&sp1, "id = ?", s1.ParentID).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
spID = sp1.ID
|
|
|
|
|
|
|
|
|
|
if err := tx.Create(order.CreateProfit(od.UserID, order.Brand, base, od.ID)).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
// 20%开店补贴
|
|
|
|
|
if err := tx.Create(order.CreateProfit(spID, order.Shop, base, od.ID)).Error; err != nil {
|
|
|
|
|
|
|
|
|
|
if err := tx.Create(order.CreateProfit(u1.ParentID, order.Shop, base, od.ID)).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
// 30%店铺补贴
|
|
|
|
|
if err := tx.Create(order.CreateProfit(u1.RootID, order.Company, 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
|
|
|
|
|
}
|
|
|
|
|
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(order.CreateProfit(od.UserID, order.Brand, base, od.ID)).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
if err := tx.Create(r2).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := tx.Create(order.CreateProfit(u1.ParentID, order.Shop, base, od.ID)).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
// 30%店铺补贴
|
|
|
|
|
if err := tx.Create(order.CreateProfit(u1.RootID, order.Company, 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(r3).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := tx.Create(r2).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
// 30%店铺补贴
|
|
|
|
|
if err := tx.Create(order.CreateProfit(u1.RootID, order.Company, base, od.ID)).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
case 10:
|
|
|
|
|
// 子公司 100%自购
|
|
|
|
|
if err := tx.Create(order.CreateProfit(od.UserID, order.All, base, od.ID)).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := tx.Create(r3).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
case 2: // 批发收益
|
|
|
|
|
if u1.Level == 2 && u1.IsOffline {
|
|
|
|
|
// 实体店产生批发收益给子公司
|
|
|
|
|
extraBase := decimal.Zero
|
|
|
|
|
for _, v := range ods {
|
|
|
|
|
extra := v.UnitPrice.Sub(v.PurchasePrice).Mul(decimal.NewFromFloat(0.2)).Round(2)
|
|
|
|
|
extraBase = extraBase.Add(
|
|
|
|
|
extra.Mul(decimal.NewFromFloat(define.Coefficient).Round(2)).Mul(decimal.NewFromInt(int64(v.Quantity))))
|
|
|
|
|
}
|
|
|
|
|
if err := tx.Create(order.CreateProfit(u1.RootID, order.Sale, base, od.ID)).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 30%店铺补贴
|
|
|
|
|
if err := tx.Create(order.CreateProfit(u1.RootID, order.Company, base, od.ID)).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
case 10:
|
|
|
|
|
// 子公司 100%自购
|
|
|
|
|
if err := tx.Create(order.CreateProfit(od.UserID, order.All, base, od.ID)).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|