package operationsreport // 报表分组维度:激活情况表七项、套餐续费表六项。 // 只支持单一分组维度,不支持同时按多个维度分组;未选择维度时汇总为一行,分组列值为「全部」。 const ( // DimensionDeviceName 表示设备名称维度。 DimensionDeviceName = "device_name" // DimensionDeviceModel 表示设备型号维度。 DimensionDeviceModel = "device_model" // DimensionManufacturer 表示制造商维度。 DimensionManufacturer = "manufacturer" // DimensionBusinessUserGroup 表示用户组维度。 DimensionBusinessUserGroup = "business_user_group" // DimensionAgent 表示代理维度。 DimensionAgent = "agent" // DimensionShop 表示店铺维度。 DimensionShop = "shop" // DimensionBusinessOwner 表示业务员维度。 DimensionBusinessOwner = "business_owner" // DimensionPackageSeries 表示套餐系列维度。 DimensionPackageSeries = "package_series" // DimensionPackageName 表示套餐名称维度。 DimensionPackageName = "package_name" ) // DimensionAll 是未选择分组维度时唯一汇总行的分组列值。 const DimensionAll = "全部" // 趋势粒度取值:只表达粒度,不引入月份参数。 const ( // GranularityDay 表示按日趋势。 GranularityDay = "day" // GranularityMonth 表示按月趋势。 GranularityMonth = "month" ) // NormalizeGranularity 归一趋势粒度,缺省为按日;返回 false 表示取值不受支持。 func NormalizeGranularity(value string) (string, bool) { switch value { case "", GranularityDay: return GranularityDay, true case GranularityMonth: return GranularityMonth, true default: return "", false } } // PlaceholderUnset 是分组取值为空时的固定占位展示。 const PlaceholderUnset = "未设置" // activationDimensions 是有序的激活情况分组维度与其中文名。 var activationDimensions = []struct { Code string Name string }{ {DimensionDeviceName, "设备名称"}, {DimensionDeviceModel, "设备型号"}, {DimensionManufacturer, "制造商"}, {DimensionBusinessUserGroup, "用户组"}, {DimensionAgent, "代理"}, {DimensionShop, "店铺"}, {DimensionBusinessOwner, "业务员"}, } // renewalDimensions 是有序的套餐续费分组维度与其中文名。 var renewalDimensions = []struct { Code string Name string }{ {DimensionPackageSeries, "套餐系列"}, {DimensionPackageName, "套餐名称"}, {DimensionBusinessUserGroup, "用户组"}, {DimensionAgent, "代理"}, {DimensionShop, "店铺"}, {DimensionBusinessOwner, "业务员"}, } // ActivationDimensionCodes 返回激活情况支持的维度编码(按展示顺序)。 func ActivationDimensionCodes() []string { codes := make([]string, 0, len(activationDimensions)) for _, dimension := range activationDimensions { codes = append(codes, dimension.Code) } return codes } // RenewalDimensionCodes 返回套餐续费支持的维度编码(按展示顺序)。 func RenewalDimensionCodes() []string { codes := make([]string, 0, len(renewalDimensions)) for _, dimension := range renewalDimensions { codes = append(codes, dimension.Code) } return codes } // ActivationDimensionName 返回激活情况维度的中文名;不支持时返回 false。 func ActivationDimensionName(code string) (string, bool) { return dimensionName(activationDimensions, code) } // RenewalDimensionName 返回套餐续费维度的中文名;不支持时返回 false。 func RenewalDimensionName(code string) (string, bool) { return dimensionName(renewalDimensions, code) } // IsActivationDimension 判断是否为受支持的激活情况维度。 func IsActivationDimension(code string) bool { _, ok := ActivationDimensionName(code) return ok } // IsRenewalDimension 判断是否为受支持的套餐续费维度。 func IsRenewalDimension(code string) bool { _, ok := RenewalDimensionName(code) return ok } func dimensionName(dimensions []struct { Code string Name string }, code string) (string, bool) { for _, dimension := range dimensions { if dimension.Code == code { return dimension.Name, true } } return "", false } // TextOrPlaceholder 返回非空文本,为空时返回固定占位。 func TextOrPlaceholder(value string) string { if value == "" { return PlaceholderUnset } return value }