|
...
|
...
|
@@ -7,6 +7,7 @@ import ( |
|
|
|
"gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/transaction"
|
|
|
|
"gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/repository"
|
|
|
|
"gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/utils"
|
|
|
|
"gitlab.fjmaimaimai.com/mmm-go/partner/pkg/log"
|
|
|
|
"gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol"
|
|
|
|
protocolx "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol/auth"
|
|
|
|
"strings"
|
|
...
|
...
|
@@ -26,8 +27,8 @@ func (svr *PgLoginService) Init(phone string) (err error) { |
|
|
|
UsersRepository, _ = repository.NewUsersRepository(svr.transactionContext)
|
|
|
|
)
|
|
|
|
svr.Phone = phone
|
|
|
|
_, svr.PartnerInfo, _ = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC"})
|
|
|
|
_, svr.Users, _ = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC"})
|
|
|
|
_, svr.PartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC"})
|
|
|
|
_, svr.Users, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC"})
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -64,7 +65,7 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { |
|
|
|
OrderDao, _ = dao.NewOrderBaseDao(svr.transactionContext)
|
|
|
|
PartnerCategoryInfoRepository, _ = repository.NewPartnerCategoryInfoRepository(svr.transactionContext)
|
|
|
|
companyList []*domain.Company
|
|
|
|
partnerCategory []*domain.PartnerCategoryInfo
|
|
|
|
allPartnerCategory []*domain.PartnerCategoryInfo
|
|
|
|
)
|
|
|
|
doGetCompanyIds := func() []int64 {
|
|
|
|
var companies []int64
|
|
...
|
...
|
@@ -81,12 +82,18 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { |
|
|
|
return array
|
|
|
|
}
|
|
|
|
companyList = svr.GetCompanyList(doGetCompanyIds)
|
|
|
|
|
|
|
|
if len(companyList) == 0 {
|
|
|
|
return nil, nil
|
|
|
|
}
|
|
|
|
totalBonus, e := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: doGetPartnerIds()})
|
|
|
|
if e != nil {
|
|
|
|
return nil, e
|
|
|
|
}
|
|
|
|
_, partnerCategory, _ = PartnerCategoryInfoRepository.Find(map[string]interface{}{"sortById": domain.ASC})
|
|
|
|
_, allPartnerCategory, e = PartnerCategoryInfoRepository.Find(map[string]interface{}{"sortById": domain.ASC})
|
|
|
|
if e != nil {
|
|
|
|
log.Error(e)
|
|
|
|
return nil, e
|
|
|
|
}
|
|
|
|
var companys = make([]*Company, 0)
|
|
|
|
for i := range companyList {
|
|
|
|
c := companyList[i]
|
|
...
|
...
|
@@ -103,9 +110,15 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { |
|
|
|
bonus, _ := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: partner.Id})
|
|
|
|
item := &Company{
|
|
|
|
CompanyBase: newCompanyBase(c),
|
|
|
|
IncomePercent: computeBonusPercent(totalBonus.Bonus, bonus.Bonus),
|
|
|
|
IncomePercent: computeBonusPercent(totalBonus.Bonus*100, bonus.Bonus),
|
|
|
|
DividendMoney: bonus.Bonus,
|
|
|
|
JoinWays: svr.GetJoinWays(partnerCategory, partner, bonus.Bonus),
|
|
|
|
JoinWays: svr.GetJoinWays(allPartnerCategory, partner, bonus.Bonus),
|
|
|
|
}
|
|
|
|
//当所有公司的总收入都为0时,
|
|
|
|
//初始总收入=公司数*1
|
|
|
|
//否则计算的比例始终都为0
|
|
|
|
if totalBonus.Bonus == 0 {
|
|
|
|
item.IncomePercent = computeBonusPercent(totalBonus.Bonus+float64(len(companyList)), bonus.Bonus+1) * 100
|
|
|
|
}
|
|
|
|
companys = append(companys, item)
|
|
|
|
}
|
|
...
|
...
|
@@ -125,8 +138,8 @@ func (svr *PgLoginService) ManagerStaticInfo() (interface{}, error) { |
|
|
|
)
|
|
|
|
doGetCompanyIds := func() []int64 {
|
|
|
|
var companies []int64
|
|
|
|
for i := range svr.PartnerInfo {
|
|
|
|
companies = append(companies, svr.PartnerInfo[i].CompanyId)
|
|
|
|
for i := range svr.Users {
|
|
|
|
companies = append(companies, svr.Users[i].CompanyId)
|
|
|
|
}
|
|
|
|
return companies
|
|
|
|
}
|
|
...
|
...
|
@@ -146,7 +159,7 @@ func (svr *PgLoginService) ManagerStaticInfo() (interface{}, error) { |
|
|
|
}
|
|
|
|
|
|
|
|
response := make(map[string]interface{})
|
|
|
|
response["id"] = protocolx.AdminTypePartner
|
|
|
|
response["id"] = protocolx.AdminTypeManager
|
|
|
|
response["name"] = svr.PartnerInfo[0].PartnerName
|
|
|
|
response["companys"] = companys
|
|
|
|
return response, nil
|
|
...
|
...
|
@@ -160,7 +173,8 @@ func (svr *PgLoginService) GetCompanyList(funcGetCompanyIds func() []int64) []*d |
|
|
|
if len(companies) == 0 {
|
|
|
|
return companyList
|
|
|
|
}
|
|
|
|
if _, v, e := CompanyRepository.Find(map[string]interface{}{"companies": companies, "status": 1, "sortByCreateTime": domain.ASC}); e != nil {
|
|
|
|
if _, v, e := CompanyRepository.Find(map[string]interface{}{"inCompanyIds": companies, "status": 1, "sortByCreateTime": domain.ASC}); e != nil {
|
|
|
|
log.Error(e)
|
|
|
|
return companyList
|
|
|
|
} else {
|
|
|
|
companyList = v
|
|
...
|
...
|
@@ -176,23 +190,23 @@ func (svr *PgLoginService) GetJoinWays(partnerCategory []*domain.PartnerCategory |
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
var (
|
|
|
|
totalBonus float64
|
|
|
|
businessBonus float64
|
|
|
|
BusinessBonusRepository, _ = repository.NewBusinessBonusRepository(svr.transactionContext)
|
|
|
|
)
|
|
|
|
for i := range partnerInfo.PartnerCategoryInfos {
|
|
|
|
c := partnerInfo.PartnerCategoryInfos[i]
|
|
|
|
switch c.Id {
|
|
|
|
case 1:
|
|
|
|
totalBonus += bonus
|
|
|
|
case 2:
|
|
|
|
if one, e := BusinessBonusRepository.FindOne(map[string]interface{}{"partner_id": partnerInfo.Id}); e == nil {
|
|
|
|
businessBonus = one.Bonus
|
|
|
|
totalBonus += businessBonus
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//var (
|
|
|
|
// totalBonus float64
|
|
|
|
// businessBonus float64
|
|
|
|
// BusinessBonusRepository, _ = repository.NewBusinessBonusRepository(svr.transactionContext)
|
|
|
|
//)
|
|
|
|
//for i := range partnerInfo.PartnerCategoryInfos {
|
|
|
|
// c := partnerInfo.PartnerCategoryInfos[i]
|
|
|
|
// switch c.Id {
|
|
|
|
// case 1:
|
|
|
|
// totalBonus += bonus
|
|
|
|
// case 2:
|
|
|
|
// if one, e := BusinessBonusRepository.FindOne(map[string]interface{}{"partner_id": partnerInfo.Id}); e == nil {
|
|
|
|
// businessBonus = one.Bonus
|
|
|
|
// totalBonus += businessBonus
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
var joinWays []joinWay
|
|
|
|
for i := range partnerCategory {
|
|
|
|
c := partnerCategory[i]
|
|
...
|
...
|
@@ -202,14 +216,18 @@ func (svr *PgLoginService) GetJoinWays(partnerCategory []*domain.PartnerCategory |
|
|
|
Type: int(c.Id),
|
|
|
|
Name: c.Name,
|
|
|
|
}
|
|
|
|
if c.Id == 1 {
|
|
|
|
item.Percent = computeBonusPercent(totalBonus, bonus) * 100
|
|
|
|
} else if c.Id == 2 {
|
|
|
|
item.Percent = computeBonusPercent(totalBonus, businessBonus) * 100
|
|
|
|
}
|
|
|
|
//if c.Id == 1 {
|
|
|
|
// item.Percent = computeBonusPercent(totalBonus, bonus) * 100
|
|
|
|
//} else if c.Id == 2 {
|
|
|
|
// item.Percent = computeBonusPercent(totalBonus, businessBonus) * 100
|
|
|
|
//}
|
|
|
|
joinWays = append(joinWays, item)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for i := range joinWays {
|
|
|
|
joinWays[i].Percent = computeBonusPercent(float64(len(joinWays)), 1) * 100
|
|
|
|
}
|
|
|
|
return joinWays
|
|
|
|
}
|
|
|
|
func newCompanyBase(company *domain.Company) protocol.CompanyBase {
|
...
|
...
|
|