105 lines
3.2 KiB
Go
105 lines
3.2 KiB
Go
/*
|
|
Copyright (C) 2025 QuantumNous
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as
|
|
published by the Free Software Foundation, either version 3 of the
|
|
License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
For commercial licensing, please contact support@quantumnous.com
|
|
*/
|
|
|
|
package controller
|
|
|
|
import (
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"github.com/QuantumNous/new-api/common"
|
|
"github.com/QuantumNous/new-api/model"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// GetInviteeModelDiscounts 获取被邀请用户的模型折扣列表
|
|
// GET /api/distributor/invitee-model-discounts?invitee_id=xxx
|
|
func GetInviteeModelDiscounts(c *gin.Context) {
|
|
userId := c.GetInt("id")
|
|
u, err := model.GetUserById(userId, false)
|
|
if err != nil || !model.UserIsDistributor(u) {
|
|
c.JSON(http.StatusOK, gin.H{"success": false, "message": "仅分销商可查看"})
|
|
return
|
|
}
|
|
if !common.IsDistributorProfitShareMode() {
|
|
c.JSON(http.StatusOK, gin.H{"success": false, "message": "当前站点未启用利润分成模式"})
|
|
return
|
|
}
|
|
|
|
inviteeId, err := strconv.Atoi(c.Query("invitee_id"))
|
|
if err != nil || inviteeId <= 0 {
|
|
c.JSON(http.StatusOK, gin.H{"success": false, "message": "参数错误"})
|
|
return
|
|
}
|
|
|
|
items, _, err := model.GetInviteeModelDiscounts(userId, inviteeId)
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{"success": false, "message": err.Error()})
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": "",
|
|
"data": gin.H{
|
|
"items": items,
|
|
"total": len(items),
|
|
},
|
|
})
|
|
}
|
|
|
|
// PutInviteeModelDiscounts 更新被邀请用户的模型折扣配置
|
|
// PUT /api/distributor/invitee-model-discounts
|
|
type putInviteeModelDiscountsRequest struct {
|
|
InviteeId int `json:"invitee_id"`
|
|
Discounts []model.ModelMarkupDiscountRateUpdateRequest `json:"discounts"`
|
|
}
|
|
|
|
func PutInviteeModelDiscounts(c *gin.Context) {
|
|
userId := c.GetInt("id")
|
|
u, err := model.GetUserById(userId, false)
|
|
if err != nil || !model.UserIsDistributor(u) {
|
|
c.JSON(http.StatusOK, gin.H{"success": false, "message": "仅分销商可操作"})
|
|
return
|
|
}
|
|
if !common.IsDistributorProfitShareMode() {
|
|
c.JSON(http.StatusOK, gin.H{"success": false, "message": "当前站点未启用利润分成模式"})
|
|
return
|
|
}
|
|
|
|
var req putInviteeModelDiscountsRequest
|
|
if err := common.DecodeJson(c.Request.Body, &req); err != nil {
|
|
c.JSON(http.StatusOK, gin.H{"success": false, "message": "无效的请求"})
|
|
return
|
|
}
|
|
|
|
if req.InviteeId <= 0 {
|
|
c.JSON(http.StatusOK, gin.H{"success": false, "message": "参数错误"})
|
|
return
|
|
}
|
|
|
|
if err := model.UpdateInviteeModelDiscounts(userId, req.InviteeId, req.Discounts); err != nil {
|
|
c.JSON(http.StatusOK, gin.H{"success": false, "message": err.Error()})
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{"success": true, "message": ""})
|
|
}
|