diff --git a/app/mix/dao/mysql_zone.go b/app/mix/dao/mysql_zone.go index 5b6bda1b..a05b10ef 100644 --- a/app/mix/dao/mysql_zone.go +++ b/app/mix/dao/mysql_zone.go @@ -574,3 +574,19 @@ func (m *Mysql) GetLastHourZoneAdmissionInfo(ctx *gin.Context, tx *sqlx.Tx, st, } return } + +// 统计空间总人数 +func (m *Mysql) GetZoneMemberCountGroupByZoneMemberType(ctx *gin.Context, tx *sqlx.Tx, zids []int64) (list []*dbstruct.ZoneMemberCount, err error) { + sql := fmt.Sprintf("select count(1), zid , member_type from %s where zid in (%s) group by member_type, zid", TableVasZoneMember, util.Convert2SqlArr(zids)) + list = make([]*dbstruct.ZoneMemberCount, 0) + if tx != nil { + err = tx.SelectContext(ctx, &list, sql) + } else { + db := m.getDBVas() + err = db.SelectContext(ctx, &list, sql) + } + if err != nil { + return + } + return +} diff --git a/app/mix/service/logic/vas_zone.go b/app/mix/service/logic/vas_zone.go index 63ac599c..3c1c05bf 100644 --- a/app/mix/service/logic/vas_zone.go +++ b/app/mix/service/logic/vas_zone.go @@ -1238,3 +1238,26 @@ func (v *Vas) GetLastHourZoneProfit(ctx *gin.Context, st, et int64) ([]*dbstruct func (v *Vas) GetLastHourZoneAdmissionInfo(ctx *gin.Context, tx *sqlx.Tx, st, et int64) ([]*dbstruct.ZoneAdmissionInfo, error) { return v.store.GetLastHourZoneAdmissionInfo(ctx, tx, st, et) } + +// 统计空间总人数 +func (v *Vas) GetZoneMemberCountGroupByZoneMemberType(ctx *gin.Context, zids []int64) (map[int64]map[int64]int64, error) { + countMp := make(map[int64]map[int64]int64, 0) + list, err := v.store.GetZoneMemberCountGroupByZoneMemberType(ctx, nil, zids) + if err != nil { + logger.Error("GetZoneMemberCountGroupByZoneMemberType fail err: %v", err) + return make(map[int64]map[int64]int64), nil + } + + for _, zonemembercount := range list { + mp, ok := countMp[zonemembercount.GetZid()] + if ok { + mp[zonemembercount.GetMemberType()] = zonemembercount.GetNum() + } else { + mp = make(map[int64]int64) + mp[zonemembercount.GetMemberType()] = zonemembercount.GetNum() + countMp[zonemembercount.GetZid()] = mp + } + } + + return countMp, nil +} diff --git a/app/mix/service/utilservice.go b/app/mix/service/utilservice.go index 93a8faec..79706bc9 100644 --- a/app/mix/service/utilservice.go +++ b/app/mix/service/utilservice.go @@ -1975,7 +1975,10 @@ func (s *Service) utilFillZonesWithOpVOInfo(ctx *gin.Context, list []*dbstruct.Z // 8.获取空间付费信息 zvMap, _ := _DefaultVas.GetZoneVasByIds(ctx, zids) - // 9.填充信息 + // 9.获取空间人数信息 + zmcountMap, _ := _DefaultVas.GetZoneMemberCountGroupByZoneMemberType(ctx, zids) + + // 10.填充信息 for _, vo := range volist { zid := vo.Zone.GetId() @@ -2008,6 +2011,12 @@ func (s *Service) utilFillZonesWithOpVOInfo(ctx *gin.Context, list []*dbstruct.Z if zv, ok := zvMap[zid]; ok { vo.CopyZoneVas(zv) } + + // 填充空间总人数 + zmcount := zmcountMap[zid] + vo.IronfanNum = zmcount[int64(dbstruct.ZoneMemberTypeIronfan)] + vo.SuperfanNum = zmcount[int64(dbstruct.ZoneMemberTypeSuperfan)] + vo.EntrantNum = zmcount[int64(dbstruct.ZoneMemberTypeNormal)] + vo.IronfanNum + vo.SuperfanNum } return diff --git a/dbstruct/vas_mysql.go b/dbstruct/vas_mysql.go index d5fc18a7..00b459a0 100644 --- a/dbstruct/vas_mysql.go +++ b/dbstruct/vas_mysql.go @@ -1489,3 +1489,31 @@ func (p *RefundRate) GetRefundRate() float64 { } return 0 } + +// 空间总人数统计 +type ZoneMemberCount struct { + Zid *int64 `json:"zid" db:"zid"` + MemberType *int64 `json:"member_type" db:"member_type"` + Num *int64 `json:"num" db:"num"` +} + +func (p *ZoneMemberCount) GetZid() int64 { + if p != nil && p.Zid != nil { + return *p.Zid + } + return 0 +} + +func (p *ZoneMemberCount) GetMemberType() int64 { + if p != nil && p.MemberType != nil { + return *p.MemberType + } + return 0 +} + +func (p *ZoneMemberCount) GetNum() int64 { + if p != nil && p.Num != nil { + return *p.Num + } + return 0 +} diff --git a/etc/mix/mix-prod-offline.yaml b/etc/mix/mix-prod-offline.yaml index f6120c87..908ad1c3 100644 --- a/etc/mix/mix-prod-offline.yaml +++ b/etc/mix/mix-prod-offline.yaml @@ -146,4 +146,15 @@ elastic_search: uri: "http://172.31.37.67:9200" username: "elastic" password: "Wishpal@2024" - sniff: false \ No newline at end of file + sniff: false + +yeepay: + appid: "app_10090316660" + parent_merchant_no: "10090316660" + merchant_no: "10090326142" + notify_url: "https://api.tiefen.fun/ext/vas/yeepay_callback" + private_key: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8Zfd0RVnpmPuodc0N8XLLI8DWT4hTAyOlwbE5LLiiguG5W0AghvddreO73T51BGK4V05Taxdpv7j7KNl39OUzKA0tpmoLwC4f6II1Op4tY05NnUgOFbno01vE7cN5BWLwVA35dfgQm1jtzXECdTufavYH/qPCzpvd7OTbmdHonMVjanjz+XOfnFowxq8ap3F63ocF4LR3KalsC/cTvW7LYnendjjiFGbMm7DlLEUtHRZ0EzrmM6SVxXRcibKZd7Dy6QpNXLu615cJLui6eS/zmxG2pUoNI31ajh+ZybZ61/Lwsq3JylmXHoSu1WkydfHnIEbr1PasaoD//7BzySQzAgMBAAECggEAFZoRehT7nsPKU0ISnX8qXO2ADnK3HGGXREnFwtsEXqnoLOMwIqqnEWg/XQqcvzkeAqoMEpeMazUvBilkahM79pYokKvsq+VAxKrZxzWt7mFdGJwop2jJVM9rTdS/XZCHDCxvH8PtiiXt1/J++zuq9vgCNt91MoCTMaqYgS+NeIDS0UaNQ6AcwFqyY8XUUXe6phCr2NC9iyOeTXE4HhfuoNJd/H8zmVOYkrfzgYLU/uHhfskGFhCDIO/V3yxZy7K7Z74ECOifGNpH/QV7vK4OHI+2DEOAS0E8G2jNGR67OpmbM7Jgw/8k7xl9sB18zS+Eor1BsnIM8MKSR4ss624NEQKBgQDpwHa21ESDfjYBiDh8MhLnNPzIHHozIIimXd4o36nBgGqH8ciblSWg5KPZmL2U3rVucd6TF0qXZlX6FlsGfp6poKiRMyl8Knc3j3KiyAdpyP9k26ifve4YquOkhNMOaVqO5YJpmfVEppsWy2wA2p3USYecAhHc7KDTlz2TLhT80QKBgQDOVG5dosS/4AJQ4AKE5hd5d7qJfo/VeNx6i4MtMJ4IznO6IE2O1oHuUQOr+6n3QvIGhe1J3Tt8+rv7j1Wp3y16dAPxWJblPCYWw+a6wkNY5ByMeaMzvvLqU/WdyEQzAE7yUPBfxMuhZDEp3ndK/PVVqjR6NPDJ+Dhcel9ntMPBwwKBgFa7WBEcj9NueCF3ZuYGOmdZjNW/Y0QnNSzttWnbG4S13lFU0EeSPqUFURqDBwz+2bkCPUC8qqukiBBETUAKqVptRz6hCiqNIzEVY8asi7ufncvRiS7EbVzvw4me0yUMyFIvLIV8X7o6S19Y2VkzxM4o/k1Po0si7cW0318GATmRAoGBAJD4M79ooPLr0tS+QCbef/nhjNgUa70iuU8E/TrgIPmxDRDmp3fH8ezfUUQig+5uRB0fNnUikyyiAziiIh9D5vFV2HtXslYIZ/6w0EnCOo2XYRO2V1wBOy43paih0IFBIzcQdYPkguq3ue9gFtNCXqI8/7gpwFE4LWmUtbnpAW3/AoGAW9ma4+4+QfGOGb9N38IyzHcXiyAkteQMX72Hxb0HK+nz9QwGXObqFvwnJ7IV8aJ0ZAUGDUfTToorNRSnmPdnq4BG5uKisIONp5pe0ZchlhXAEgKZnCgVmrEHgtzv3U8ffOfbNjoTufI/ZZoyl+7Kr1+o32VikquuMxeNpR9T6Fw=" + +sd: + host: "http://172.31.37.68:8500" + service_name: "mix_online"