浏览代码

fix:账号返回积分消耗总数

jimmyyem 4 天之前
父节点
当前提交
6e7eceb922

+ 3 - 0
desc/wechat/usage_total.api

@@ -17,6 +17,9 @@ type (
         // 使用token总数
         // 使用token总数
         TotalTokens *uint64 `json:"totalTokens,optional"`
         TotalTokens *uint64 `json:"totalTokens,optional"`
 
 
+		// 使用积分总数
+		Credits float64 `json:"credits,optional"`
+
         // 重制后的起始usage_detail 索引
         // 重制后的起始usage_detail 索引
         StartIndex *uint64 `json:"startIndex,optional"`
         StartIndex *uint64 `json:"startIndex,optional"`
 
 

+ 3 - 0
desc/wechat/wx.api

@@ -73,6 +73,9 @@ type (
         // 使用token总数
         // 使用token总数
         TotalTokens *uint64 `json:"totalTokens,optional"`
         TotalTokens *uint64 `json:"totalTokens,optional"`
 
 
+		// 使用积分总数
+		Credits *float64 `json:"credits,optional"`
+
 		Ctype *uint64 `json:"ctype,optional"`
 		Ctype *uint64 `json:"ctype,optional"`
     }
     }
 
 

+ 2 - 1
ent/migrate/schema.go

@@ -1166,6 +1166,7 @@ var (
 		{Name: "type", Type: field.TypeInt, Nullable: true, Comment: "1 微信 2 名片", Default: 1},
 		{Name: "type", Type: field.TypeInt, Nullable: true, Comment: "1 微信 2 名片", Default: 1},
 		{Name: "bot_id", Type: field.TypeString, Comment: "微信或名片id", Default: ""},
 		{Name: "bot_id", Type: field.TypeString, Comment: "微信或名片id", Default: ""},
 		{Name: "total_tokens", Type: field.TypeUint64, Nullable: true, Comment: "使用token总数", Default: 0},
 		{Name: "total_tokens", Type: field.TypeUint64, Nullable: true, Comment: "使用token总数", Default: 0},
+		{Name: "credits", Type: field.TypeFloat64, Nullable: true, Comment: "使用积分总数", Default: 0},
 		{Name: "start_index", Type: field.TypeUint64, Nullable: true, Comment: "重制后的起始usage_detail 索引", Default: 0},
 		{Name: "start_index", Type: field.TypeUint64, Nullable: true, Comment: "重制后的起始usage_detail 索引", Default: 0},
 		{Name: "end_index", Type: field.TypeUint64, Nullable: true, Comment: "usage_detail 索引", Default: 0},
 		{Name: "end_index", Type: field.TypeUint64, Nullable: true, Comment: "usage_detail 索引", Default: 0},
 		{Name: "organization_id", Type: field.TypeUint64, Nullable: true, Comment: "机构 ID", Default: 1},
 		{Name: "organization_id", Type: field.TypeUint64, Nullable: true, Comment: "机构 ID", Default: 1},
@@ -1184,7 +1185,7 @@ var (
 			{
 			{
 				Name:    "usagetotal_organization_id",
 				Name:    "usagetotal_organization_id",
 				Unique:  false,
 				Unique:  false,
-				Columns: []*schema.Column{UsageTotalColumns[9]},
+				Columns: []*schema.Column{UsageTotalColumns[10]},
 			},
 			},
 		},
 		},
 	}
 	}

+ 108 - 1
ent/mutation.go

@@ -43390,6 +43390,8 @@ type UsageTotalMutation struct {
 	bot_id             *string
 	bot_id             *string
 	total_tokens       *uint64
 	total_tokens       *uint64
 	addtotal_tokens    *int64
 	addtotal_tokens    *int64
+	credits            *float64
+	addcredits         *float64
 	start_index        *uint64
 	start_index        *uint64
 	addstart_index     *int64
 	addstart_index     *int64
 	end_index          *uint64
 	end_index          *uint64
@@ -43824,6 +43826,76 @@ func (m *UsageTotalMutation) ResetTotalTokens() {
 	delete(m.clearedFields, usagetotal.FieldTotalTokens)
 	delete(m.clearedFields, usagetotal.FieldTotalTokens)
 }
 }
 
 
