Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 

60 строки
2.0 KiB

  1. package controller
  2. import (
  3. "net/http"
  4. "strings"
  5. "github.com/QuantumNous/new-api/common"
  6. "github.com/QuantumNous/new-api/model"
  7. "github.com/QuantumNous/new-api/setting/ratio_setting"
  8. "github.com/QuantumNous/new-api/types"
  9. "github.com/gin-gonic/gin"
  10. )
  11. func GetModelPricingRules(c *gin.Context) {
  12. common.ApiSuccess(c, ratio_setting.GetPricingConfigCopy())
  13. }
  14. func GetModelPricingRule(c *gin.Context) {
  15. modelName := strings.TrimPrefix(c.Param("model"), "/")
  16. cfg := ratio_setting.GetPricingConfig(modelName)
  17. if cfg == nil {
  18. c.JSON(http.StatusNotFound, gin.H{"success": false, "message": "model pricing rule not found"})
  19. return
  20. }
  21. common.ApiSuccess(c, cfg)
  22. }
  23. func UpdateModelPricingRule(c *gin.Context) {
  24. modelName := strings.TrimPrefix(c.Param("model"), "/")
  25. var cfg types.PricingConfig
  26. if err := common.DecodeJson(c.Request.Body, &cfg); err != nil {
  27. c.JSON(http.StatusBadRequest, gin.H{"success": false, "message": err.Error()})
  28. return
  29. }
  30. if err := ratio_setting.SetPricingConfig(modelName, &cfg); err != nil {
  31. c.JSON(http.StatusBadRequest, gin.H{"success": false, "message": err.Error()})
  32. return
  33. }
  34. if err := model.UpdateOption(ratio_setting.ModelPricingRulesOptionKey, ratio_setting.ModelPricingRules2JSONString()); err != nil {
  35. c.JSON(http.StatusInternalServerError, gin.H{"success": false, "message": err.Error()})
  36. return
  37. }
  38. model.RefreshPricing()
  39. common.ApiSuccess(c, ratio_setting.GetPricingConfig(modelName))
  40. }
  41. func DeleteModelPricingRule(c *gin.Context) {
  42. modelName := strings.TrimPrefix(c.Param("model"), "/")
  43. if err := ratio_setting.DeletePricingConfig(modelName); err != nil {
  44. c.JSON(http.StatusBadRequest, gin.H{"success": false, "message": err.Error()})
  45. return
  46. }
  47. if err := model.UpdateOption(ratio_setting.ModelPricingRulesOptionKey, ratio_setting.ModelPricingRules2JSONString()); err != nil {
  48. c.JSON(http.StatusInternalServerError, gin.H{"success": false, "message": err.Error()})
  49. return
  50. }
  51. model.RefreshPricing()
  52. common.ApiSuccess(c, nil)
  53. }