正在显示
6 个修改的文件
包含
32 行增加
和
11 行删除
| @@ -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 |
-
请 注册 或 登录 后发表评论