|
@@ -134,20 +134,31 @@ func GetPrList(req *types.CoopHistoryReq) (result []*ResultData, size_1, size_2,
|
|
|
rs1, rs2 := GetData(propertyForm, pTmp.BuyerId)
|
|
|
r1 := rs1[pTmp.BuyerId]
|
|
|
r2 := rs2[pTmp.BuyerId]
|
|
|
+ winners, agency := []string{}, []string{}
|
|
|
+ for _, m := range r1 {
|
|
|
+ winners = append(winners, common.ObjToString(m["name"]))
|
|
|
+ }
|
|
|
+ for _, m := range r2 {
|
|
|
+ agency = append(agency, common.ObjToString(m["name"]))
|
|
|
+ }
|
|
|
+ logx.Info("CandidateChannel LastTimeCoopBath start ", req.PositionId, " ", pTmp.BuyerId, " ", len(winners), " ", len(agency))
|
|
|
+ ltcs1, ltcs2 := LastTimeCoopBath(req.PositionId, pTmp.BuyerId, winners, agency)
|
|
|
+ logx.Info("CandidateChannel LastTimeCoopBath over ", req.PositionId)
|
|
|
if r1 != nil && len(r1) > 0 {
|
|
|
size_1 = int64(len(r1))
|
|
|
if req.ChannelType == "0" || req.ChannelType == "1" {
|
|
|
for _, m := range r1 {
|
|
|
- near, zbtime := LastTimeCoop(pTmp.BuyerId, common.ObjToString(m["name"]), "adiffb")
|
|
|
tmp := ResultData{
|
|
|
SourceType: "adiffb",
|
|
|
EntName: common.ObjToString(m["name"]),
|
|
|
ProjectNum: common.IntAll(m["coop_size"]),
|
|
|
TotalAmount: common.Float64All(m["coop_amount"]),
|
|
|
- RecentTime: zbtime,
|
|
|
- NearlyYears: near,
|
|
|
BuyerId: pTmp.BuyerId,
|
|
|
}
|
|
|
+ if ltc := ltcs1[common.ObjToString(m["name"])]; ltc != nil {
|
|
|
+ tmp.NearlyYears = ltc.Near
|
|
|
+ tmp.RecentTime = ltc.ZbTime
|
|
|
+ }
|
|
|
result = append(result, &tmp)
|
|
|
}
|
|
|
}
|
|
@@ -156,16 +167,17 @@ func GetPrList(req *types.CoopHistoryReq) (result []*ResultData, size_1, size_2,
|
|
|
size_3 = int64(len(r2))
|
|
|
if req.ChannelType == "0" || req.ChannelType == "3" {
|
|
|
for _, m := range r2 {
|
|
|
- near, zbtime := LastTimeCoop(pTmp.BuyerId, common.ObjToString(m["name"]), "agency")
|
|
|
tmp := ResultData{
|
|
|
SourceType: "agency",
|
|
|
EntName: common.ObjToString(m["name"]),
|
|
|
ProjectNum: common.IntAll(m["coop_size"]),
|
|
|
TotalAmount: common.Float64All(m["coop_amount"]),
|
|
|
- RecentTime: zbtime,
|
|
|
- NearlyYears: near,
|
|
|
BuyerId: pTmp.BuyerId,
|
|
|
}
|
|
|
+ if ltc := ltcs2[common.ObjToString(m["name"])]; ltc != nil {
|
|
|
+ tmp.NearlyYears = ltc.Near
|
|
|
+ tmp.RecentTime = ltc.ZbTime
|
|
|
+ }
|
|
|
result = append(result, &tmp)
|
|
|
}
|
|
|
}
|
|
@@ -336,18 +348,15 @@ func LastTimeCoop(buyerId, ent, stype string) (bool, int64) {
|
|
|
return near, zbtime
|
|
|
}
|
|
|
|
|
|
-func LastTimeCoopBath(positionId int64, buyerIds, winners, agencys []string) (map[string]map[string]*Cooperate, map[string]map[string]*Cooperate) {
|
|
|
- if len(buyerIds) > 50 {
|
|
|
- buyerIds = buyerIds[:50]
|
|
|
+func LastTimeCoopBath(positionId int64, buyerId string, winners, agencys []string) (map[string]*Cooperate, map[string]*Cooperate) {
|
|
|
+ if len(winners) > 100 {
|
|
|
+ winners = winners[:100]
|
|
|
}
|
|
|
- if len(winners) > 50 {
|
|
|
- winners = winners[:50]
|
|
|
+ if len(agencys) > 100 {
|
|
|
+ agencys = agencys[:100]
|
|
|
}
|
|
|
- if len(agencys) > 10 {
|
|
|
- agencys = agencys[:50]
|
|
|
- }
|
|
|
- adiffb, agency := map[string]map[string]*Cooperate{}, map[string]map[string]*Cooperate{}
|
|
|
- if len(buyerIds) == 0 {
|
|
|
+ adiffb, agency := map[string]*Cooperate{}, map[string]*Cooperate{}
|
|
|
+ if buyerId == "" {
|
|
|
return adiffb, agency
|
|
|
}
|
|
|
var toSearch = func(tp int, query string, args []interface{}) {
|
|
@@ -360,11 +369,10 @@ func LastTimeCoopBath(positionId int64, buyerIds, winners, agencys []string) (ma
|
|
|
}
|
|
|
for rows.Next() {
|
|
|
var (
|
|
|
- buyer_id string
|
|
|
- one string
|
|
|
- zbtime int64
|
|
|
+ one string
|
|
|
+ zbtime int64
|
|
|
)
|
|
|
- if err := rows.Scan(&buyer_id, &one, &zbtime); err != nil {
|
|
|
+ if err := rows.Scan(&one, &zbtime); err != nil {
|
|
|
logx.Error(err)
|
|
|
continue
|
|
|
}
|
|
@@ -376,15 +384,9 @@ func LastTimeCoopBath(positionId int64, buyerIds, winners, agencys []string) (ma
|
|
|
c.Near = true
|
|
|
}
|
|
|
if tp == 1 {
|
|
|
- if adiffb[buyer_id] == nil {
|
|
|
- adiffb[buyer_id] = map[string]*Cooperate{}
|
|
|
- }
|
|
|
- adiffb[buyer_id][one] = c
|
|
|
+ adiffb[one] = c
|
|
|
} else {
|
|
|
- if agency[buyer_id] == nil {
|
|
|
- agency[buyer_id] = map[string]*Cooperate{}
|
|
|
- }
|
|
|
- agency[buyer_id][one] = c
|
|
|
+ agency[one] = c
|
|
|
}
|
|
|
}
|
|
|
rows.Close()
|
|
@@ -393,44 +395,18 @@ func LastTimeCoopBath(positionId int64, buyerIds, winners, agencys []string) (ma
|
|
|
}
|
|
|
}
|
|
|
if len(winners) > 0 {
|
|
|
- sql := `SELECT buyer_id,winner_one,max(zbtime) FROM information.transaction_info ARRAY JOIN winner AS winner_one WHERE %s group by buyer_id,winner_one`
|
|
|
- text := `(buyer_id=? AND has(winner,?))`
|
|
|
- array := []string{}
|
|
|
- args := []interface{}{}
|
|
|
- for _, v := range buyerIds {
|
|
|
- for _, vv := range winners {
|
|
|
- args = append(args, v, vv)
|
|
|
- array = append(array, text)
|
|
|
- if len(array) == 50 {
|
|
|
- toSearch(1, fmt.Sprintf(sql, strings.Join(array, " or ")), args)
|
|
|
- array = []string{}
|
|
|
- args = []interface{}{}
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if len(array) > 0 {
|
|
|
- toSearch(1, fmt.Sprintf(sql, strings.Join(array, " or ")), args)
|
|
|
- }
|
|
|
+ wh, newArgs := T.NetworkCom.WhArgs(winners)
|
|
|
+ sql := `SELECT winner_one,max(zbtime) FROM information.transaction_info ARRAY JOIN winner AS winner_one WHERE buyer_id=? AND hasAny(winner,[` + wh + `])) group by winner_one`
|
|
|
+ args := []interface{}{buyerId}
|
|
|
+ args = append(args, newArgs...)
|
|
|
+ toSearch(1, sql, args)
|
|
|
}
|
|
|
if len(agencys) > 0 {
|
|
|
- sql := `SELECT buyer_id,agency,max(zbtime) FROM information.transaction_info WHERE %s group by buyer_id,agency`
|
|
|
- text := `(buyer_id=? AND agency=?)`
|
|
|
- array := []string{}
|
|
|
- args := []interface{}{}
|
|
|
- for _, v := range buyerIds {
|
|
|
- for _, vv := range winners {
|
|
|
- args = append(args, v, vv)
|
|
|
- array = append(array, text)
|
|
|
- if len(array) == 50 {
|
|
|
- toSearch(2, fmt.Sprintf(sql, strings.Join(array, " or ")), args)
|
|
|
- array = []string{}
|
|
|
- args = []interface{}{}
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if len(array) > 0 {
|
|
|
- toSearch(2, fmt.Sprintf(sql, strings.Join(array, " or ")), args)
|
|
|
- }
|
|
|
+ wh, newArgs := T.NetworkCom.WhArgs(agencys)
|
|
|
+ sql := `SELECT agency,max(zbtime) FROM information.transaction_info WHERE buyer_id=? AND agency in (` + wh + `) group by agency`
|
|
|
+ args := []interface{}{buyerId}
|
|
|
+ args = append(args, newArgs...)
|
|
|
+ toSearch(2, sql, newArgs)
|
|
|
}
|
|
|
return adiffb, agency
|
|
|
}
|