作者 yangfu

增加:分红修改

@@ -12,6 +12,8 @@ type BusinessBonus struct { @@ -12,6 +12,8 @@ type BusinessBonus struct {
12 PartnerInfoId int64 `json:"partnerInfoId"` 12 PartnerInfoId int64 `json:"partnerInfoId"`
13 // 应收分红 13 // 应收分红
14 Bonus float64 `json:"bonus"` 14 Bonus float64 `json:"bonus"`
  15 + // 已收分红
  16 + BonusHas float64 `json:"bonusHas"`
15 // 未收分红 17 // 未收分红
16 BonusNot float64 `json:"bonusNot"` 18 BonusNot float64 `json:"bonusNot"`
17 // 分红支出 19 // 分红支出
@@ -53,9 +53,9 @@ func (dao *OrderBaseDao) OrderBonusStatics(option domain.OrderBonusQuery) (rsp d @@ -53,9 +53,9 @@ func (dao *OrderBaseDao) OrderBonusStatics(option domain.OrderBonusQuery) (rsp d
53 tx := dao.transactionContext.PgTx 53 tx := dao.transactionContext.PgTx
54 q := tx.Model(new(models.OrderBase)) 54 q := tx.Model(new(models.OrderBase))
55 q.ColumnExpr("count(*) count") 55 q.ColumnExpr("count(*) count")
56 - q.ColumnExpr("sum(plan_partner_bonus) bonus") 56 + q.ColumnExpr("sum((case when use_order_count>0 then use_partner_bonus else plan_partner_bonus end)) bonus")
57 q.ColumnExpr("sum(partner_bonus_expense) bonus_expense") 57 q.ColumnExpr("sum(partner_bonus_expense) bonus_expense")
58 - q.ColumnExpr("sum(plan_order_amount) total_order_amount") 58 + q.ColumnExpr("sum((case when use_order_count>0 then use_order_amount else plan_order_amount end)) total_order_amount")
59 if option.PartnerId > 0 { 59 if option.PartnerId > 0 {
60 q.Where(`"order_base".partner_id =?`, option.PartnerId) 60 q.Where(`"order_base".partner_id =?`, option.PartnerId)
61 } 61 }
@@ -105,10 +105,14 @@ A left join @@ -105,10 +105,14 @@ A left join
105 ( 105 (
106 SELECT partner_id,count(*) total,sum(amount) amount,sum(bonus) bonus,sum(bonus_expense) bonus_expense FROM 106 SELECT partner_id,count(*) total,sum(amount) amount,sum(bonus) bonus,sum(bonus_expense) bonus_expense FROM
107 ( 107 (
108 - SELECT partner_id,plan_order_amount amount, plan_partner_bonus bonus,partner_bonus_expense bonus_expense FROM "order_base" AS "order_base" 108 + SELECT partner_id,
  109 + (case when use_order_count>0 then use_order_amount else plan_order_amount end) amount,
  110 + (case when use_order_count>0 then use_partner_bonus else plan_partner_bonus end) bonus,
  111 + partner_bonus_expense bonus_expense FROM "order_base" AS "order_base"
109 WHERE (partner_id in (?)) and order_type =1 112 WHERE (partner_id in (?)) and order_type =1
110 UNION 113 UNION
111 - SELECT partner_info_id partner_id,0 amount, bonus bonus, bonus_expense bonus_expense FROM business_bonus 114 + SELECT partner_info_id partner_id,
  115 + 0 amount, bonus bonus, bonus_expense bonus_expense FROM business_bonus
112 WHERE (partner_info_id in (?)) and is_disable=1 116 WHERE (partner_info_id in (?)) and is_disable=1
113 ) B 117 ) B
114 GROUP BY partner_id 118 GROUP BY partner_id
@@ -70,9 +70,11 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { @@ -70,9 +70,11 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) {
70 } 70 }
71 var ( 71 var (
72 OrderDao, _ = dao.NewOrderBaseDao(svr.transactionContext) 72 OrderDao, _ = dao.NewOrderBaseDao(svr.transactionContext)
  73 + BusinessBonusDao, _ = dao.NewBusinessBonusDao(svr.transactionContext)
73 PartnerCategoryInfoRepository, _ = repository.NewPartnerCategoryInfoRepository(svr.transactionContext) 74 PartnerCategoryInfoRepository, _ = repository.NewPartnerCategoryInfoRepository(svr.transactionContext)
74 companyList []*domain.Company 75 companyList []*domain.Company
75 allPartnerCategory []*domain.PartnerCategoryInfo 76 allPartnerCategory []*domain.PartnerCategoryInfo
  77 + BusinessBonusRepository, _ = repository.NewBusinessBonusRepository(svr.transactionContext)
76 ) 78 )
77 doGetCompanyIds := func() []int64 { 79 doGetCompanyIds := func() []int64 {
78 var companies []int64 80 var companies []int64
@@ -96,7 +98,16 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { @@ -96,7 +98,16 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) {
96 if e != nil { 98 if e != nil {
97 return nil, e 99 return nil, e
98 } 100 }
  101 + if businessBonus, e := BusinessBonusDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: doGetPartnerIds(), IsDisable: 1}); e == nil {
  102 + totalBonus.Bonus += businessBonus.Bonus
  103 + }
99 _, allPartnerCategory, e = PartnerCategoryInfoRepository.Find(map[string]interface{}{"sortById": domain.ASC}) 104 _, allPartnerCategory, e = PartnerCategoryInfoRepository.Find(map[string]interface{}{"sortById": domain.ASC})
  105 + var mapPartnerBussinessBonus = make(map[int64]*domain.BusinessBonus)
  106 + if _, bussinessBonus, e := BusinessBonusRepository.Find(map[string]interface{}{"inPartnerIds": doGetPartnerIds(), "isDisable": 1}); e == nil {
  107 + for _, v := range bussinessBonus {
  108 + mapPartnerBussinessBonus[v.PartnerInfoId] = v
  109 + }
  110 + }
100 if e != nil { 111 if e != nil {
101 log.Error(e) 112 log.Error(e)
102 return nil, e 113 return nil, e
@@ -115,18 +126,15 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { @@ -115,18 +126,15 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) {
115 continue 126 continue
116 } 127 }
117 bonus, _ := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: partner.Id, OrderType: domain.OrderReal}) 128 bonus, _ := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: partner.Id, OrderType: domain.OrderReal})
  129 + if v, ok := mapPartnerBussinessBonus[partner.Id]; ok {
  130 + bonus.Bonus += v.Bonus
  131 + }
118 item := &Company{ 132 item := &Company{
119 CompanyBase: newCompanyBase(c), 133 CompanyBase: newCompanyBase(c),
120 IncomePercent: computeBonusPercent(totalBonus.Bonus, bonus.Bonus*100), 134 IncomePercent: computeBonusPercent(totalBonus.Bonus, bonus.Bonus*100),
121 DividendMoney: utils.Decimal(bonus.Bonus), 135 DividendMoney: utils.Decimal(bonus.Bonus),
122 JoinWays: svr.GetJoinWays(allPartnerCategory, partner, bonus.Bonus), 136 JoinWays: svr.GetJoinWays(allPartnerCategory, partner, bonus.Bonus),
123 } 137 }
124 - //当所有公司的总收入都为0时,  
125 - //初始总收入=公司数*1  
126 - //否则计算的比例始终都为0  
127 - if totalBonus.Bonus == 0 {  
128 - item.IncomePercent = computeBonusPercent(totalBonus.Bonus+float64(len(companyList)), bonus.Bonus+1) * 100  
129 - }  
130 companys = append(companys, item) 138 companys = append(companys, item)
131 } 139 }
132 140
@@ -13,6 +13,8 @@ type BusinessBonus struct { @@ -13,6 +13,8 @@ type BusinessBonus struct {
13 PartnerInfoId int64 13 PartnerInfoId int64
14 // 应收分红 14 // 应收分红
15 Bonus float64 15 Bonus float64
  16 + // 已收分红
  17 + BonusHas float64
16 // 未收分红 18 // 未收分红
17 BonusNot float64 19 BonusNot float64
18 // 分红支出 20 // 分红支出
@@ -2,6 +2,7 @@ package repository @@ -2,6 +2,7 @@ package repository
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "github.com/go-pg/pg/v10"
5 "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/domain" 6 "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/domain"
6 "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/models" 7 "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/models"
7 "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/transaction" 8 "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/transaction"
@@ -66,7 +67,11 @@ func (repository *BusinessBonusRepository) Find(queryOptions map[string]interfac @@ -66,7 +67,11 @@ func (repository *BusinessBonusRepository) Find(queryOptions map[string]interfac
66 BusinessBonuss := make([]*domain.BusinessBonus, 0) 67 BusinessBonuss := make([]*domain.BusinessBonus, 0)
67 query := NewQuery(tx.Model(&BusinessBonusModels), queryOptions). 68 query := NewQuery(tx.Model(&BusinessBonusModels), queryOptions).
68 SetOrder("create_time", "sortByCreateTime"). 69 SetOrder("create_time", "sortByCreateTime").
69 - SetOrder("update_time", "sortByUpdateTime") 70 + SetOrder("update_time", "sortByUpdateTime").
  71 + SetWhere("is_disable = ?", "isDisable")
  72 + if v, ok := queryOptions["inPartnerIds"]; ok {
  73 + query.Where("partner_info_id in (?)", pg.In(v.([]int64)))
  74 + }
70 var err error 75 var err error
71 if query.AffectRow, err = query.SelectAndCount(); err != nil { 76 if query.AffectRow, err = query.SelectAndCount(); err != nil {
72 return 0, BusinessBonuss, err 77 return 0, BusinessBonuss, err