瀏覽代碼

fix:修改积分

jimmyyem 1 周之前
父節點
當前提交
e60a2d582d

+ 1 - 0
desc/wechat/usage_detail.api

@@ -43,6 +43,7 @@ type (
 		OrganizationName *string `json:"organizationName,optional"`
 
 		Model *string `json:"model,optional"`
+		Credits  *float64 `json:"credits,optional"`
     }
 
     // The response data of UsageDetail list | UsageDetail列表数据

+ 1 - 0
ent/migrate/schema.go

@@ -999,6 +999,7 @@ var (
 		{Name: "completion_tokens", Type: field.TypeUint64, Nullable: true, Comment: "响应token数", Default: 0},
 		{Name: "organization_id", Type: field.TypeUint64, Nullable: true, Comment: "机构 ID", Default: 1},
 		{Name: "model", Type: field.TypeString, Nullable: true, Comment: "模型", Default: "GPT-4o mini"},
+		{Name: "credits", Type: field.TypeFloat64, Nullable: true, Comment: "coins | 积分消耗数"},
 	}
 	// UsageDetailTable holds the schema information for the "usage_detail" table.
 	UsageDetailTable = &schema.Table{

+ 108 - 1
ent/mutation.go

@@ -35614,6 +35614,8 @@ type UsageDetailMutation struct {
 	organization_id      *uint64
 	addorganization_id   *int64
 	model                *string
+	credits              *float64
+	addcredits           *float64
 	clearedFields        map[string]struct{}
 	done                 bool
 	oldValue             func(context.Context) (*UsageDetail, error)
@@ -36585,6 +36587,76 @@ func (m *UsageDetailMutation) ResetModel() {
 	delete(m.clearedFields, usagedetail.FieldModel)
 }
 
+// SetCredits sets the "credits" field.
+func (m *UsageDetailMutation) SetCredits(f float64) {
+	m.credits = &f
+	m.addcredits = nil
+}
+
+// Credits returns the value of the "credits" field in the mutation.
+func (m *UsageDetailMutation) Credits() (r float64, exists bool) {
+	v := m.credits
+	if v == nil {
+		return
+	}
+	return *v, true
+}
+
+// OldCredits returns the old "credits" field's value of the UsageDetail entity.
+// If the UsageDetail object wasn't provided to the builder, the object is fetched from the database.
+// An error is returned if the mutation operation is not UpdateOne, or the database query fails.
+func (m *UsageDetailMutation) OldCredits(ctx context.Context) (v float64, err error) {
+	if !m.op.Is(OpUpdateOne) {
+		return v, errors.New("OldCredits is only allowed on UpdateOne operations")
+	}
+	if m.id == nil || m.oldValue == nil {
+		return v, errors.New("OldCredits requires an ID field in the mutation")
+	}
+	oldValue, err := m.oldValue(ctx)
+	if err != nil {
+		return v, fmt.Errorf("querying old value for OldCredits: %w", err)
+	}
+	return oldValue.Credits, nil
+}
+
+// AddCredits adds f to the "credits" field.
+func (m *UsageDetailMutation) AddCredits(f float64) {
+	if m.addcredits != nil {
+		*m.addcredits += f
+	} else {
+		m.addcredits = &f
+	}
+}
+
+// AddedCredits returns the value that was added to the "credits" field in this mutation.
+func (m *UsageDetailMutation) AddedCredits() (r float64, exists bool) {
+	v := m.addcredits
+	if v == nil {
+		return
+	}
+	return *v, true
+}
+
+// ClearCredits clears the value of the "credits" field.
+func (m *UsageDetailMutation) ClearCredits() {
+	m.credits = nil
+	m.addcredits = nil
+	m.clearedFields[usagedetail.FieldCredits] = struct{}{}
+}
+
+// CreditsCleared returns if the "credits" field was cleared in this mutation.
+func (m *UsageDetailMutation) CreditsCleared() bool {
+	_, ok := m.clearedFields[usagedetail.FieldCredits]
+	return ok
+}
+
+// ResetCredits resets all changes to the "credits" field.
+func (m *UsageDetailMutation) ResetCredits() {
+	m.credits = nil
+	m.addcredits = nil
+	delete(m.clearedFields, usagedetail.FieldCredits)
+}
+
 // Where appends a list predicates to the UsageDetailMutation builder.
 func (m *UsageDetailMutation) Where(ps ...predicate.UsageDetail) {
 	m.predicates = append(m.predicates, ps...)
@@ -36619,7 +36691,7 @@ func (m *UsageDetailMutation) Type() string {
 // order to get all numeric fields that were incremented/decremented, call
 // AddedFields().
 func (m *UsageDetailMutation) Fields() []string {
-	fields := make([]string, 0, 16)
+	fields := make([]string, 0, 17)
 	if m.created_at != nil {
 		fields = append(fields, usagedetail.FieldCreatedAt)
 	}
@@ -36668,6 +36740,9 @@ func (m *UsageDetailMutation) Fields() []string {
 	if m.model != nil {
 		fields = append(fields, usagedetail.FieldModel)
 	}
+	if m.credits != nil {
+		fields = append(fields, usagedetail.FieldCredits)
+	}
 	return fields
 }
 
@@ -36708,6 +36783,8 @@ func (m *UsageDetailMutation) Field(name string) (ent.Value, bool) {
 		return m.OrganizationID()
 	case usagedetail.FieldModel:
 		return m.Model()
+	case usagedetail.FieldCredits:
+		return m.Credits()
 	}
 	return nil, false
 }
@@ -36749,6 +36826,8 @@ func (m *UsageDetailMutation) OldField(ctx context.Context, name string) (ent.Va
 		return m.OldOrganizationID(ctx)
 	case usagedetail.FieldModel:
 		return m.OldModel(ctx)
+	case usagedetail.FieldCredits:
+		return m.OldCredits(ctx)
 	}
 	return nil, fmt.Errorf("unknown UsageDetail field %s", name)
 }
@@ -36870,6 +36949,13 @@ func (m *UsageDetailMutation) SetField(name string, value ent.Value) error {
 		}
 		m.SetModel(v)
 		return nil
+	case usagedetail.FieldCredits:
+		v, ok := value.(float64)
+		if !ok {
+			return fmt.Errorf("unexpected type %T for field %s", value, name)
+		}
+		m.SetCredits(v)
+		return nil
 	}
 	return fmt.Errorf("unknown UsageDetail field %s", name)
 }
@@ -36902,6 +36988,9 @@ func (m *UsageDetailMutation) AddedFields() []string {
 	if m.addorganization_id != nil {
 		fields = append(fields, usagedetail.FieldOrganizationID)
 	}
+	if m.addcredits != nil {
+		fields = append(fields, usagedetail.FieldCredits)
+	}
 	return fields
 }
 
@@ -36926,6 +37015,8 @@ func (m *UsageDetailMutation) AddedField(name string) (ent.Value, bool) {
 		return m.AddedCompletionTokens()
 	case usagedetail.FieldOrganizationID:
 		return m.AddedOrganizationID()
+	case usagedetail.FieldCredits:
+		return m.AddedCredits()
 	}
 	return nil, false
 }