+// SetCredits sets the "credits" field.
+func (m *UsageTotalMutation) SetCredits(f float64) {
+	m.credits = &f
+	m.addcredits = nil
+}
+
+// Credits returns the value of the "credits" field in the mutation.
+func (m *UsageTotalMutation) 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 UsageTotal entity.
+// If the UsageTotal 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 *UsageTotalMutation) 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 *UsageTotalMutation) 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 *UsageTotalMutation) 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 *UsageTotalMutation) ClearCredits() {
+	m.credits = nil
+	m.addcredits = nil
+	m.clearedFields[usagetotal.FieldCredits] = struct{}{}
+}
+
+// CreditsCleared returns if the "credits" field was cleared in this mutation.
+func (m *UsageTotalMutation) CreditsCleared() bool {
+	_, ok := m.clearedFields[usagetotal.FieldCredits]
+	return ok
+}
+
+// ResetCredits resets all changes to the "credits" field.
+func (m *UsageTotalMutation) ResetCredits() {
+	m.credits = nil
+	m.addcredits = nil
+	delete(m.clearedFields, usagetotal.FieldCredits)
+}
+
 // SetStartIndex sets the "start_index" field.
 // SetStartIndex sets the "start_index" field.
 func (m *UsageTotalMutation) SetStartIndex(u uint64) {
 func (m *UsageTotalMutation) SetStartIndex(u uint64) {
 	m.start_index = &u
 	m.start_index = &u
@@ -44068,7 +44140,7 @@ func (m *UsageTotalMutation) Type() string {
 // order to get all numeric fields that were incremented/decremented, call
 // order to get all numeric fields that were incremented/decremented, call
 // AddedFields().
 // AddedFields().
 func (m *UsageTotalMutation) Fields() []string {
 func (m *UsageTotalMutation) Fields() []string {
-	fields := make([]string, 0, 9)
+	fields := make([]string, 0, 10)
 	if m.created_at != nil {
 	if m.created_at != nil {
 		fields = append(fields, usagetotal.FieldCreatedAt)
 		fields = append(fields, usagetotal.FieldCreatedAt)
 	}
 	}
@@ -44087,6 +44159,9 @@ func (m *UsageTotalMutation) Fields() []string {
 	if m.total_tokens != nil {
 	if m.total_tokens != nil {
 		fields = append(fields, usagetotal.FieldTotalTokens)
 		fields = append(fields, usagetotal.FieldTotalTokens)
 	}
 	}
+	if m.credits != nil {
+		fields = append(fields, usagetotal.FieldCredits)
+	}
 	if m.start_index != nil {
 	if m.start_index != nil {
 		fields = append(fields, usagetotal.FieldStartIndex)
 		fields = append(fields, usagetotal.FieldStartIndex)
 	}
 	}
@@ -44116,6 +44191,8 @@ func (m *UsageTotalMutation) Field(name string) (ent.Value, bool) {
 		return m.BotID()
 		return m.BotID()
 	case usagetotal.FieldTotalTokens:
 	case usagetotal.FieldTotalTokens:
 		return m.TotalTokens()
 		return m.TotalTokens()
+	case usagetotal.FieldCredits:
+		return m.Credits()
 	case usagetotal.FieldStartIndex:
 	case usagetotal.FieldStartIndex:
 		return m.StartIndex()
 		return m.StartIndex()
 	case usagetotal.FieldEndIndex:
 	case usagetotal.FieldEndIndex:
@@ -44143,6 +44220,8 @@ func (m *UsageTotalMutation) OldField(ctx context.Context, name string) (ent.Val
 		return m.OldBotID(ctx)
 		return m.OldBotID(ctx)
 	case usagetotal.FieldTotalTokens:
 	case usagetotal.FieldTotalTokens:
 		return m.OldTotalTokens(ctx)
 		return m.OldTotalTokens(ctx)
+	case usagetotal.FieldCredits:
+		return m.OldCredits(ctx)
 	case usagetotal.FieldStartIndex:
 	case usagetotal.FieldStartIndex:
 		return m.OldStartIndex(ctx)
 		return m.OldStartIndex(ctx)
 	case usagetotal.FieldEndIndex:
 	case usagetotal.FieldEndIndex:
@@ -44200,6 +44279,13 @@ func (m *UsageTotalMutation) SetField(name string, value ent.Value) error {
 		}
 		}
 		m.SetTotalTokens(v)
 		m.SetTotalTokens(v)
 		return nil
 		return nil
+	case usagetotal.FieldCredits:
+		v, ok := value.(float64)
+		if !ok {
+			return fmt.Errorf("unexpected type %T for field %s", value, name)
+		}
+		m.SetCredits(v)
+		return nil
 	case usagetotal.FieldStartIndex:
 	case usagetotal.FieldStartIndex:
 		v, ok := value.(uint64)
 		v, ok := value.(uint64)
 		if !ok {
 		if !ok {
@@ -44238,6 +44324,9 @@ func (m *UsageTotalMutation) AddedFields() []string {
 	if m.addtotal_tokens != nil {
 	if m.addtotal_tokens != nil {
 		fields = append(fields, usagetotal.FieldTotalTokens)
 		fields = append(fields, usagetotal.FieldTotalTokens)
 	}
 	}
+	if m.addcredits != nil {
+		fields = append(fields, usagetotal.FieldCredits)
+	}
 	if m.addstart_index != nil {
 	if m.addstart_index != nil {
 		fields = append(fields, usagetotal.FieldStartIndex)
 		fields = append(fields, usagetotal.FieldStartIndex)
 	}
 	}
@@ -44261,6 +44350,8 @@ func (m *UsageTotalMutation) AddedField(name string) (ent.Value, bool) {
 		return m.AddedType()
 		return m.AddedType()
 	case usagetotal.FieldTotalTokens:
 	case usagetotal.FieldTotalTokens:
 		return m.AddedTotalTokens()
 		return m.AddedTotalTokens()
+	case usagetotal.FieldCredits:
+		return m.AddedCredits()
 	case usagetotal.FieldStartIndex:
 	case usagetotal.FieldStartIndex:
 		return m.AddedStartIndex()
 		return m.AddedStartIndex()
 	case usagetotal.FieldEndIndex:
 	case usagetotal.FieldEndIndex:
@@ -44297,6 +44388,13 @@ func (m *UsageTotalMutation) AddField(name string, value ent.Value) error {
 		}
 		}
 		m.AddTotalTokens(v)
 		m.AddTotalTokens(v)
 		return nil
 		return nil
+	case usagetotal.FieldCredits:
+		v, ok := value.(float64)
+		if !ok {
+			return fmt.Errorf("unexpected type %T for field %s", value, name)
+		}
+		m.AddCredits(v)
+		return nil
 	case usagetotal.FieldStartIndex:
 	case usagetotal.FieldStartIndex:
 		v, ok := value.(int64)
 		v, ok := value.(int64)
 		if !ok {
 		if !ok {
@@ -44335,6 +44433,9 @@ func (m *UsageTotalMutation) ClearedFields() []string {
 	if m.FieldCleared(usagetotal.FieldTotalTokens) {
 	if m.FieldCleared(usagetotal.FieldTotalTokens) {
 		fields = append(fields, usagetotal.FieldTotalTokens)
 		fields = append(fields, usagetotal.FieldTotalTokens)
 	}
 	}
+	if m.FieldCleared(usagetotal.FieldCredits) {
+		fields = append(fields, usagetotal.FieldCredits)
+	}
 	if m.FieldCleared(usagetotal.FieldStartIndex) {
 	if m.FieldCleared(usagetotal.FieldStartIndex) {
 		fields = append(fields, usagetotal.FieldStartIndex)
 		fields = append(fields, usagetotal.FieldStartIndex)
 	}
 	}
@@ -44367,6 +44468,9 @@ func (m *UsageTotalMutation) ClearField(name string) error {
 	case usagetotal.FieldTotalTokens:
 	case usagetotal.FieldTotalTokens:
 		m.ClearTotalTokens()
 		m.ClearTotalTokens()
 		return nil
 		return nil
+	case usagetotal.FieldCredits:
+		m.ClearCredits()
+		return nil
 	case usagetotal.FieldStartIndex:
 	case usagetotal.FieldStartIndex:
 		m.ClearStartIndex()
 		m.ClearStartIndex()
 		return nil
 		return nil
@@ -44402,6 +44506,9 @@ func (m *UsageTotalMutation) ResetField(name string) error {
 	case usagetotal.FieldTotalTokens:
 	case usagetotal.FieldTotalTokens:
 		m.ResetTotalTokens()
 		m.ResetTotalTokens()
 		return nil
 		return nil
+	case usagetotal.FieldCredits:
+		m.ResetCredits()
+		return nil
 	case usagetotal.FieldStartIndex:
 	case usagetotal.FieldStartIndex:
 		m.ResetStartIndex()
 		m.ResetStartIndex()
 		return nil
 		return nil

+ 7 - 3
ent/runtime/runtime.go

@@ -1560,16 +1560,20 @@ func init() {
 	usagetotalDescTotalTokens := usagetotalFields[2].Descriptor()
 	usagetotalDescTotalTokens := usagetotalFields[2].Descriptor()
 	// usagetotal.DefaultTotalTokens holds the default value on creation for the total_tokens field.
 	// usagetotal.DefaultTotalTokens holds the default value on creation for the total_tokens field.
 	usagetotal.DefaultTotalTokens = usagetotalDescTotalTokens.Default.(uint64)
 	usagetotal.DefaultTotalTokens = usagetotalDescTotalTokens.Default.(uint64)
+	// usagetotalDescCredits is the schema descriptor for credits field.
+	usagetotalDescCredits := usagetotalFields[3].Descriptor()
+	// usagetotal.DefaultCredits holds the default value on creation for the credits field.
+	usagetotal.DefaultCredits = usagetotalDescCredits.Default.(float64)
 	// usagetotalDescStartIndex is the schema descriptor for start_index field.
 	// usagetotalDescStartIndex is the schema descriptor for start_index field.
-	usagetotalDescStartIndex := usagetotalFields[3].Descriptor()
+	usagetotalDescStartIndex := usagetotalFields[4].Descriptor()
 	// usagetotal.DefaultStartIndex holds the default value on creation for the start_index field.
 	// usagetotal.DefaultStartIndex holds the default value on creation for the start_index field.
 	usagetotal.DefaultStartIndex = usagetotalDescStartIndex.Default.(uint64)
 	usagetotal.DefaultStartIndex = usagetotalDescStartIndex.Default.(uint64)
 	// usagetotalDescEndIndex is the schema descriptor for end_index field.
 	// usagetotalDescEndIndex is the schema descriptor for end_index field.
-	usagetotalDescEndIndex := usagetotalFields[4].Descriptor()
+	usagetotalDescEndIndex := usagetotalFields[5].Descriptor()
 	// usagetotal.DefaultEndIndex holds the default value on creation for the end_index field.
 	// usagetotal.DefaultEndIndex holds the default value on creation for the end_index field.
 	usagetotal.DefaultEndIndex = usagetotalDescEndIndex.Default.(uint64)
 	usagetotal.DefaultEndIndex = usagetotalDescEndIndex.Default.(uint64)
 	// usagetotalDescOrganizationID is the schema descriptor for organization_id field.
 	// usagetotalDescOrganizationID is the schema descriptor for organization_id field.
-	usagetotalDescOrganizationID := usagetotalFields[5].Descriptor()
+	usagetotalDescOrganizationID := usagetotalFields[6].Descriptor()
 	// usagetotal.DefaultOrganizationID holds the default value on creation for the organization_id field.
 	// usagetotal.DefaultOrganizationID holds the default value on creation for the organization_id field.
 	usagetotal.DefaultOrganizationID = usagetotalDescOrganizationID.Default.(uint64)
 	usagetotal.DefaultOrganizationID = usagetotalDescOrganizationID.Default.(uint64)
 	whatsappMixin := schema.Whatsapp{}.Mixin()
 	whatsappMixin := schema.Whatsapp{}.Mixin()

+ 3 - 0
ent/schema/usage_total.go

@@ -24,6 +24,9 @@ func (UsageTotal) Fields() []ent.Field {
 		field.Uint64("total_tokens").Optional().Default(0).
 		field.Uint64("total_tokens").Optional().Default(0).
 			Annotations(entsql.WithComments(true)).
 			Annotations(entsql.WithComments(true)).
 			Comment("使用token总数"),
 			Comment("使用token总数"),
+		field.Float("credits").Optional().Default(0).
+			Annotations(entsql.WithComments(true)).
+			Comment("使用积分总数"),
 		field.Uint64("start_index").Optional().Default(0).
 		field.Uint64("start_index").Optional().Default(0).
 			Annotations(entsql.WithComments(true)).
 			Annotations(entsql.WithComments(true)).
 			Comment("重制后的起始usage_detail 索引"),
 			Comment("重制后的起始usage_detail 索引"),

+ 24 - 0
ent/set_not_nil.go

@@ -9440,6 +9440,30 @@ func (ut *UsageTotalCreate) SetNotNilTotalTokens(value *uint64) *UsageTotalCreat
 }
 }
 
 
 // set field if value's pointer is not nil.
 // set field if value's pointer is not nil.
+func (ut *UsageTotalUpdate) SetNotNilCredits(value *float64) *UsageTotalUpdate {
+	if value != nil {
+		return ut.SetCredits(*value)
+	}
+	return ut
+}
+
+// set field if value's pointer is not nil.
+func (ut *UsageTotalUpdateOne) SetNotNilCredits(value *float64) *UsageTotalUpdateOne {
+	if value != nil {
+		return ut.SetCredits(*value)
+	}
+	return ut
+}
+
+// set field if value's pointer is not nil.
+func (ut *UsageTotalCreate) SetNotNilCredits(value *float64) *UsageTotalCreate {
+	if value != nil {
+		return ut.SetCredits(*value)
+	}
+	return ut
+}
+
+// set field if value's pointer is not nil.
 func (ut *UsageTotalUpdate) SetNotNilStartIndex(value *uint64) *UsageTotalUpdate {
 func (ut *UsageTotalUpdate) SetNotNilStartIndex(value *uint64) *UsageTotalUpdate {
 	if value != nil {
 	if value != nil {
 		return ut.SetStartIndex(*value)
 		return ut.SetStartIndex(*value)

+ 13 - 0
ent/usagetotal.go

@@ -29,6 +29,8 @@ type UsageTotal struct {
 	BotID string `json:"bot_id,omitempty"`
 	BotID string `json:"bot_id,omitempty"`
 	// 使用token总数
 	// 使用token总数
 	TotalTokens uint64 `json:"total_tokens,omitempty"`
 	TotalTokens uint64 `json:"total_tokens,omitempty"`
+	// 使用积分总数
+	Credits float64 `json:"credits,omitempty"`
 	// 重制后的起始usage_detail 索引
 	// 重制后的起始usage_detail 索引
 	StartIndex uint64 `json:"start_index,omitempty"`
 	StartIndex uint64 `json:"start_index,omitempty"`
 	// usage_detail 索引
 	// usage_detail 索引
@@ -43,6 +45,8 @@ func (*UsageTotal) scanValues(columns []string) ([]any, error) {
 	values := make([]any, len(columns))
 	values := make([]any, len(columns))
 	for i := range columns {
 	for i := range columns {
 		switch columns[i] {
 		switch columns[i] {
+		case usagetotal.FieldCredits:
+			values[i] = new(sql.NullFloat64)
 		case usagetotal.FieldID, usagetotal.FieldStatus, usagetotal.FieldType, usagetotal.FieldTotalTokens, usagetotal.FieldStartIndex, usagetotal.FieldEndIndex, usagetotal.FieldOrganizationID:
 		case usagetotal.FieldID, usagetotal.FieldStatus, usagetotal.FieldType, usagetotal.FieldTotalTokens, usagetotal.FieldStartIndex, usagetotal.FieldEndIndex, usagetotal.FieldOrganizationID:
 			values[i] = new(sql.NullInt64)
 			values[i] = new(sql.NullInt64)
 		case usagetotal.FieldBotID:
 		case usagetotal.FieldBotID:
@@ -106,6 +110,12 @@ func (ut *UsageTotal) assignValues(columns []string, values []any) error {
 			} else if value.Valid {
 			} else if value.Valid {
 				ut.TotalTokens = uint64(value.Int64)
 				ut.TotalTokens = uint64(value.Int64)
 			}
 			}
+		case usagetotal.FieldCredits:
+			if value, ok := values[i].(*sql.NullFloat64); !ok {
+				return fmt.Errorf("unexpected type %T for field credits", values[i])
+			} else if value.Valid {
+				ut.Credits = value.Float64
+			}
 		case usagetotal.FieldStartIndex:
 		case usagetotal.FieldStartIndex:
 			if value, ok := values[i].(*sql.NullInt64); !ok {
 			if value, ok := values[i].(*sql.NullInt64); !ok {
 				return fmt.Errorf("unexpected type %T for field start_index", values[i])
 				return fmt.Errorf("unexpected type %T for field start_index", values[i])
@@ -178,6 +188,9 @@ func (ut *UsageTotal) String() string {
 	builder.WriteString("total_tokens=")
 	builder.WriteString("total_tokens=")
 	builder.WriteString(fmt.Sprintf("%v", ut.TotalTokens))
 	builder.WriteString(fmt.Sprintf("%v", ut.TotalTokens))
 	builder.WriteString(", ")
 	builder.WriteString(", ")
+	builder.WriteString("credits=")
+	builder.WriteString(fmt.Sprintf("%v", ut.Credits))
+	builder.WriteString(", ")
 	builder.WriteString("start_index=")
 	builder.WriteString("start_index=")
 	builder.WriteString(fmt.Sprintf("%v", ut.StartIndex))
 	builder.WriteString(fmt.Sprintf("%v", ut.StartIndex))
 	builder.WriteString(", ")
 	builder.WriteString(", ")

+ 10 - 0
ent/usagetotal/usagetotal.go

@@ -25,6 +25,8 @@ const (
 	FieldBotID = "bot_id"
 	FieldBotID = "bot_id"
 	// FieldTotalTokens holds the string denoting the total_tokens field in the database.
 	// FieldTotalTokens holds the string denoting the total_tokens field in the database.
 	FieldTotalTokens = "total_tokens"
 	FieldTotalTokens = "total_tokens"
+	// FieldCredits holds the string denoting the credits field in the database.
+	FieldCredits = "credits"
 	// FieldStartIndex holds the string denoting the start_index field in the database.
 	// FieldStartIndex holds the string denoting the start_index field in the database.
 	FieldStartIndex = "start_index"
 	FieldStartIndex = "start_index"
 	// FieldEndIndex holds the string denoting the end_index field in the database.
 	// FieldEndIndex holds the string denoting the end_index field in the database.
@@ -44,6 +46,7 @@ var Columns = []string{
 	FieldType,
 	FieldType,
 	FieldBotID,
 	FieldBotID,
 	FieldTotalTokens,
 	FieldTotalTokens,
+	FieldCredits,
 	FieldStartIndex,
 	FieldStartIndex,
 	FieldEndIndex,
 	FieldEndIndex,
 	FieldOrganizationID,
 	FieldOrganizationID,
@@ -74,6 +77,8 @@ var (
 	DefaultBotID string
 	DefaultBotID string
 	// DefaultTotalTokens holds the default value on creation for the "total_tokens" field.
 	// DefaultTotalTokens holds the default value on creation for the "total_tokens" field.
 	DefaultTotalTokens uint64
 	DefaultTotalTokens uint64
+	// DefaultCredits holds the default value on creation for the "credits" field.
+	DefaultCredits float64
 	// DefaultStartIndex holds the default value on creation for the "start_index" field.
 	// DefaultStartIndex holds the default value on creation for the "start_index" field.
 	DefaultStartIndex uint64
 	DefaultStartIndex uint64
 	// DefaultEndIndex holds the default value on creation for the "end_index" field.
 	// DefaultEndIndex holds the default value on creation for the "end_index" field.
@@ -120,6 +125,11 @@ func ByTotalTokens(opts ...sql.OrderTermOption) OrderOption {
 	return sql.OrderByField(FieldTotalTokens, opts...).ToFunc()
 	return sql.OrderByField(FieldTotalTokens, opts...).ToFunc()
 }
 }
 
 
+// ByCredits orders the results by the credits field.
+func ByCredits(opts ...sql.OrderTermOption) OrderOption {
+	return sql.OrderByField(FieldCredits, opts...).ToFunc()
+}
+
 // ByStartIndex orders the results by the start_index field.
 // ByStartIndex orders the results by the start_index field.
 func ByStartIndex(opts ...sql.OrderTermOption) OrderOption {
 func ByStartIndex(opts ...sql.OrderTermOption) OrderOption {
 	return sql.OrderByField(FieldStartIndex, opts...).ToFunc()
 	return sql.OrderByField(FieldStartIndex, opts...).ToFunc()

+ 55 - 0
ent/usagetotal/where.go

@@ -84,6 +84,11 @@ func TotalTokens(v uint64) predicate.UsageTotal {
 	return predicate.UsageTotal(sql.FieldEQ(FieldTotalTokens, v))
 	return predicate.UsageTotal(sql.FieldEQ(FieldTotalTokens, v))
 }
 }
 
 
+// Credits applies equality check predicate on the "credits" field. It's identical to CreditsEQ.
+func Credits(v float64) predicate.UsageTotal {
+	return predicate.UsageTotal(sql.FieldEQ(FieldCredits, v))
+}
+
 // StartIndex applies equality check predicate on the "start_index" field. It's identical to StartIndexEQ.
 // StartIndex applies equality check predicate on the "start_index" field. It's identical to StartIndexEQ.
 func StartIndex(v uint64) predicate.UsageTotal {
 func StartIndex(v uint64) predicate.UsageTotal {
 	return predicate.UsageTotal(sql.FieldEQ(FieldStartIndex, v))
 	return predicate.UsageTotal(sql.FieldEQ(FieldStartIndex, v))
@@ -394,6 +399,56 @@ func TotalTokensNotNil() predicate.UsageTotal {
 	return predicate.UsageTotal(sql.FieldNotNull(FieldTotalTokens))
 	return predicate.UsageTotal(sql.FieldNotNull(FieldTotalTokens))
 }
 }
 
 
+// CreditsEQ applies the EQ predicate on the "credits" field.
+func CreditsEQ(v float64) predicate.UsageTotal {
+	return predicate.UsageTotal(sql.FieldEQ(FieldCredits, v))
+}
+
+// CreditsNEQ applies the NEQ predicate on the "credits" field.
+func CreditsNEQ(v float64) predicate.UsageTotal {
+	return predicate.UsageTotal(sql.FieldNEQ(FieldCredits, v))
+}
+
+// CreditsIn applies the In predicate on the "credits" field.
+func CreditsIn(vs ...float64) predicate.UsageTotal {
+	return predicate.UsageTotal(sql.FieldIn(FieldCredits, vs...))
+}
+
+// CreditsNotIn applies the NotIn predicate on the "credits" field.
+func CreditsNotIn(vs ...float64) predicate.UsageTotal {
+	return predicate.UsageTotal(sql.FieldNotIn(FieldCredits, vs...))
+}
+
+// CreditsGT applies the GT predicate on the "credits" field.
+func CreditsGT(v float64) predicate.UsageTotal {
+	return predicate.UsageTotal(sql.FieldGT(FieldCredits, v))
+}
+
+// CreditsGTE applies the GTE predicate on the "credits" field.
+func CreditsGTE(v float64) predicate.UsageTotal {
+	return predicate.UsageTotal(sql.FieldGTE(FieldCredits, v))
+}
+
+// CreditsLT applies the LT predicate on the "credits" field.
+func CreditsLT(v float64) predicate.UsageTotal {
+	return predicate.UsageTotal(sql.FieldLT(FieldCredits, v))
+}
+
+// CreditsLTE applies the LTE predicate on the "credits" field.
+func CreditsLTE(v float64) predicate.UsageTotal {
+	return predicate.UsageTotal(sql.FieldLTE(FieldCredits, v))
+}
+
+// CreditsIsNil applies the IsNil predicate on the "credits" field.
+func CreditsIsNil() predicate.UsageTotal {
+	return predicate.UsageTotal(sql.FieldIsNull(FieldCredits))
+}
+
+// CreditsNotNil applies the NotNil predicate on the "credits" field.
+func CreditsNotNil() predicate.UsageTotal {
+	return predicate.UsageTotal(sql.FieldNotNull(FieldCredits))
+}
+
 // StartIndexEQ applies the EQ predicate on the "start_index" field.
 // StartIndexEQ applies the EQ predicate on the "start_index" field.
 func StartIndexEQ(v uint64) predicate.UsageTotal {
 func StartIndexEQ(v uint64) predicate.UsageTotal {
 	return predicate.UsageTotal(sql.FieldEQ(FieldStartIndex, v))
 	return predicate.UsageTotal(sql.FieldEQ(FieldStartIndex, v))

+ 102 - 0
ent/usagetotal_create.go

@@ -106,6 +106,20 @@ func (utc *UsageTotalCreate) SetNillableTotalTokens(u *uint64) *UsageTotalCreate
 	return utc
 	return utc
 }
 }
 
 
+// SetCredits sets the "credits" field.
+func (utc *UsageTotalCreate) SetCredits(f float64) *UsageTotalCreate {
+	utc.mutation.SetCredits(f)
+	return utc
+}
+
+// SetNillableCredits sets the "credits" field if the given value is not nil.
+func (utc *UsageTotalCreate) SetNillableCredits(f *float64) *UsageTotalCreate {
+	if f != nil {
+		utc.SetCredits(*f)
+	}
+	return utc
+}
+
 // SetStartIndex sets the "start_index" field.
 // SetStartIndex sets the "start_index" field.
 func (utc *UsageTotalCreate) SetStartIndex(u uint64) *UsageTotalCreate {
 func (utc *UsageTotalCreate) SetStartIndex(u uint64) *UsageTotalCreate {
 	utc.mutation.SetStartIndex(u)
 	utc.mutation.SetStartIndex(u)
@@ -213,6 +227,10 @@ func (utc *UsageTotalCreate) defaults() {
 		v := usagetotal.DefaultTotalTokens
 		v := usagetotal.DefaultTotalTokens
 		utc.mutation.SetTotalTokens(v)
 		utc.mutation.SetTotalTokens(v)
 	}
 	}
+	if _, ok := utc.mutation.Credits(); !ok {
+		v := usagetotal.DefaultCredits
+		utc.mutation.SetCredits(v)
+	}
 	if _, ok := utc.mutation.StartIndex(); !ok {
 	if _, ok := utc.mutation.StartIndex(); !ok {
 		v := usagetotal.DefaultStartIndex
 		v := usagetotal.DefaultStartIndex
 		utc.mutation.SetStartIndex(v)
 		utc.mutation.SetStartIndex(v)
@@ -295,6 +313,10 @@ func (utc *UsageTotalCreate) createSpec() (*UsageTotal, *sqlgraph.CreateSpec) {
 		_spec.SetField(usagetotal.FieldTotalTokens, field.TypeUint64, value)
 		_spec.SetField(usagetotal.FieldTotalTokens, field.TypeUint64, value)
 		_node.TotalTokens = value
 		_node.TotalTokens = value
 	}
 	}
+	if value, ok := utc.mutation.Credits(); ok {
+		_spec.SetField(usagetotal.FieldCredits, field.TypeFloat64, value)
+		_node.Credits = value
+	}
 	if value, ok := utc.mutation.StartIndex(); ok {
 	if value, ok := utc.mutation.StartIndex(); ok {
 		_spec.SetField(usagetotal.FieldStartIndex, field.TypeUint64, value)
 		_spec.SetField(usagetotal.FieldStartIndex, field.TypeUint64, value)
 		_node.StartIndex = value
 		_node.StartIndex = value
@@ -455,6 +477,30 @@ func (u *UsageTotalUpsert) ClearTotalTokens() *UsageTotalUpsert {
 	return u
 	return u
 }
 }
 
 
+// SetCredits sets the "credits" field.
+func (u *UsageTotalUpsert) SetCredits(v float64) *UsageTotalUpsert {
+	u.Set(usagetotal.FieldCredits, v)
+	return u
+}
+
+// UpdateCredits sets the "credits" field to the value that was provided on create.
+func (u *UsageTotalUpsert) UpdateCredits() *UsageTotalUpsert {
+	u.SetExcluded(usagetotal.FieldCredits)
+	return u
+}
+
+// AddCredits adds v to the "credits" field.
+func (u *UsageTotalUpsert) AddCredits(v float64) *UsageTotalUpsert {
+	u.Add(usagetotal.FieldCredits, v)
+	return u
+}
+
+// ClearCredits clears the value of the "credits" field.
+func (u *UsageTotalUpsert) ClearCredits() *UsageTotalUpsert {
+	u.SetNull(usagetotal.FieldCredits)
+	return u
+}
+
 // SetStartIndex sets the "start_index" field.
 // SetStartIndex sets the "start_index" field.
 func (u *UsageTotalUpsert) SetStartIndex(v uint64) *UsageTotalUpsert {
 func (u *UsageTotalUpsert) SetStartIndex(v uint64) *UsageTotalUpsert {
 	u.Set(usagetotal.FieldStartIndex, v)
 	u.Set(usagetotal.FieldStartIndex, v)
@@ -690,6 +736,34 @@ func (u *UsageTotalUpsertOne) ClearTotalTokens() *UsageTotalUpsertOne {
 	})
 	})
 }
 }
 
 
+// SetCredits sets the "credits" field.
+func (u *UsageTotalUpsertOne) SetCredits(v float64) *UsageTotalUpsertOne {
+	return u.Update(func(s *UsageTotalUpsert) {
+		s.SetCredits(v)
+	})
+}
+
+// AddCredits adds v to the "credits" field.
+func (u *UsageTotalUpsertOne) AddCredits(v float64) *UsageTotalUpsertOne {
+	return u.Update(func(s *UsageTotalUpsert) {
+		s.AddCredits(v)
+	})
+}
+
+// UpdateCredits sets the "credits" field to the value that was provided on create.
+func (u *UsageTotalUpsertOne) UpdateCredits() *UsageTotalUpsertOne {
+	return u.Update(func(s *UsageTotalUpsert) {
+		s.UpdateCredits()
+	})
+}
+
+// ClearCredits clears the value of the "credits" field.
+func (u *UsageTotalUpsertOne) ClearCredits() *UsageTotalUpsertOne {
+	return u.Update(func(s *UsageTotalUpsert) {
+		s.ClearCredits()
+	})
+}
+
 // SetStartIndex sets the "start_index" field.
 // SetStartIndex sets the "start_index" field.
 func (u *UsageTotalUpsertOne) SetStartIndex(v uint64) *UsageTotalUpsertOne {
 func (u *UsageTotalUpsertOne) SetStartIndex(v uint64) *UsageTotalUpsertOne {
 	return u.Update(func(s *UsageTotalUpsert) {
 	return u.Update(func(s *UsageTotalUpsert) {
@@ -1103,6 +1177,34 @@ func (u *UsageTotalUpsertBulk) ClearTotalTokens() *UsageTotalUpsertBulk {
 	})
 	})
 }
 }
 
 
+// SetCredits sets the "credits" field.
+func (u *UsageTotalUpsertBulk) SetCredits(v float64) *UsageTotalUpsertBulk {
+	return u.Update(func(s *UsageTotalUpsert) {
+		s.SetCredits(v)
+	})
+}
+
+// AddCredits adds v to the "credits" field.
+func (u *UsageTotalUpsertBulk) AddCredits(v float64) *UsageTotalUpsertBulk {
+	return u.Update(func(s *UsageTotalUpsert) {
+		s.AddCredits(v)
+	})
+}
+
+// UpdateCredits sets the "credits" field to the value that was provided on create.
+func (u *UsageTotalUpsertBulk) UpdateCredits() *UsageTotalUpsertBulk {
+	return u.Update(func(s *UsageTotalUpsert) {
+		s.UpdateCredits()
+	})
+}
+
+// ClearCredits clears the value of the "credits" field.
+func (u *UsageTotalUpsertBulk) ClearCredits() *UsageTotalUpsertBulk {
+	return u.Update(func(s *UsageTotalUpsert) {
+		s.ClearCredits()
+	})
+}
+
 // SetStartIndex sets the "start_index" field.
 // SetStartIndex sets the "start_index" field.
 func (u *UsageTotalUpsertBulk) SetStartIndex(v uint64) *UsageTotalUpsertBulk {
 func (u *UsageTotalUpsertBulk) SetStartIndex(v uint64) *UsageTotalUpsertBulk {
 	return u.Update(func(s *UsageTotalUpsert) {
 	return u.Update(func(s *UsageTotalUpsert) {

+ 72 - 0
ent/usagetotal_update.go

@@ -129,6 +129,33 @@ func (utu *UsageTotalUpdate) ClearTotalTokens() *UsageTotalUpdate {
 	return utu
 	return utu
 }
 }
 
 
+// SetCredits sets the "credits" field.
+func (utu *UsageTotalUpdate) SetCredits(f float64) *UsageTotalUpdate {
+	utu.mutation.ResetCredits()
+	utu.mutation.SetCredits(f)
+	return utu
+}
+
+// SetNillableCredits sets the "credits" field if the given value is not nil.
+func (utu *UsageTotalUpdate) SetNillableCredits(f *float64) *UsageTotalUpdate {
+	if f != nil {
+		utu.SetCredits(*f)
+	}
+	return utu
+}
+
+// AddCredits adds f to the "credits" field.
+func (utu *UsageTotalUpdate) AddCredits(f float64) *UsageTotalUpdate {
+	utu.mutation.AddCredits(f)
+	return utu
+}
+
+// ClearCredits clears the value of the "credits" field.
+func (utu *UsageTotalUpdate) ClearCredits() *UsageTotalUpdate {
+	utu.mutation.ClearCredits()
+	return utu
+}
+
 // SetStartIndex sets the "start_index" field.
 // SetStartIndex sets the "start_index" field.
 func (utu *UsageTotalUpdate) SetStartIndex(u uint64) *UsageTotalUpdate {
 func (utu *UsageTotalUpdate) SetStartIndex(u uint64) *UsageTotalUpdate {
 	utu.mutation.ResetStartIndex()
 	utu.mutation.ResetStartIndex()
@@ -293,6 +320,15 @@ func (utu *UsageTotalUpdate) sqlSave(ctx context.Context) (n int, err error) {
 	if utu.mutation.TotalTokensCleared() {
 	if utu.mutation.TotalTokensCleared() {
 		_spec.ClearField(usagetotal.FieldTotalTokens, field.TypeUint64)
 		_spec.ClearField(usagetotal.FieldTotalTokens, field.TypeUint64)
 	}
 	}
+	if value, ok := utu.mutation.Credits(); ok {
+		_spec.SetField(usagetotal.FieldCredits, field.TypeFloat64, value)
+	}
+	if value, ok := utu.mutation.AddedCredits(); ok {
+		_spec.AddField(usagetotal.FieldCredits, field.TypeFloat64, value)
+	}
+	if utu.mutation.CreditsCleared() {
+		_spec.ClearField(usagetotal.FieldCredits, field.TypeFloat64)
+	}
 	if value, ok := utu.mutation.StartIndex(); ok {
 	if value, ok := utu.mutation.StartIndex(); ok {
 		_spec.SetField(usagetotal.FieldStartIndex, field.TypeUint64, value)
 		_spec.SetField(usagetotal.FieldStartIndex, field.TypeUint64, value)
 	}
 	}
@@ -441,6 +477,33 @@ func (utuo *UsageTotalUpdateOne) ClearTotalTokens() *UsageTotalUpdateOne {
 	return utuo
 	return utuo
 }
 }
 
 
+// SetCredits sets the "credits" field.
+func (utuo *UsageTotalUpdateOne) SetCredits(f float64) *UsageTotalUpdateOne {
+	utuo.mutation.ResetCredits()
+	utuo.mutation.SetCredits(f)
+	return utuo
+}
+
+// SetNillableCredits sets the "credits" field if the given value is not nil.
+func (utuo *UsageTotalUpdateOne) SetNillableCredits(f *float64) *UsageTotalUpdateOne {
+	if f != nil {
+		utuo.SetCredits(*f)
+	}
+	return utuo
+}
+
+// AddCredits adds f to the "credits" field.
+func (utuo *UsageTotalUpdateOne) AddCredits(f float64) *UsageTotalUpdateOne {
+	utuo.mutation.AddCredits(f)
+	return utuo
+}
+
+// ClearCredits clears the value of the "credits" field.
+func (utuo *UsageTotalUpdateOne) ClearCredits() *UsageTotalUpdateOne {
+	utuo.mutation.ClearCredits()
+	return utuo
+}
+
 // SetStartIndex sets the "start_index" field.
 // SetStartIndex sets the "start_index" field.
 func (utuo *UsageTotalUpdateOne) SetStartIndex(u uint64) *UsageTotalUpdateOne {
 func (utuo *UsageTotalUpdateOne) SetStartIndex(u uint64) *UsageTotalUpdateOne {
 	utuo.mutation.ResetStartIndex()
 	utuo.mutation.ResetStartIndex()
@@ -635,6 +698,15 @@ func (utuo *UsageTotalUpdateOne) sqlSave(ctx context.Context) (_node *UsageTotal
 	if utuo.mutation.TotalTokensCleared() {
 	if utuo.mutation.TotalTokensCleared() {
 		_spec.ClearField(usagetotal.FieldTotalTokens, field.TypeUint64)
 		_spec.ClearField(usagetotal.FieldTotalTokens, field.TypeUint64)
 	}
 	}
+	if value, ok := utuo.mutation.Credits(); ok {
+		_spec.SetField(usagetotal.FieldCredits, field.TypeFloat64, value)
+	}
+	if value, ok := utuo.mutation.AddedCredits(); ok {
+		_spec.AddField(usagetotal.FieldCredits, field.TypeFloat64, value)
+	}
+	if utuo.mutation.CreditsCleared() {
+		_spec.ClearField(usagetotal.FieldCredits, field.TypeFloat64)
+	}
 	if value, ok := utuo.mutation.StartIndex(); ok {
 	if value, ok := utuo.mutation.StartIndex(); ok {
 		_spec.SetField(usagetotal.FieldStartIndex, field.TypeUint64, value)
 		_spec.SetField(usagetotal.FieldStartIndex, field.TypeUint64, value)
 	}
 	}

+ 3 - 0
internal/logic/Wx/get_wx_list_logic.go

@@ -264,6 +264,7 @@ func (l *GetWxListLogic) GetWxList(req *types.WxListReq) (*types.WxListResp, err
 			}
 			}
 
 
 			totalTokens := uint64(0)
 			totalTokens := uint64(0)
+			totalCredits := float64(0)
 			usageTotalInfo, _ := l.svcCtx.DB.UsageTotal.Query().
 			usageTotalInfo, _ := l.svcCtx.DB.UsageTotal.Query().
 				Where(
 				Where(
 					usagetotal.BotID(wxid),
 					usagetotal.BotID(wxid),
@@ -271,6 +272,7 @@ func (l *GetWxListLogic) GetWxList(req *types.WxListReq) (*types.WxListResp, err
 				Only(l.ctx)
 				Only(l.ctx)
 			if usageTotalInfo != nil {
 			if usageTotalInfo != nil {
 				totalTokens = usageTotalInfo.TotalTokens
 				totalTokens = usageTotalInfo.TotalTokens
+				totalCredits = usageTotalInfo.Credits
 			}
 			}
 
 
 			var agent types.AgentInfo
 			var agent types.AgentInfo
@@ -315,6 +317,7 @@ func (l *GetWxListLogic) GetWxList(req *types.WxListReq) (*types.WxListResp, err
 					ApiKey:           &v.APIKey,
 					ApiKey:           &v.APIKey,
 					TotalTokens:      &totalTokens,
 					TotalTokens:      &totalTokens,
 					Ctype:            &v.Ctype,
 					Ctype:            &v.Ctype,
+					Credits:          &totalCredits,
 				})
 				})
 		}
 		}
 	}
 	}

+ 5 - 1
internal/types/types.go

@@ -340,7 +340,9 @@ type WxInfo struct {
 	GroupBlockList []ContactInfo `json:"groupBlockList,optional"`
 	GroupBlockList []ContactInfo `json:"groupBlockList,optional"`
 	// 使用token总数
 	// 使用token总数
 	TotalTokens *uint64 `json:"totalTokens,optional"`
 	TotalTokens *uint64 `json:"totalTokens,optional"`
-	Ctype       *uint64 `json:"ctype,optional"`
+	// 使用积分总数
+	Credits *float64 `json:"credits,optional"`
+	Ctype   *uint64  `json:"ctype,optional"`
 }
 }
 
 
 // swagger:model UpdateBlockAndAllowListReq
 // swagger:model UpdateBlockAndAllowListReq
@@ -3455,6 +3457,8 @@ type UsageTotalInfo struct {
 	BotId *string `json:"botId,optional"`
 	BotId *string `json:"botId,optional"`
 	// 使用token总数
 	// 使用token总数
 	TotalTokens *uint64 `json:"totalTokens,optional"`
 	TotalTokens *uint64 `json:"totalTokens,optional"`
+	// 使用积分总数
+	Credits float64 `json:"credits,optional"`
 	// 重制后的起始usage_detail 索引
 	// 重制后的起始usage_detail 索引
 	StartIndex *uint64 `json:"startIndex,optional"`
 	StartIndex *uint64 `json:"startIndex,optional"`
 	// usage_detail 索引
 	// usage_detail 索引