diff --git a/controller/pricing.go b/controller/pricing.go index c298ae5a..1b2eddce 100644 --- a/controller/pricing.go +++ b/controller/pricing.go @@ -8,10 +8,35 @@ import ( func GetPricing(c *gin.Context) { pricing := model.GetPricing() + userId, exists := c.Get("id") + usableGroup := map[string]string{} + groupRatio := common.GroupRatio + var group string + if exists { + user, err := model.GetChannelById(userId.(int), false) + if err != nil { + c.JSON(200, gin.H{ + "success": false, + "message": err.Error(), + }) + return + } + group = user.Group + } + + usableGroup = common.GetUserUsableGroups(group) + // check groupRatio contains usableGroup + for group := range common.GroupRatio { + if _, ok := usableGroup[group]; !ok { + delete(groupRatio, group) + } + } + c.JSON(200, gin.H{ - "success": true, - "data": pricing, - "group_ratio": common.GroupRatio, + "success": true, + "data": pricing, + "group_ratio": groupRatio, + "usable_group": usableGroup, }) } diff --git a/web/src/components/ModelPricing.js b/web/src/components/ModelPricing.js index 153a1a07..193db789 100644 --- a/web/src/components/ModelPricing.js +++ b/web/src/components/ModelPricing.js @@ -162,36 +162,39 @@ const ModelPricing = () => { title: t('可用分组'), dataIndex: 'enable_groups', render: (text, record, index) => { + // enable_groups is a string array return ( {text.map((group) => { - if (group === selectedGroup) { - return ( - } - > - {group} - - ); - } else { - return ( - { - setSelectedGroup(group); - showInfo(t('当前查看的分组为:{{group}},倍率为:{{ratio}}', { - group: group, - ratio: groupRatio[group] - })); - }} - > - {group} - - ); + if (usableGroup[group]) { + if (group === selectedGroup) { + return ( + } + > + {group} + + ); + } else { + return ( + { + setSelectedGroup(group); + showInfo(t('当前查看的分组为:{{group}},倍率为:{{ratio}}', { + group: group, + ratio: groupRatio[group] + })); + }} + > + {group} + + ); + } } })} @@ -275,6 +278,7 @@ const ModelPricing = () => { const [loading, setLoading] = useState(true); const [userState, userDispatch] = useContext(UserContext); const [groupRatio, setGroupRatio] = useState({}); + const [usableGroup, setUsableGroup] = useState({}); const setModelsFormat = (models, groupRatio) => { for (let i = 0; i < models.length; i++) { @@ -309,9 +313,10 @@ const ModelPricing = () => { let url = ''; url = `/api/pricing`; const res = await API.get(url); - const { success, message, data, group_ratio } = res.data; + const { success, message, data, group_ratio, usable_group } = res.data; if (success) { setGroupRatio(group_ratio); + setUsableGroup(usable_group); setSelectedGroup(userState.user ? userState.user.group : 'default') setModelsFormat(data, group_ratio); } else {