diff --git a/core/service.go b/core/service.go index 08d32f0..9de61ba 100644 --- a/core/service.go +++ b/core/service.go @@ -123,11 +123,9 @@ type serviceDescription struct { updateUserinfo func(info usertokeninfo) (bool, string, string) getProviderInfo func(platform string, uid string) (string, string, error) - divisionsForUsersSerialized []byte - divisionsSerialized []byte - serviceSerialized []byte - serviceSummarySerialized []byte - divisionsSplits map[string][]byte + divisionsSerialized []byte + serviceSerialized []byte + divisionsSplits map[string][]byte } func (sh *serviceDescription) isValidToken(apiToken primitive.ObjectID) bool { @@ -189,9 +187,9 @@ func (sh *serviceDescription) prepare(mg *Maingate) error { } divsForUsers := make(map[string]*DivisionForUser) - var namesOnly []string + defaultDivNames := make(map[string]bool) for dn, div := range divs { - namesOnly = append(namesOnly, dn) + defaultDivNames[dn] = true if div.State == DivisionState_Closed { continue } @@ -230,25 +228,27 @@ func (sh *serviceDescription) prepare(mg *Maingate) error { } sh.divisionsSerialized, _ = json.Marshal(divs) - sh.divisionsForUsersSerialized, _ = json.Marshal(divsForUsers) - - if len(sh.VersionSplits) == 0 { - sh.VersionSplits = map[string]string{ - "default": strings.Join(namesOnly, ","), - } - } - sh.divisionsSplits = make(map[string][]byte) for ver, divnamesT := range sh.VersionSplits { divnames := strings.Split(divnamesT, ",") split := make(map[string]*DivisionForUser) for _, divname := range divnames { split[divname] = divsForUsers[divname] + + // 스플릿 된 버전은 default에서 제거해야 한다. + delete(defaultDivNames, divname) } splitMarshaled, _ := json.Marshal(split) sh.divisionsSplits[ver] = splitMarshaled } + defaultsDivs := make(map[string]*DivisionForUser) + for divname := range defaultDivNames { + defaultsDivs[divname] = divsForUsers[divname] + } + defaultMarshaled, _ := json.Marshal(defaultsDivs) + sh.divisionsSplits["default"] = defaultMarshaled + sh.MaximumNumLinkAccount = mg.maingateConfig.MaximumNumLinkAccount sh.mongoClient = mg.mongoClient sh.auths = mg.auths @@ -261,7 +261,6 @@ func (sh *serviceDescription) prepare(mg *Maingate) error { sh.wl = mg.wl sh.bl = mg.bl - sh.serviceSummarySerialized, _ = json.Marshal(sh.ServiceDescriptionSummary) sh.serviceSerialized, _ = json.Marshal(sh) logger.Println("service is ready :", sh.ServiceCode, string(sh.serviceSerialized))