@@ -36991,6 +37082,13 @@ func (m *UsageDetailMutation) AddField(name string, value ent.Value) error {
 		}
 		m.AddOrganizationID(v)
 		return nil
+	case usagedetail.FieldCredits:
+		v, ok := value.(float64)
+		if !ok {
+			return fmt.Errorf("unexpected type %T for field %s", value, name)
+		}
+		m.AddCredits(v)
+		return nil
 	}
 	return fmt.Errorf("unknown UsageDetail numeric field %s", name)
 }
@@ -37026,6 +37124,9 @@ func (m *UsageDetailMutation) ClearedFields() []string {
 	if m.FieldCleared(usagedetail.FieldModel) {
 		fields = append(fields, usagedetail.FieldModel)
 	}
+	if m.FieldCleared(usagedetail.FieldCredits) {
+		fields = append(fields, usagedetail.FieldCredits)
+	}
 	return fields
 }
 
@@ -37067,6 +37168,9 @@ func (m *UsageDetailMutation) ClearField(name string) error {
 	case usagedetail.FieldModel:
 		m.ClearModel()
 		return nil
+	case usagedetail.FieldCredits:
+		m.ClearCredits()
+		return nil
 	}
 	return fmt.Errorf("unknown UsageDetail nullable field %s", name)
 }
