Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 

59 řádky
1.9 KiB

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