@@ -37123,6 +37227,9 @@ func (m *UsageDetailMutation) ResetField(name string) error {
 	case usagedetail.FieldModel:
 		m.ResetModel()
 		return nil
+	case usagedetail.FieldCredits:
+		m.ResetCredits()
+		return nil
 	}
 	return fmt.Errorf("unknown UsageDetail field %s", name)
 }

+ 1 - 0
ent/schema/usage_detail.go

@@ -55,6 +55,7 @@ func (UsageDetail) Fields() []ent.Field {
 		field.String("model").Optional().Default("GPT-4o mini").
 			Comment("模型").
 			Annotations(entsql.WithComments(true)),
+		field.Float("credits").Optional().Comment("coins | 积分消耗数"),
 	}
 }
 

+ 24 - 0
ent/set_not_nil.go

@@ -7952,6 +7952,30 @@ func (ud *UsageDetailCreate) SetNotNilModel(value *string) *UsageDetailCreate {
 }
 
 // set field if value's pointer is not nil.
+func (ud *UsageDetailUpdate) SetNotNilCredits(value *float64) *UsageDetailUpdate {
+	if value != nil {
+		return ud.SetCredits(*value)
+	}
+	return ud
+}
+
+// set field if value's pointer is not nil.
+func (ud *UsageDetailUpdateOne) SetNotNilCredits(value *float64) *UsageDetailUpdateOne {
+	if value != nil {
+		return ud.SetCredits(*value)
+	}
+	return ud
+}
+
+// set field if value's pointer is not nil.
+func (ud *UsageDetailCreate) SetNotNilCredits(value *float64) *UsageDetailCreate {
+	if value != nil {
+		return ud.SetCredits(*value)
+	}
+	return ud
+}
+
+// set field if value's pointer is not nil.
 func (usd *UsageStatisticDayUpdate) SetNotNilUpdatedAt(value *time.Time) *UsageStatisticDayUpdate {
 	if value != nil {
 		return usd.SetUpdatedAt(*value)

+ 14 - 1
ent/usagedetail.go

@@ -50,7 +50,9 @@ type UsageDetail struct {
 	// 机构 ID
 	OrganizationID uint64 `json:"organization_id,omitempty"`
 	// 模型
-	Model        string `json:"model,omitempty"`
+	Model string `json:"model,omitempty"`
+	// coins | 积分消耗数
+	Credits      float64 `json:"credits,omitempty"`
 	selectValues sql.SelectValues
 }
 
@@ -61,6 +63,8 @@ func (*UsageDetail) scanValues(columns []string) ([]any, error) {
 		switch columns[i] {
 		case usagedetail.FieldOriginalData:
 			values[i] = new([]byte)
+		case usagedetail.FieldCredits:
+			values[i] = new(sql.NullFloat64)
 		case usagedetail.FieldID, usagedetail.FieldStatus, usagedetail.FieldType, usagedetail.FieldApp, usagedetail.FieldSessionID, usagedetail.FieldTotalTokens, usagedetail.FieldPromptTokens, usagedetail.FieldCompletionTokens, usagedetail.FieldOrganizationID:
 			values[i] = new(sql.NullInt64)
 		case usagedetail.FieldBotID, usagedetail.FieldReceiverID, usagedetail.FieldRequest, usagedetail.FieldResponse, usagedetail.FieldModel:
@@ -186,6 +190,12 @@ func (ud *UsageDetail) assignValues(columns []string, values []any) error {
 			} else if value.Valid {
 				ud.Model = value.String
 			}
+		case usagedetail.FieldCredits:
+			if value, ok := values[i].(*sql.NullFloat64); !ok {
+				return fmt.Errorf("unexpected type %T for field credits", values[i])
+			} else if value.Valid {
+				ud.Credits = value.Float64
+			}
 		default:
 			ud.selectValues.Set(columns[i], values[i])
 		}
@@ -269,6 +279,9 @@ func (ud *UsageDetail) String() string {
 	builder.WriteString(", ")
 	builder.WriteString("model=")
 	builder.WriteString(ud.Model)
+	builder.WriteString(", ")
+	builder.WriteString("credits=")
+	builder.WriteString(fmt.Sprintf("%v", ud.Credits))
 	builder.WriteByte(')')
 	return builder.String()
 }

+ 8 - 0
ent/usagedetail/usagedetail.go

@@ -45,6 +45,8 @@ const (
 	FieldOrganizationID = "organization_id"
 	// FieldModel holds the string denoting the model field in the database.
 	FieldModel = "model"
+	// FieldCredits holds the string denoting the credits field in the database.
+	FieldCredits = "credits"
 	// Table holds the table name of the usagedetail in the database.
 	Table = "usage_detail"
 )
@@ -68,6 +70,7 @@ var Columns = []string{
 	FieldCompletionTokens,
 	FieldOrganizationID,
 	FieldModel,
+	FieldCredits,
 }
 
 // ValidColumn reports if the column name is valid (part of the table columns).
@@ -197,3 +200,8 @@ func ByOrganizationID(opts ...sql.OrderTermOption) OrderOption {
 func ByModel(opts ...sql.OrderTermOption) OrderOption {
 	return sql.OrderByField(FieldModel, opts...).ToFunc()
 }
+
+// ByCredits orders the results by the credits field.
+func ByCredits(opts ...sql.OrderTermOption) OrderOption {
+	return sql.OrderByField(FieldCredits, opts...).ToFunc()
+}

+ 55 - 0
ent/usagedetail/where.go

@@ -129,6 +129,11 @@ func Model(v string) predicate.UsageDetail {
 	return predicate.UsageDetail(sql.FieldEQ(FieldModel, v))
 }
 
+// Credits applies equality check predicate on the "credits" field. It's identical to CreditsEQ.
+func Credits(v float64) predicate.UsageDetail {
+	return predicate.UsageDetail(sql.FieldEQ(FieldCredits, v))
+}
+
 // CreatedAtEQ applies the EQ predicate on the "created_at" field.
 func CreatedAtEQ(v time.Time) predicate.UsageDetail {
 	return predicate.UsageDetail(sql.FieldEQ(FieldCreatedAt, v))
@@ -944,6 +949,56 @@ func ModelContainsFold(v string) predicate.UsageDetail {
 	return predicate.UsageDetail(sql.FieldContainsFold(FieldModel, v))
 }
 
+// CreditsEQ applies the EQ predicate on the "credits" field.
+func CreditsEQ(v float64) predicate.UsageDetail {
+	return predicate.UsageDetail(sql.FieldEQ(FieldCredits, v))
+}
+
+// CreditsNEQ applies the NEQ predicate on the "credits" field.
+func CreditsNEQ(v float64) predicate.UsageDetail {
+	return predicate.UsageDetail(sql.FieldNEQ(FieldCredits, v))
+}
+
+// CreditsIn applies the In predicate on the "credits" field.
+func CreditsIn(vs ...float64) predicate.UsageDetail {
+	return predicate.UsageDetail(sql.FieldIn(FieldCredits, vs...))
+}
+
+// CreditsNotIn applies the NotIn predicate on the "credits" field.
+func CreditsNotIn(vs ...float64) predicate.UsageDetail {
+	return predicate.UsageDetail(sql.FieldNotIn(FieldCredits, vs...))
+}
+
+// CreditsGT applies the GT predicate on the "credits" field.
+func CreditsGT(v float64) predicate.UsageDetail {
+	return predicate.UsageDetail(sql.FieldGT(FieldCredits, v))
+}
+
+// CreditsGTE applies the GTE predicate on the "credits" field.
+func CreditsGTE(v float64) predicate.UsageDetail {
+	return predicate.UsageDetail(sql.FieldGTE(FieldCredits, v))
+}
+
+// CreditsLT applies the LT predicate on the "credits" field.
+func CreditsLT(v float64) predicate.UsageDetail {
+	return predicate.UsageDetail(sql.FieldLT(FieldCredits, v))
+}
+
+// CreditsLTE applies the LTE predicate on the "credits" field.
+func CreditsLTE(v float64) predicate.UsageDetail {
+	return predicate.UsageDetail(sql.FieldLTE(FieldCredits, v))
+}
+
+// CreditsIsNil applies the IsNil predicate on the "credits" field.
+func CreditsIsNil() predicate.UsageDetail {
+	return predicate.UsageDetail(sql.FieldIsNull(FieldCredits))
+}
+
+// CreditsNotNil applies the NotNil predicate on the "credits" field.
+func CreditsNotNil() predicate.UsageDetail {
+	return predicate.UsageDetail(sql.FieldNotNull(FieldCredits))
+}
+
 // And groups predicates with the AND operator between them.
 func And(predicates ...predicate.UsageDetail) predicate.UsageDetail {
 	return predicate.UsageDetail(sql.AndPredicates(predicates...))

+ 98 - 0
ent/usagedetail_create.go

@@ -239,6 +239,20 @@ func (udc *UsageDetailCreate) SetNillableModel(s *string) *UsageDetailCreate {
 	return udc
 }
 
+// SetCredits sets the "credits" field.
+func (udc *UsageDetailCreate) SetCredits(f float64) *UsageDetailCreate {
+	udc.mutation.SetCredits(f)
+	return udc
+}
+
+// SetNillableCredits sets the "credits" field if the given value is not nil.
+func (udc *UsageDetailCreate) SetNillableCredits(f *float64) *UsageDetailCreate {
+	if f != nil {
+		udc.SetCredits(*f)
+	}
+	return udc
+}
+
 // SetID sets the "id" field.
 func (udc *UsageDetailCreate) SetID(u uint64) *UsageDetailCreate {
 	udc.mutation.SetID(u)
@@ -462,6 +476,10 @@ func (udc *UsageDetailCreate) createSpec() (*UsageDetail, *sqlgraph.CreateSpec)
 		_spec.SetField(usagedetail.FieldModel, field.TypeString, value)
 		_node.Model = value
 	}
+	if value, ok := udc.mutation.Credits(); ok {
+		_spec.SetField(usagedetail.FieldCredits, field.TypeFloat64, value)
+		_node.Credits = value
+	}
 	return _node, _spec
 }
 
@@ -796,6 +814,30 @@ func (u *UsageDetailUpsert) ClearModel() *UsageDetailUpsert {
 	return u
 }
 
+// SetCredits sets the "credits" field.
+func (u *UsageDetailUpsert) SetCredits(v float64) *UsageDetailUpsert {
+	u.Set(usagedetail.FieldCredits, v)
+	return u
+}
+
+// UpdateCredits sets the "credits" field to the value that was provided on create.
+func (u *UsageDetailUpsert) UpdateCredits() *UsageDetailUpsert {
+	u.SetExcluded(usagedetail.FieldCredits)
+	return u
+}
+
+// AddCredits adds v to the "credits" field.
+func (u *UsageDetailUpsert) AddCredits(v float64) *UsageDetailUpsert {
+	u.Add(usagedetail.FieldCredits, v)
+	return u
+}
+
+// ClearCredits clears the value of the "credits" field.
+func (u *UsageDetailUpsert) ClearCredits() *UsageDetailUpsert {
+	u.SetNull(usagedetail.FieldCredits)
+	return u
+}
+
 // UpdateNewValues updates the mutable fields using the new values that were set on create except the ID field.
 // Using this option is equivalent to using:
 //
@@ -1176,6 +1218,34 @@ func (u *UsageDetailUpsertOne) ClearModel() *UsageDetailUpsertOne {
 	})
 }
 
+// SetCredits sets the "credits" field.
+func (u *UsageDetailUpsertOne) SetCredits(v float64) *UsageDetailUpsertOne {
+	return u.Update(func(s *UsageDetailUpsert) {
+		s.SetCredits(v)
+	})
+}
+
+// AddCredits adds v to the "credits" field.
+func (u *UsageDetailUpsertOne) AddCredits(v float64) *UsageDetailUpsertOne {
+	return u.Update(func(s *UsageDetailUpsert) {
+		s.AddCredits(v)
+	})
+}
+
+// UpdateCredits sets the "credits" field to the value that was provided on create.
+func (u *UsageDetailUpsertOne) UpdateCredits() *UsageDetailUpsertOne {
+	return u.Update(func(s *UsageDetailUpsert) {
+		s.UpdateCredits()
+	})
+}
+
+// ClearCredits clears the value of the "credits" field.
+func (u *UsageDetailUpsertOne) ClearCredits() *UsageDetailUpsertOne {
+	return u.Update(func(s *UsageDetailUpsert) {
+		s.ClearCredits()
+	})
+}
+
 // Exec executes the query.
 func (u *UsageDetailUpsertOne) Exec(ctx context.Context) error {
 	if len(u.create.conflict) == 0 {
@@ -1722,6 +1792,34 @@ func (u *UsageDetailUpsertBulk) ClearModel() *UsageDetailUpsertBulk {
 	})
 }
 
+// SetCredits sets the "credits" field.
+func (u *UsageDetailUpsertBulk) SetCredits(v float64) *UsageDetailUpsertBulk {
+	return u.Update(func(s *UsageDetailUpsert) {
+		s.SetCredits(v)
+	})
+}
+
+// AddCredits adds v to the "credits" field.
+func (u *UsageDetailUpsertBulk) AddCredits(v float64) *UsageDetailUpsertBulk {
+	return u.Update(func(s *UsageDetailUpsert) {
+		s.AddCredits(v)
+	})
+}
+
+// UpdateCredits sets the "credits" field to the value that was provided on create.
+func (u *UsageDetailUpsertBulk) UpdateCredits() *UsageDetailUpsertBulk {
+	return u.Update(func(s *UsageDetailUpsert) {
+		s.UpdateCredits()
+	})
+}
+
+// ClearCredits clears the value of the "credits" field.
+func (u *UsageDetailUpsertBulk) ClearCredits() *UsageDetailUpsertBulk {
+	return u.Update(func(s *UsageDetailUpsert) {
+		s.ClearCredits()
+	})
+}
+
 // Exec executes the query.
 func (u *UsageDetailUpsertBulk) Exec(ctx context.Context) error {
 	if u.create.err != nil {

+ 72 - 0
ent/usagedetail_update.go

@@ -341,6 +341,33 @@ func (udu *UsageDetailUpdate) ClearModel() *UsageDetailUpdate {
 	return udu
 }
 
+// SetCredits sets the "credits" field.
+func (udu *UsageDetailUpdate) SetCredits(f float64) *UsageDetailUpdate {
+	udu.mutation.ResetCredits()
+	udu.mutation.SetCredits(f)
+	return udu
+}
+
+// SetNillableCredits sets the "credits" field if the given value is not nil.
+func (udu *UsageDetailUpdate) SetNillableCredits(f *float64) *UsageDetailUpdate {
+	if f != nil {
+		udu.SetCredits(*f)
+	}
+	return udu
+}
+
+// AddCredits adds f to the "credits" field.
+func (udu *UsageDetailUpdate) AddCredits(f float64) *UsageDetailUpdate {
+	udu.mutation.AddCredits(f)
+	return udu
+}
+
+// ClearCredits clears the value of the "credits" field.
+func (udu *UsageDetailUpdate) ClearCredits() *UsageDetailUpdate {
+	udu.mutation.ClearCredits()
+	return udu
+}
+
 // Mutation returns the UsageDetailMutation object of the builder.
 func (udu *UsageDetailUpdate) Mutation() *UsageDetailMutation {
 	return udu.mutation
@@ -487,6 +514,15 @@ func (udu *UsageDetailUpdate) sqlSave(ctx context.Context) (n int, err error) {
 	if udu.mutation.ModelCleared() {
 		_spec.ClearField(usagedetail.FieldModel, field.TypeString)
 	}
+	if value, ok := udu.mutation.Credits(); ok {
+		_spec.SetField(usagedetail.FieldCredits, field.TypeFloat64, value)
+	}
+	if value, ok := udu.mutation.AddedCredits(); ok {
+		_spec.AddField(usagedetail.FieldCredits, field.TypeFloat64, value)
+	}
+	if udu.mutation.CreditsCleared() {
+		_spec.ClearField(usagedetail.FieldCredits, field.TypeFloat64)
+	}
 	if n, err = sqlgraph.UpdateNodes(ctx, udu.driver, _spec); err != nil {
 		if _, ok := err.(*sqlgraph.NotFoundError); ok {
 			err = &NotFoundError{usagedetail.Label}
@@ -819,6 +855,33 @@ func (uduo *UsageDetailUpdateOne) ClearModel() *UsageDetailUpdateOne {
 	return uduo
 }
 
+// SetCredits sets the "credits" field.
+func (uduo *UsageDetailUpdateOne) SetCredits(f float64) *UsageDetailUpdateOne {
+	uduo.mutation.ResetCredits()
+	uduo.mutation.SetCredits(f)
+	return uduo
+}
+
+// SetNillableCredits sets the "credits" field if the given value is not nil.
+func (uduo *UsageDetailUpdateOne) SetNillableCredits(f *float64) *UsageDetailUpdateOne {
+	if f != nil {
+		uduo.SetCredits(*f)
+	}
+	return uduo
+}
+
+// AddCredits adds f to the "credits" field.
+func (uduo *UsageDetailUpdateOne) AddCredits(f float64) *UsageDetailUpdateOne {
+	uduo.mutation.AddCredits(f)
+	return uduo
+}
+
+// ClearCredits clears the value of the "credits" field.
+func (uduo *UsageDetailUpdateOne) ClearCredits() *UsageDetailUpdateOne {
+	uduo.mutation.ClearCredits()
+	return uduo
+}
+
 // Mutation returns the UsageDetailMutation object of the builder.
 func (uduo *UsageDetailUpdateOne) Mutation() *UsageDetailMutation {
 	return uduo.mutation
@@ -995,6 +1058,15 @@ func (uduo *UsageDetailUpdateOne) sqlSave(ctx context.Context) (_node *UsageDeta
 	if uduo.mutation.ModelCleared() {
 		_spec.ClearField(usagedetail.FieldModel, field.TypeString)
 	}
+	if value, ok := uduo.mutation.Credits(); ok {
+		_spec.SetField(usagedetail.FieldCredits, field.TypeFloat64, value)
+	}
+	if value, ok := uduo.mutation.AddedCredits(); ok {
+		_spec.AddField(usagedetail.FieldCredits, field.TypeFloat64, value)
+	}
+	if uduo.mutation.CreditsCleared() {
+		_spec.ClearField(usagedetail.FieldCredits, field.TypeFloat64)
+	}
 	_node = &UsageDetail{config: uduo.config}
 	_spec.Assign = _node.assignValues
 	_spec.ScanValues = _node.scanValues

+ 1 - 0
internal/logic/UsageDetail/get_usage_detail_list_logic.go

@@ -132,6 +132,7 @@ func (l *GetUsageDetailListLogic) GetUsageDetailList(req *types.UsageDetailListR
 				OrganizationId:   &v.OrganizationID,
 				OrganizationName: &organizationName,
 				Model:            &v.Model,
+				Credits:          &v.Credits,
 			})
 	}
 

+ 1 - 0
internal/logic/UsageDetail/get_usage_detail_logic.go

@@ -79,6 +79,7 @@ func (l *GetUsageDetailLogic) GetUsageDetail(req *types.IDReq) (resp *types.Usag
 			CompletionTokens: &data.CompletionTokens,
 			OrganizationId:   &data.OrganizationID,
 			Model:            &data.Model,
+			Credits:          &data.Credits,
 		}
 	}