浏览代码

fix:修改积分明细API

jimmyyem 3 周之前
父节点
当前提交
5f34b660a2

+ 3 - 1
desc/wechat/credit_balance.api

@@ -6,7 +6,7 @@ type (
         BaseIDInfo
 
         // user_id | 用户ID 
-        UserId  *string `json:"userId,optional"`
+//        UserId  *string `json:"userId,optional"`
 
         // role | 角色设定 
         Balance  *float32 `json:"balance,optional"`
@@ -56,6 +56,8 @@ type (
 	CreditBalanceOperateReq {
 		OrganizationId  *uint64 `json:"organizationId,optional"`
 		Number  *float32 `json:"number,optional"`
+		PayNumber *float32 `json:"payNumber,optional"`
+		PayMethod *string `json:"payMethod,optional"`
 		Reason *string `json:"reason,optional"`
 	}
 )

+ 9 - 3
desc/wechat/credit_usage.api

@@ -5,12 +5,15 @@ type (
     CreditUsageInfo {
         BaseIDInfo
 
-        // user_id | 用户ID 
-        UserId  *string `json:"userId,optional"`
-		UserInfo UserInfo `json:"userInfo,optional"`
+        // user_id | 用户ID
+//        UserId  *string `json:"userId,optional"`
 
         // number | 积分改变量 
         Number  *float32 `json:"number,optional"`
+		BeforeNumber *float32 `json:"beforeNumber,optional"`
+		AfterNumber *float32 `json:"afterNumber,optional"`
+		PayNumber  *float32 `json:"payNumber,optional"`
+		PayMethod *string `json:"payMethod,optional"`
 
         // status | 状态 1-正常 2-禁用 
         Status  *int `json:"status,optional"`
@@ -56,6 +59,9 @@ type (
         PageInfo
 
 		OrganizationId  *uint64 `json:"organizationId,optional"`
+		Ntype  *int `json:"ntype,optional"`
+		StartDate *string `json:"startDate,optional"`
+		EndDate *string `json:"endDate,optional"`
     }
 
     // CreditUsage information response | CreditUsage信息返回体

+ 5 - 0
desc/wechat/usage_detail.api

@@ -63,7 +63,12 @@ type (
         PageInfo
 
         // 租户id
+		OrganizationId *uint64 `json:"organizationId,optional"`
+		Type *int `json:"type,optional"`
         BotId  *string `json:"botId,optional"`
+		ReceiverId  *string `json:"receiverId,optional"`
+		StartDate *string `json:"startDate,optional"`
+		EndDate *string `json:"endDate,optional"`
     }
 
 	UsageDetailResp {

+ 46 - 2
ent/creditusage.go

@@ -27,6 +27,14 @@ type CreditUsage struct {
 	UserID string `json:"user_id,omitempty"`
 	// number | 积分改变量
 	Number float32 `json:"number,omitempty"`
+	// pay_number | 充值金额
+	PayNumber float32 `json:"pay_number,omitempty"`
+	// before_number | 变动前金额
+	BeforeNumber float32 `json:"before_number,omitempty"`
+	// after_number | 变动后金额
+	AfterNumber float32 `json:"after_number,omitempty"`
+	// pay_method | 充值方式
+	PayMethod string `json:"pay_method,omitempty"`
 	// status | 状态 1-正常 2-禁用
 	Status int `json:"status,omitempty"`
 	// ntype | 积分变化类型:1-消耗 2-增加
@@ -49,11 +57,11 @@ func (*CreditUsage) scanValues(columns []string) ([]any, error) {
 	values := make([]any, len(columns))
 	for i := range columns {
 		switch columns[i] {
-		case creditusage.FieldNumber:
+		case creditusage.FieldNumber, creditusage.FieldPayNumber, creditusage.FieldBeforeNumber, creditusage.FieldAfterNumber:
 			values[i] = new(sql.NullFloat64)
 		case creditusage.FieldID, creditusage.FieldStatus, creditusage.FieldNtype, creditusage.FieldOrganizationID, creditusage.FieldNid:
 			values[i] = new(sql.NullInt64)
-		case creditusage.FieldUserID, creditusage.FieldTable, creditusage.FieldReason, creditusage.FieldOperator:
+		case creditusage.FieldUserID, creditusage.FieldPayMethod, creditusage.FieldTable, creditusage.FieldReason, creditusage.FieldOperator:
 			values[i] = new(sql.NullString)
 		case creditusage.FieldCreatedAt, creditusage.FieldUpdatedAt, creditusage.FieldDeletedAt:
 			values[i] = new(sql.NullTime)
@@ -108,6 +116,30 @@ func (cu *CreditUsage) assignValues(columns []string, values []any) error {
 			} else if value.Valid {
 				cu.Number = float32(value.Float64)
 			}
+		case creditusage.FieldPayNumber:
+			if value, ok := values[i].(*sql.NullFloat64); !ok {
+				return fmt.Errorf("unexpected type %T for field pay_number", values[i])
+			} else if value.Valid {
+				cu.PayNumber = float32(value.Float64)
+			}
+		case creditusage.FieldBeforeNumber:
+			if value, ok := values[i].(*sql.NullFloat64); !ok {
+				return fmt.Errorf("unexpected type %T for field before_number", values[i])
+			} else if value.Valid {
+				cu.BeforeNumber = float32(value.Float64)
+			}
+		case creditusage.FieldAfterNumber:
+			if value, ok := values[i].(*sql.NullFloat64); !ok {
+				return fmt.Errorf("unexpected type %T for field after_number", values[i])
+			} else if value.Valid {
+				cu.AfterNumber = float32(value.Float64)
+			}
+		case creditusage.FieldPayMethod:
+			if value, ok := values[i].(*sql.NullString); !ok {
+				return fmt.Errorf("unexpected type %T for field pay_method", values[i])
+			} else if value.Valid {
+				cu.PayMethod = value.String
+			}
 		case creditusage.FieldStatus:
 			if value, ok := values[i].(*sql.NullInt64); !ok {
 				return fmt.Errorf("unexpected type %T for field status", values[i])
@@ -201,6 +233,18 @@ func (cu *CreditUsage) String() string {
 	builder.WriteString("number=")
 	builder.WriteString(fmt.Sprintf("%v", cu.Number))
 	builder.WriteString(", ")
+	builder.WriteString("pay_number=")
+	builder.WriteString(fmt.Sprintf("%v", cu.PayNumber))
+	builder.WriteString(", ")
+	builder.WriteString("before_number=")
+	builder.WriteString(fmt.Sprintf("%v", cu.BeforeNumber))
+	builder.WriteString(", ")
+	builder.WriteString("after_number=")
+	builder.WriteString(fmt.Sprintf("%v", cu.AfterNumber))
+	builder.WriteString(", ")
+	builder.WriteString("pay_method=")
+	builder.WriteString(cu.PayMethod)
+	builder.WriteString(", ")
 	builder.WriteString("status=")
 	builder.WriteString(fmt.Sprintf("%v", cu.Status))
 	builder.WriteString(", ")

+ 32 - 0
ent/creditusage/creditusage.go

@@ -24,6 +24,14 @@ const (
 	FieldUserID = "user_id"
 	// FieldNumber holds the string denoting the number field in the database.
 	FieldNumber = "number"
+	// FieldPayNumber holds the string denoting the pay_number field in the database.
+	FieldPayNumber = "pay_number"
+	// FieldBeforeNumber holds the string denoting the before_number field in the database.
+	FieldBeforeNumber = "before_number"
+	// FieldAfterNumber holds the string denoting the after_number field in the database.
+	FieldAfterNumber = "after_number"
+	// FieldPayMethod holds the string denoting the pay_method field in the database.
+	FieldPayMethod = "pay_method"
 	// FieldStatus holds the string denoting the status field in the database.
 	FieldStatus = "status"
 	// FieldNtype holds the string denoting the ntype field in the database.
@@ -50,6 +58,10 @@ var Columns = []string{
 	FieldDeletedAt,
 	FieldUserID,
 	FieldNumber,
+	FieldPayNumber,
+	FieldBeforeNumber,
+	FieldAfterNumber,
+	FieldPayMethod,
 	FieldStatus,
 	FieldNtype,
 	FieldTable,
@@ -138,6 +150,26 @@ func ByNumber(opts ...sql.OrderTermOption) OrderOption {
 	return sql.OrderByField(FieldNumber, opts...).ToFunc()
 }
 
+// ByPayNumber orders the results by the pay_number field.
+func ByPayNumber(opts ...sql.OrderTermOption) OrderOption {
+	return sql.OrderByField(FieldPayNumber, opts...).ToFunc()
+}
+
+// ByBeforeNumber orders the results by the before_number field.
+func ByBeforeNumber(opts ...sql.OrderTermOption) OrderOption {
+	return sql.OrderByField(FieldBeforeNumber, opts...).ToFunc()
+}
+
+// ByAfterNumber orders the results by the after_number field.
+func ByAfterNumber(opts ...sql.OrderTermOption) OrderOption {
+	return sql.OrderByField(FieldAfterNumber, opts...).ToFunc()
+}
+
+// ByPayMethod orders the results by the pay_method field.
+func ByPayMethod(opts ...sql.OrderTermOption) OrderOption {
+	return sql.OrderByField(FieldPayMethod, opts...).ToFunc()
+}
+
 // ByStatus orders the results by the status field.
 func ByStatus(opts ...sql.OrderTermOption) OrderOption {
 	return sql.OrderByField(FieldStatus, opts...).ToFunc()

+ 205 - 0
ent/creditusage/where.go

@@ -79,6 +79,26 @@ func Number(v float32) predicate.CreditUsage {
 	return predicate.CreditUsage(sql.FieldEQ(FieldNumber, v))
 }
 
+// PayNumber applies equality check predicate on the "pay_number" field. It's identical to PayNumberEQ.
+func PayNumber(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldEQ(FieldPayNumber, v))
+}
+
+// BeforeNumber applies equality check predicate on the "before_number" field. It's identical to BeforeNumberEQ.
+func BeforeNumber(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldEQ(FieldBeforeNumber, v))
+}
+
+// AfterNumber applies equality check predicate on the "after_number" field. It's identical to AfterNumberEQ.
+func AfterNumber(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldEQ(FieldAfterNumber, v))
+}
+
+// PayMethod applies equality check predicate on the "pay_method" field. It's identical to PayMethodEQ.
+func PayMethod(v string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldEQ(FieldPayMethod, v))
+}
+
 // Status applies equality check predicate on the "status" field. It's identical to StatusEQ.
 func Status(v int) predicate.CreditUsage {
 	return predicate.CreditUsage(sql.FieldEQ(FieldStatus, v))
@@ -354,6 +374,191 @@ func NumberLTE(v float32) predicate.CreditUsage {
 	return predicate.CreditUsage(sql.FieldLTE(FieldNumber, v))
 }
 
+// PayNumberEQ applies the EQ predicate on the "pay_number" field.
+func PayNumberEQ(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldEQ(FieldPayNumber, v))
+}
+
+// PayNumberNEQ applies the NEQ predicate on the "pay_number" field.
+func PayNumberNEQ(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldNEQ(FieldPayNumber, v))
+}
+
+// PayNumberIn applies the In predicate on the "pay_number" field.
+func PayNumberIn(vs ...float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldIn(FieldPayNumber, vs...))
+}
+
+// PayNumberNotIn applies the NotIn predicate on the "pay_number" field.
+func PayNumberNotIn(vs ...float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldNotIn(FieldPayNumber, vs...))
+}
+
+// PayNumberGT applies the GT predicate on the "pay_number" field.
+func PayNumberGT(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldGT(FieldPayNumber, v))
+}
+
+// PayNumberGTE applies the GTE predicate on the "pay_number" field.
+func PayNumberGTE(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldGTE(FieldPayNumber, v))
+}
+
+// PayNumberLT applies the LT predicate on the "pay_number" field.
+func PayNumberLT(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldLT(FieldPayNumber, v))
+}
+
+// PayNumberLTE applies the LTE predicate on the "pay_number" field.
+func PayNumberLTE(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldLTE(FieldPayNumber, v))
+}
+
+// BeforeNumberEQ applies the EQ predicate on the "before_number" field.
+func BeforeNumberEQ(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldEQ(FieldBeforeNumber, v))
+}
+
+// BeforeNumberNEQ applies the NEQ predicate on the "before_number" field.
+func BeforeNumberNEQ(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldNEQ(FieldBeforeNumber, v))
+}
+
+// BeforeNumberIn applies the In predicate on the "before_number" field.
+func BeforeNumberIn(vs ...float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldIn(FieldBeforeNumber, vs...))
+}
+
+// BeforeNumberNotIn applies the NotIn predicate on the "before_number" field.
+func BeforeNumberNotIn(vs ...float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldNotIn(FieldBeforeNumber, vs...))
+}
+
+// BeforeNumberGT applies the GT predicate on the "before_number" field.
+func BeforeNumberGT(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldGT(FieldBeforeNumber, v))
+}
+
+// BeforeNumberGTE applies the GTE predicate on the "before_number" field.
+func BeforeNumberGTE(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldGTE(FieldBeforeNumber, v))
+}
+
+// BeforeNumberLT applies the LT predicate on the "before_number" field.
+func BeforeNumberLT(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldLT(FieldBeforeNumber, v))
+}
+
+// BeforeNumberLTE applies the LTE predicate on the "before_number" field.
+func BeforeNumberLTE(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldLTE(FieldBeforeNumber, v))
+}
+
+// AfterNumberEQ applies the EQ predicate on the "after_number" field.
+func AfterNumberEQ(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldEQ(FieldAfterNumber, v))
+}
+
+// AfterNumberNEQ applies the NEQ predicate on the "after_number" field.
+func AfterNumberNEQ(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldNEQ(FieldAfterNumber, v))
+}
+
+// AfterNumberIn applies the In predicate on the "after_number" field.
+func AfterNumberIn(vs ...float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldIn(FieldAfterNumber, vs...))
+}
+
+// AfterNumberNotIn applies the NotIn predicate on the "after_number" field.
+func AfterNumberNotIn(vs ...float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldNotIn(FieldAfterNumber, vs...))
+}
+
+// AfterNumberGT applies the GT predicate on the "after_number" field.
+func AfterNumberGT(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldGT(FieldAfterNumber, v))
+}
+
+// AfterNumberGTE applies the GTE predicate on the "after_number" field.
+func AfterNumberGTE(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldGTE(FieldAfterNumber, v))
+}
+
+// AfterNumberLT applies the LT predicate on the "after_number" field.
+func AfterNumberLT(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldLT(FieldAfterNumber, v))
+}
+
+// AfterNumberLTE applies the LTE predicate on the "after_number" field.
+func AfterNumberLTE(v float32) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldLTE(FieldAfterNumber, v))
+}
+
+// PayMethodEQ applies the EQ predicate on the "pay_method" field.
+func PayMethodEQ(v string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldEQ(FieldPayMethod, v))
+}
+
+// PayMethodNEQ applies the NEQ predicate on the "pay_method" field.
+func PayMethodNEQ(v string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldNEQ(FieldPayMethod, v))
+}
+
+// PayMethodIn applies the In predicate on the "pay_method" field.
+func PayMethodIn(vs ...string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldIn(FieldPayMethod, vs...))
+}
+
+// PayMethodNotIn applies the NotIn predicate on the "pay_method" field.
+func PayMethodNotIn(vs ...string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldNotIn(FieldPayMethod, vs...))
+}
+
+// PayMethodGT applies the GT predicate on the "pay_method" field.
+func PayMethodGT(v string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldGT(FieldPayMethod, v))
+}
+
+// PayMethodGTE applies the GTE predicate on the "pay_method" field.
+func PayMethodGTE(v string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldGTE(FieldPayMethod, v))
+}
+
+// PayMethodLT applies the LT predicate on the "pay_method" field.
+func PayMethodLT(v string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldLT(FieldPayMethod, v))
+}
+
+// PayMethodLTE applies the LTE predicate on the "pay_method" field.
+func PayMethodLTE(v string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldLTE(FieldPayMethod, v))
+}
+
+// PayMethodContains applies the Contains predicate on the "pay_method" field.
+func PayMethodContains(v string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldContains(FieldPayMethod, v))
+}
+
+// PayMethodHasPrefix applies the HasPrefix predicate on the "pay_method" field.
+func PayMethodHasPrefix(v string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldHasPrefix(FieldPayMethod, v))
+}
+
+// PayMethodHasSuffix applies the HasSuffix predicate on the "pay_method" field.
+func PayMethodHasSuffix(v string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldHasSuffix(FieldPayMethod, v))
+}
+
+// PayMethodEqualFold applies the EqualFold predicate on the "pay_method" field.
+func PayMethodEqualFold(v string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldEqualFold(FieldPayMethod, v))
+}
+
+// PayMethodContainsFold applies the ContainsFold predicate on the "pay_method" field.
+func PayMethodContainsFold(v string) predicate.CreditUsage {
+	return predicate.CreditUsage(sql.FieldContainsFold(FieldPayMethod, v))
+}
+
 // StatusEQ applies the EQ predicate on the "status" field.
 func StatusEQ(v int) predicate.CreditUsage {
 	return predicate.CreditUsage(sql.FieldEQ(FieldStatus, v))

+ 272 - 0
ent/creditusage_create.go

@@ -84,6 +84,30 @@ func (cuc *CreditUsageCreate) SetNumber(f float32) *CreditUsageCreate {
 	return cuc
 }
 
+// SetPayNumber sets the "pay_number" field.
+func (cuc *CreditUsageCreate) SetPayNumber(f float32) *CreditUsageCreate {
+	cuc.mutation.SetPayNumber(f)
+	return cuc
+}
+
+// SetBeforeNumber sets the "before_number" field.
+func (cuc *CreditUsageCreate) SetBeforeNumber(f float32) *CreditUsageCreate {
+	cuc.mutation.SetBeforeNumber(f)
+	return cuc
+}
+
+// SetAfterNumber sets the "after_number" field.
+func (cuc *CreditUsageCreate) SetAfterNumber(f float32) *CreditUsageCreate {
+	cuc.mutation.SetAfterNumber(f)
+	return cuc
+}
+
+// SetPayMethod sets the "pay_method" field.
+func (cuc *CreditUsageCreate) SetPayMethod(s string) *CreditUsageCreate {
+	cuc.mutation.SetPayMethod(s)
+	return cuc
+}
+
 // SetStatus sets the "status" field.
 func (cuc *CreditUsageCreate) SetStatus(i int) *CreditUsageCreate {
 	cuc.mutation.SetStatus(i)
@@ -282,6 +306,18 @@ func (cuc *CreditUsageCreate) check() error {
 	if _, ok := cuc.mutation.Number(); !ok {
 		return &ValidationError{Name: "number", err: errors.New(`ent: missing required field "CreditUsage.number"`)}
 	}
+	if _, ok := cuc.mutation.PayNumber(); !ok {
+		return &ValidationError{Name: "pay_number", err: errors.New(`ent: missing required field "CreditUsage.pay_number"`)}
+	}
+	if _, ok := cuc.mutation.BeforeNumber(); !ok {
+		return &ValidationError{Name: "before_number", err: errors.New(`ent: missing required field "CreditUsage.before_number"`)}
+	}
+	if _, ok := cuc.mutation.AfterNumber(); !ok {
+		return &ValidationError{Name: "after_number", err: errors.New(`ent: missing required field "CreditUsage.after_number"`)}
+	}
+	if _, ok := cuc.mutation.PayMethod(); !ok {
+		return &ValidationError{Name: "pay_method", err: errors.New(`ent: missing required field "CreditUsage.pay_method"`)}
+	}
 	if v, ok := cuc.mutation.Status(); ok {
 		if err := creditusage.StatusValidator(v); err != nil {
 			return &ValidationError{Name: "status", err: fmt.Errorf(`ent: validator failed for field "CreditUsage.status": %w`, err)}
@@ -365,6 +401,22 @@ func (cuc *CreditUsageCreate) createSpec() (*CreditUsage, *sqlgraph.CreateSpec)
 		_spec.SetField(creditusage.FieldNumber, field.TypeFloat32, value)
 		_node.Number = value
 	}
+	if value, ok := cuc.mutation.PayNumber(); ok {
+		_spec.SetField(creditusage.FieldPayNumber, field.TypeFloat32, value)
+		_node.PayNumber = value
+	}
+	if value, ok := cuc.mutation.BeforeNumber(); ok {
+		_spec.SetField(creditusage.FieldBeforeNumber, field.TypeFloat32, value)
+		_node.BeforeNumber = value
+	}
+	if value, ok := cuc.mutation.AfterNumber(); ok {
+		_spec.SetField(creditusage.FieldAfterNumber, field.TypeFloat32, value)
+		_node.AfterNumber = value
+	}
+	if value, ok := cuc.mutation.PayMethod(); ok {
+		_spec.SetField(creditusage.FieldPayMethod, field.TypeString, value)
+		_node.PayMethod = value
+	}
 	if value, ok := cuc.mutation.Status(); ok {
 		_spec.SetField(creditusage.FieldStatus, field.TypeInt, value)
 		_node.Status = value
@@ -511,6 +563,72 @@ func (u *CreditUsageUpsert) AddNumber(v float32) *CreditUsageUpsert {
 	return u
 }
 
+// SetPayNumber sets the "pay_number" field.
+func (u *CreditUsageUpsert) SetPayNumber(v float32) *CreditUsageUpsert {
+	u.Set(creditusage.FieldPayNumber, v)
+	return u
+}
+
+// UpdatePayNumber sets the "pay_number" field to the value that was provided on create.
+func (u *CreditUsageUpsert) UpdatePayNumber() *CreditUsageUpsert {
+	u.SetExcluded(creditusage.FieldPayNumber)
+	return u
+}
+
+// AddPayNumber adds v to the "pay_number" field.
+func (u *CreditUsageUpsert) AddPayNumber(v float32) *CreditUsageUpsert {
+	u.Add(creditusage.FieldPayNumber, v)
+	return u
+}
+
+// SetBeforeNumber sets the "before_number" field.
+func (u *CreditUsageUpsert) SetBeforeNumber(v float32) *CreditUsageUpsert {
+	u.Set(creditusage.FieldBeforeNumber, v)
+	return u
+}
+
+// UpdateBeforeNumber sets the "before_number" field to the value that was provided on create.
+func (u *CreditUsageUpsert) UpdateBeforeNumber() *CreditUsageUpsert {
+	u.SetExcluded(creditusage.FieldBeforeNumber)
+	return u
+}
+
+// AddBeforeNumber adds v to the "before_number" field.
+func (u *CreditUsageUpsert) AddBeforeNumber(v float32) *CreditUsageUpsert {
+	u.Add(creditusage.FieldBeforeNumber, v)
+	return u
+}
+
+// SetAfterNumber sets the "after_number" field.
+func (u *CreditUsageUpsert) SetAfterNumber(v float32) *CreditUsageUpsert {
+	u.Set(creditusage.FieldAfterNumber, v)
+	return u
+}
+
+// UpdateAfterNumber sets the "after_number" field to the value that was provided on create.
+func (u *CreditUsageUpsert) UpdateAfterNumber() *CreditUsageUpsert {
+	u.SetExcluded(creditusage.FieldAfterNumber)
+	return u
+}
+
+// AddAfterNumber adds v to the "after_number" field.
+func (u *CreditUsageUpsert) AddAfterNumber(v float32) *CreditUsageUpsert {
+	u.Add(creditusage.FieldAfterNumber, v)
+	return u
+}
+
+// SetPayMethod sets the "pay_method" field.
+func (u *CreditUsageUpsert) SetPayMethod(v string) *CreditUsageUpsert {
+	u.Set(creditusage.FieldPayMethod, v)
+	return u
+}
+
+// UpdatePayMethod sets the "pay_method" field to the value that was provided on create.
+func (u *CreditUsageUpsert) UpdatePayMethod() *CreditUsageUpsert {
+	u.SetExcluded(creditusage.FieldPayMethod)
+	return u
+}
+
 // SetStatus sets the "status" field.
 func (u *CreditUsageUpsert) SetStatus(v int) *CreditUsageUpsert {
 	u.Set(creditusage.FieldStatus, v)
@@ -759,6 +877,83 @@ func (u *CreditUsageUpsertOne) UpdateNumber() *CreditUsageUpsertOne {
 	})
 }
 
+// SetPayNumber sets the "pay_number" field.
+func (u *CreditUsageUpsertOne) SetPayNumber(v float32) *CreditUsageUpsertOne {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.SetPayNumber(v)
+	})
+}
+
+// AddPayNumber adds v to the "pay_number" field.
+func (u *CreditUsageUpsertOne) AddPayNumber(v float32) *CreditUsageUpsertOne {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.AddPayNumber(v)
+	})
+}
+
+// UpdatePayNumber sets the "pay_number" field to the value that was provided on create.
+func (u *CreditUsageUpsertOne) UpdatePayNumber() *CreditUsageUpsertOne {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.UpdatePayNumber()
+	})
+}
+
+// SetBeforeNumber sets the "before_number" field.
+func (u *CreditUsageUpsertOne) SetBeforeNumber(v float32) *CreditUsageUpsertOne {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.SetBeforeNumber(v)
+	})
+}
+
+// AddBeforeNumber adds v to the "before_number" field.
+func (u *CreditUsageUpsertOne) AddBeforeNumber(v float32) *CreditUsageUpsertOne {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.AddBeforeNumber(v)
+	})
+}
+
+// UpdateBeforeNumber sets the "before_number" field to the value that was provided on create.
+func (u *CreditUsageUpsertOne) UpdateBeforeNumber() *CreditUsageUpsertOne {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.UpdateBeforeNumber()
+	})
+}
+
+// SetAfterNumber sets the "after_number" field.
+func (u *CreditUsageUpsertOne) SetAfterNumber(v float32) *CreditUsageUpsertOne {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.SetAfterNumber(v)
+	})
+}
+
+// AddAfterNumber adds v to the "after_number" field.
+func (u *CreditUsageUpsertOne) AddAfterNumber(v float32) *CreditUsageUpsertOne {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.AddAfterNumber(v)
+	})
+}
+
+// UpdateAfterNumber sets the "after_number" field to the value that was provided on create.
+func (u *CreditUsageUpsertOne) UpdateAfterNumber() *CreditUsageUpsertOne {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.UpdateAfterNumber()
+	})
+}
+
+// SetPayMethod sets the "pay_method" field.
+func (u *CreditUsageUpsertOne) SetPayMethod(v string) *CreditUsageUpsertOne {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.SetPayMethod(v)
+	})
+}
+
+// UpdatePayMethod sets the "pay_method" field to the value that was provided on create.
+func (u *CreditUsageUpsertOne) UpdatePayMethod() *CreditUsageUpsertOne {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.UpdatePayMethod()
+	})
+}
+
 // SetStatus sets the "status" field.
 func (u *CreditUsageUpsertOne) SetStatus(v int) *CreditUsageUpsertOne {
 	return u.Update(func(s *CreditUsageUpsert) {
@@ -1193,6 +1388,83 @@ func (u *CreditUsageUpsertBulk) UpdateNumber() *CreditUsageUpsertBulk {
 	})
 }
 
+// SetPayNumber sets the "pay_number" field.
+func (u *CreditUsageUpsertBulk) SetPayNumber(v float32) *CreditUsageUpsertBulk {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.SetPayNumber(v)
+	})
+}
+
+// AddPayNumber adds v to the "pay_number" field.
+func (u *CreditUsageUpsertBulk) AddPayNumber(v float32) *CreditUsageUpsertBulk {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.AddPayNumber(v)
+	})
+}
+
+// UpdatePayNumber sets the "pay_number" field to the value that was provided on create.
+func (u *CreditUsageUpsertBulk) UpdatePayNumber() *CreditUsageUpsertBulk {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.UpdatePayNumber()
+	})
+}
+
+// SetBeforeNumber sets the "before_number" field.
+func (u *CreditUsageUpsertBulk) SetBeforeNumber(v float32) *CreditUsageUpsertBulk {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.SetBeforeNumber(v)
+	})
+}
+
+// AddBeforeNumber adds v to the "before_number" field.
+func (u *CreditUsageUpsertBulk) AddBeforeNumber(v float32) *CreditUsageUpsertBulk {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.AddBeforeNumber(v)
+	})
+}
+
+// UpdateBeforeNumber sets the "before_number" field to the value that was provided on create.
+func (u *CreditUsageUpsertBulk) UpdateBeforeNumber() *CreditUsageUpsertBulk {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.UpdateBeforeNumber()
+	})
+}
+
+// SetAfterNumber sets the "after_number" field.
+func (u *CreditUsageUpsertBulk) SetAfterNumber(v float32) *CreditUsageUpsertBulk {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.SetAfterNumber(v)
+	})
+}
+
+// AddAfterNumber adds v to the "after_number" field.
+func (u *CreditUsageUpsertBulk) AddAfterNumber(v float32) *CreditUsageUpsertBulk {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.AddAfterNumber(v)
+	})
+}
+
+// UpdateAfterNumber sets the "after_number" field to the value that was provided on create.
+func (u *CreditUsageUpsertBulk) UpdateAfterNumber() *CreditUsageUpsertBulk {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.UpdateAfterNumber()
+	})
+}
+
+// SetPayMethod sets the "pay_method" field.
+func (u *CreditUsageUpsertBulk) SetPayMethod(v string) *CreditUsageUpsertBulk {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.SetPayMethod(v)
+	})
+}
+
+// UpdatePayMethod sets the "pay_method" field to the value that was provided on create.
+func (u *CreditUsageUpsertBulk) UpdatePayMethod() *CreditUsageUpsertBulk {
+	return u.Update(func(s *CreditUsageUpsert) {
+		s.UpdatePayMethod()
+	})
+}
+
 // SetStatus sets the "status" field.
 func (u *CreditUsageUpsertBulk) SetStatus(v int) *CreditUsageUpsertBulk {
 	return u.Update(func(s *CreditUsageUpsert) {

+ 196 - 0
ent/creditusage_update.go

@@ -95,6 +95,83 @@ func (cuu *CreditUsageUpdate) AddNumber(f float32) *CreditUsageUpdate {
 	return cuu
 }
 
+// SetPayNumber sets the "pay_number" field.
+func (cuu *CreditUsageUpdate) SetPayNumber(f float32) *CreditUsageUpdate {
+	cuu.mutation.ResetPayNumber()
+	cuu.mutation.SetPayNumber(f)
+	return cuu
+}
+
+// SetNillablePayNumber sets the "pay_number" field if the given value is not nil.
+func (cuu *CreditUsageUpdate) SetNillablePayNumber(f *float32) *CreditUsageUpdate {
+	if f != nil {
+		cuu.SetPayNumber(*f)
+	}
+	return cuu
+}
+
+// AddPayNumber adds f to the "pay_number" field.
+func (cuu *CreditUsageUpdate) AddPayNumber(f float32) *CreditUsageUpdate {
+	cuu.mutation.AddPayNumber(f)
+	return cuu
+}
+
+// SetBeforeNumber sets the "before_number" field.
+func (cuu *CreditUsageUpdate) SetBeforeNumber(f float32) *CreditUsageUpdate {
+	cuu.mutation.ResetBeforeNumber()
+	cuu.mutation.SetBeforeNumber(f)
+	return cuu
+}
+
+// SetNillableBeforeNumber sets the "before_number" field if the given value is not nil.
+func (cuu *CreditUsageUpdate) SetNillableBeforeNumber(f *float32) *CreditUsageUpdate {
+	if f != nil {
+		cuu.SetBeforeNumber(*f)
+	}
+	return cuu
+}
+
+// AddBeforeNumber adds f to the "before_number" field.
+func (cuu *CreditUsageUpdate) AddBeforeNumber(f float32) *CreditUsageUpdate {
+	cuu.mutation.AddBeforeNumber(f)
+	return cuu
+}
+
+// SetAfterNumber sets the "after_number" field.
+func (cuu *CreditUsageUpdate) SetAfterNumber(f float32) *CreditUsageUpdate {
+	cuu.mutation.ResetAfterNumber()
+	cuu.mutation.SetAfterNumber(f)
+	return cuu
+}
+
+// SetNillableAfterNumber sets the "after_number" field if the given value is not nil.
+func (cuu *CreditUsageUpdate) SetNillableAfterNumber(f *float32) *CreditUsageUpdate {
+	if f != nil {
+		cuu.SetAfterNumber(*f)
+	}
+	return cuu
+}
+
+// AddAfterNumber adds f to the "after_number" field.
+func (cuu *CreditUsageUpdate) AddAfterNumber(f float32) *CreditUsageUpdate {
+	cuu.mutation.AddAfterNumber(f)
+	return cuu
+}
+
+// SetPayMethod sets the "pay_method" field.
+func (cuu *CreditUsageUpdate) SetPayMethod(s string) *CreditUsageUpdate {
+	cuu.mutation.SetPayMethod(s)
+	return cuu
+}
+
+// SetNillablePayMethod sets the "pay_method" field if the given value is not nil.
+func (cuu *CreditUsageUpdate) SetNillablePayMethod(s *string) *CreditUsageUpdate {
+	if s != nil {
+		cuu.SetPayMethod(*s)
+	}
+	return cuu
+}
+
 // SetStatus sets the "status" field.
 func (cuu *CreditUsageUpdate) SetStatus(i int) *CreditUsageUpdate {
 	cuu.mutation.ResetStatus()
@@ -338,6 +415,27 @@ func (cuu *CreditUsageUpdate) sqlSave(ctx context.Context) (n int, err error) {
 	if value, ok := cuu.mutation.AddedNumber(); ok {
 		_spec.AddField(creditusage.FieldNumber, field.TypeFloat32, value)
 	}
+	if value, ok := cuu.mutation.PayNumber(); ok {
+		_spec.SetField(creditusage.FieldPayNumber, field.TypeFloat32, value)
+	}
+	if value, ok := cuu.mutation.AddedPayNumber(); ok {
+		_spec.AddField(creditusage.FieldPayNumber, field.TypeFloat32, value)
+	}
+	if value, ok := cuu.mutation.BeforeNumber(); ok {
+		_spec.SetField(creditusage.FieldBeforeNumber, field.TypeFloat32, value)
+	}
+	if value, ok := cuu.mutation.AddedBeforeNumber(); ok {
+		_spec.AddField(creditusage.FieldBeforeNumber, field.TypeFloat32, value)
+	}
+	if value, ok := cuu.mutation.AfterNumber(); ok {
+		_spec.SetField(creditusage.FieldAfterNumber, field.TypeFloat32, value)
+	}
+	if value, ok := cuu.mutation.AddedAfterNumber(); ok {
+		_spec.AddField(creditusage.FieldAfterNumber, field.TypeFloat32, value)
+	}
+	if value, ok := cuu.mutation.PayMethod(); ok {
+		_spec.SetField(creditusage.FieldPayMethod, field.TypeString, value)
+	}
 	if value, ok := cuu.mutation.Status(); ok {
 		_spec.SetField(creditusage.FieldStatus, field.TypeInt, value)
 	}
@@ -464,6 +562,83 @@ func (cuuo *CreditUsageUpdateOne) AddNumber(f float32) *CreditUsageUpdateOne {
 	return cuuo
 }
 
+// SetPayNumber sets the "pay_number" field.
+func (cuuo *CreditUsageUpdateOne) SetPayNumber(f float32) *CreditUsageUpdateOne {
+	cuuo.mutation.ResetPayNumber()
+	cuuo.mutation.SetPayNumber(f)
+	return cuuo
+}
+
+// SetNillablePayNumber sets the "pay_number" field if the given value is not nil.
+func (cuuo *CreditUsageUpdateOne) SetNillablePayNumber(f *float32) *CreditUsageUpdateOne {
+	if f != nil {
+		cuuo.SetPayNumber(*f)
+	}
+	return cuuo
+}
+
+// AddPayNumber adds f to the "pay_number" field.
+func (cuuo *CreditUsageUpdateOne) AddPayNumber(f float32) *CreditUsageUpdateOne {
+	cuuo.mutation.AddPayNumber(f)
+	return cuuo
+}
+
+// SetBeforeNumber sets the "before_number" field.
+func (cuuo *CreditUsageUpdateOne) SetBeforeNumber(f float32) *CreditUsageUpdateOne {
+	cuuo.mutation.ResetBeforeNumber()
+	cuuo.mutation.SetBeforeNumber(f)
+	return cuuo
+}
+
+// SetNillableBeforeNumber sets the "before_number" field if the given value is not nil.
+func (cuuo *CreditUsageUpdateOne) SetNillableBeforeNumber(f *float32) *CreditUsageUpdateOne {
+	if f != nil {
+		cuuo.SetBeforeNumber(*f)
+	}
+	return cuuo
+}
+
+// AddBeforeNumber adds f to the "before_number" field.
+func (cuuo *CreditUsageUpdateOne) AddBeforeNumber(f float32) *CreditUsageUpdateOne {
+	cuuo.mutation.AddBeforeNumber(f)
+	return cuuo
+}
+
+// SetAfterNumber sets the "after_number" field.
+func (cuuo *CreditUsageUpdateOne) SetAfterNumber(f float32) *CreditUsageUpdateOne {
+	cuuo.mutation.ResetAfterNumber()
+	cuuo.mutation.SetAfterNumber(f)
+	return cuuo
+}
+
+// SetNillableAfterNumber sets the "after_number" field if the given value is not nil.
+func (cuuo *CreditUsageUpdateOne) SetNillableAfterNumber(f *float32) *CreditUsageUpdateOne {
+	if f != nil {
+		cuuo.SetAfterNumber(*f)
+	}
+	return cuuo
+}
+
+// AddAfterNumber adds f to the "after_number" field.
+func (cuuo *CreditUsageUpdateOne) AddAfterNumber(f float32) *CreditUsageUpdateOne {
+	cuuo.mutation.AddAfterNumber(f)
+	return cuuo
+}
+
+// SetPayMethod sets the "pay_method" field.
+func (cuuo *CreditUsageUpdateOne) SetPayMethod(s string) *CreditUsageUpdateOne {
+	cuuo.mutation.SetPayMethod(s)
+	return cuuo
+}
+
+// SetNillablePayMethod sets the "pay_method" field if the given value is not nil.
+func (cuuo *CreditUsageUpdateOne) SetNillablePayMethod(s *string) *CreditUsageUpdateOne {
+	if s != nil {
+		cuuo.SetPayMethod(*s)
+	}
+	return cuuo
+}
+
 // SetStatus sets the "status" field.
 func (cuuo *CreditUsageUpdateOne) SetStatus(i int) *CreditUsageUpdateOne {
 	cuuo.mutation.ResetStatus()
@@ -737,6 +912,27 @@ func (cuuo *CreditUsageUpdateOne) sqlSave(ctx context.Context) (_node *CreditUsa
 	if value, ok := cuuo.mutation.AddedNumber(); ok {
 		_spec.AddField(creditusage.FieldNumber, field.TypeFloat32, value)
 	}
+	if value, ok := cuuo.mutation.PayNumber(); ok {
+		_spec.SetField(creditusage.FieldPayNumber, field.TypeFloat32, value)
+	}
+	if value, ok := cuuo.mutation.AddedPayNumber(); ok {
+		_spec.AddField(creditusage.FieldPayNumber, field.TypeFloat32, value)
+	}
+	if value, ok := cuuo.mutation.BeforeNumber(); ok {
+		_spec.SetField(creditusage.FieldBeforeNumber, field.TypeFloat32, value)
+	}
+	if value, ok := cuuo.mutation.AddedBeforeNumber(); ok {
+		_spec.AddField(creditusage.FieldBeforeNumber, field.TypeFloat32, value)
+	}
+	if value, ok := cuuo.mutation.AfterNumber(); ok {
+		_spec.SetField(creditusage.FieldAfterNumber, field.TypeFloat32, value)
+	}
+	if value, ok := cuuo.mutation.AddedAfterNumber(); ok {
+		_spec.AddField(creditusage.FieldAfterNumber, field.TypeFloat32, value)
+	}
+	if value, ok := cuuo.mutation.PayMethod(); ok {
+		_spec.SetField(creditusage.FieldPayMethod, field.TypeString, value)
+	}
 	if value, ok := cuuo.mutation.Status(); ok {
 		_spec.SetField(creditusage.FieldStatus, field.TypeInt, value)
 	}

+ 5 - 1
ent/migrate/schema.go

@@ -372,6 +372,10 @@ var (
 		{Name: "deleted_at", Type: field.TypeTime, Nullable: true, Comment: "Delete Time | 删除日期"},
 		{Name: "user_id", Type: field.TypeString, Nullable: true, Size: 255, Comment: "user_id | 用户ID"},
 		{Name: "number", Type: field.TypeFloat32, Comment: "number | 积分改变量"},
+		{Name: "pay_number", Type: field.TypeFloat32, Comment: "pay_number | 充值金额"},
+		{Name: "before_number", Type: field.TypeFloat32, Comment: "before_number | 变动前金额"},
+		{Name: "after_number", Type: field.TypeFloat32, Comment: "after_number | 变动后金额"},
+		{Name: "pay_method", Type: field.TypeString, Comment: "pay_method | 充值方式"},
 		{Name: "status", Type: field.TypeInt, Nullable: true, Comment: "status | 状态 1-正常 2-禁用", Default: 1},
 		{Name: "ntype", Type: field.TypeInt, Comment: "ntype | 积分变化类型:1-消耗 2-增加", Default: 1},
 		{Name: "table", Type: field.TypeString, Comment: "table | 积分变化表名", Default: ""},
@@ -389,7 +393,7 @@ var (
 			{
 				Name:    "creditusage_organization_id",
 				Unique:  false,
-				Columns: []*schema.Column{CreditUsageColumns[9]},
+				Columns: []*schema.Column{CreditUsageColumns[13]},
 			},
 		},
 	}

+ 316 - 1
ent/mutation.go

@@ -13423,6 +13423,13 @@ type CreditUsageMutation struct {
 	user_id            *string
 	number             *float32
 	addnumber          *float32
+	pay_number         *float32
+	addpay_number      *float32
+	before_number      *float32
+	addbefore_number   *float32
+	after_number       *float32
+	addafter_number    *float32
+	pay_method         *string
 	status             *int
 	addstatus          *int
 	ntype              *int
@@ -13770,6 +13777,210 @@ func (m *CreditUsageMutation) ResetNumber() {
 	m.addnumber = nil
 }
 
+// SetPayNumber sets the "pay_number" field.
+func (m *CreditUsageMutation) SetPayNumber(f float32) {
+	m.pay_number = &f
+	m.addpay_number = nil
+}
+
+// PayNumber returns the value of the "pay_number" field in the mutation.
+func (m *CreditUsageMutation) PayNumber() (r float32, exists bool) {
+	v := m.pay_number
+	if v == nil {
+		return
+	}
+	return *v, true
+}
+
+// OldPayNumber returns the old "pay_number" field's value of the CreditUsage entity.
+// If the CreditUsage 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 *CreditUsageMutation) OldPayNumber(ctx context.Context) (v float32, err error) {
+	if !m.op.Is(OpUpdateOne) {
+		return v, errors.New("OldPayNumber is only allowed on UpdateOne operations")
+	}
+	if m.id == nil || m.oldValue == nil {
+		return v, errors.New("OldPayNumber requires an ID field in the mutation")
+	}
+	oldValue, err := m.oldValue(ctx)
+	if err != nil {
+		return v, fmt.Errorf("querying old value for OldPayNumber: %w", err)
+	}
+	return oldValue.PayNumber, nil
+}
+
+// AddPayNumber adds f to the "pay_number" field.
+func (m *CreditUsageMutation) AddPayNumber(f float32) {
+	if m.addpay_number != nil {
+		*m.addpay_number += f
+	} else {
+		m.addpay_number = &f
+	}
+}
+
+// AddedPayNumber returns the value that was added to the "pay_number" field in this mutation.
+func (m *CreditUsageMutation) AddedPayNumber() (r float32, exists bool) {
+	v := m.addpay_number
+	if v == nil {
+		return
+	}
+	return *v, true
+}
+
+// ResetPayNumber resets all changes to the "pay_number" field.
+func (m *CreditUsageMutation) ResetPayNumber() {
+	m.pay_number = nil
+	m.addpay_number = nil
+}
+
+// SetBeforeNumber sets the "before_number" field.
+func (m *CreditUsageMutation) SetBeforeNumber(f float32) {
+	m.before_number = &f
+	m.addbefore_number = nil
+}
+
+// BeforeNumber returns the value of the "before_number" field in the mutation.
+func (m *CreditUsageMutation) BeforeNumber() (r float32, exists bool) {
+	v := m.before_number
+	if v == nil {
+		return
+	}
+	return *v, true
+}
+
+// OldBeforeNumber returns the old "before_number" field's value of the CreditUsage entity.
+// If the CreditUsage 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 *CreditUsageMutation) OldBeforeNumber(ctx context.Context) (v float32, err error) {
+	if !m.op.Is(OpUpdateOne) {
+		return v, errors.New("OldBeforeNumber is only allowed on UpdateOne operations")
+	}
+	if m.id == nil || m.oldValue == nil {
+		return v, errors.New("OldBeforeNumber requires an ID field in the mutation")
+	}
+	oldValue, err := m.oldValue(ctx)
+	if err != nil {
+		return v, fmt.Errorf("querying old value for OldBeforeNumber: %w", err)
+	}
+	return oldValue.BeforeNumber, nil
+}
+
+// AddBeforeNumber adds f to the "before_number" field.
+func (m *CreditUsageMutation) AddBeforeNumber(f float32) {
+	if m.addbefore_number != nil {
+		*m.addbefore_number += f
+	} else {
+		m.addbefore_number = &f
+	}
+}
+
+// AddedBeforeNumber returns the value that was added to the "before_number" field in this mutation.
+func (m *CreditUsageMutation) AddedBeforeNumber() (r float32, exists bool) {
+	v := m.addbefore_number
+	if v == nil {
+		return
+	}
+	return *v, true
+}
+
+// ResetBeforeNumber resets all changes to the "before_number" field.
+func (m *CreditUsageMutation) ResetBeforeNumber() {
+	m.before_number = nil
+	m.addbefore_number = nil
+}
+
+// SetAfterNumber sets the "after_number" field.
+func (m *CreditUsageMutation) SetAfterNumber(f float32) {
+	m.after_number = &f
+	m.addafter_number = nil
+}
+
+// AfterNumber returns the value of the "after_number" field in the mutation.
+func (m *CreditUsageMutation) AfterNumber() (r float32, exists bool) {
+	v := m.after_number
+	if v == nil {
+		return
+	}
+	return *v, true
+}
+
+// OldAfterNumber returns the old "after_number" field's value of the CreditUsage entity.
+// If the CreditUsage 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 *CreditUsageMutation) OldAfterNumber(ctx context.Context) (v float32, err error) {
+	if !m.op.Is(OpUpdateOne) {
+		return v, errors.New("OldAfterNumber is only allowed on UpdateOne operations")
+	}
+	if m.id == nil || m.oldValue == nil {
+		return v, errors.New("OldAfterNumber requires an ID field in the mutation")
+	}
+	oldValue, err := m.oldValue(ctx)
+	if err != nil {
+		return v, fmt.Errorf("querying old value for OldAfterNumber: %w", err)
+	}
+	return oldValue.AfterNumber, nil
+}
+
+// AddAfterNumber adds f to the "after_number" field.
+func (m *CreditUsageMutation) AddAfterNumber(f float32) {
+	if m.addafter_number != nil {
+		*m.addafter_number += f
+	} else {
+		m.addafter_number = &f
+	}
+}
+
+// AddedAfterNumber returns the value that was added to the "after_number" field in this mutation.
+func (m *CreditUsageMutation) AddedAfterNumber() (r float32, exists bool) {
+	v := m.addafter_number
+	if v == nil {
+		return
+	}
+	return *v, true
+}
+
+// ResetAfterNumber resets all changes to the "after_number" field.
+func (m *CreditUsageMutation) ResetAfterNumber() {
+	m.after_number = nil
+	m.addafter_number = nil
+}
+
+// SetPayMethod sets the "pay_method" field.
+func (m *CreditUsageMutation) SetPayMethod(s string) {
+	m.pay_method = &s
+}
+
+// PayMethod returns the value of the "pay_method" field in the mutation.
+func (m *CreditUsageMutation) PayMethod() (r string, exists bool) {
+	v := m.pay_method
+	if v == nil {
+		return
+	}
+	return *v, true
+}
+
+// OldPayMethod returns the old "pay_method" field's value of the CreditUsage entity.
+// If the CreditUsage 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 *CreditUsageMutation) OldPayMethod(ctx context.Context) (v string, err error) {
+	if !m.op.Is(OpUpdateOne) {
+		return v, errors.New("OldPayMethod is only allowed on UpdateOne operations")
+	}
+	if m.id == nil || m.oldValue == nil {
+		return v, errors.New("OldPayMethod requires an ID field in the mutation")
+	}
+	oldValue, err := m.oldValue(ctx)
+	if err != nil {
+		return v, fmt.Errorf("querying old value for OldPayMethod: %w", err)
+	}
+	return oldValue.PayMethod, nil
+}
+
+// ResetPayMethod resets all changes to the "pay_method" field.
+func (m *CreditUsageMutation) ResetPayMethod() {
+	m.pay_method = nil
+}
+
 // SetStatus sets the "status" field.
 func (m *CreditUsageMutation) SetStatus(i int) {
 	m.status = &i
@@ -14164,7 +14375,7 @@ func (m *CreditUsageMutation) Type() string {
 // order to get all numeric fields that were incremented/decremented, call
 // AddedFields().
 func (m *CreditUsageMutation) Fields() []string {
-	fields := make([]string, 0, 12)
+	fields := make([]string, 0, 16)
 	if m.created_at != nil {
 		fields = append(fields, creditusage.FieldCreatedAt)
 	}
@@ -14180,6 +14391,18 @@ func (m *CreditUsageMutation) Fields() []string {
 	if m.number != nil {
 		fields = append(fields, creditusage.FieldNumber)
 	}
+	if m.pay_number != nil {
+		fields = append(fields, creditusage.FieldPayNumber)
+	}
+	if m.before_number != nil {
+		fields = append(fields, creditusage.FieldBeforeNumber)
+	}
+	if m.after_number != nil {
+		fields = append(fields, creditusage.FieldAfterNumber)
+	}
+	if m.pay_method != nil {
+		fields = append(fields, creditusage.FieldPayMethod)
+	}
 	if m.status != nil {
 		fields = append(fields, creditusage.FieldStatus)
 	}
@@ -14219,6 +14442,14 @@ func (m *CreditUsageMutation) Field(name string) (ent.Value, bool) {
 		return m.UserID()
 	case creditusage.FieldNumber:
 		return m.Number()
+	case creditusage.FieldPayNumber:
+		return m.PayNumber()
+	case creditusage.FieldBeforeNumber:
+		return m.BeforeNumber()
+	case creditusage.FieldAfterNumber:
+		return m.AfterNumber()
+	case creditusage.FieldPayMethod:
+		return m.PayMethod()
 	case creditusage.FieldStatus:
 		return m.Status()
 	case creditusage.FieldNtype:
@@ -14252,6 +14483,14 @@ func (m *CreditUsageMutation) OldField(ctx context.Context, name string) (ent.Va
 		return m.OldUserID(ctx)
 	case creditusage.FieldNumber:
 		return m.OldNumber(ctx)
+	case creditusage.FieldPayNumber:
+		return m.OldPayNumber(ctx)
+	case creditusage.FieldBeforeNumber:
+		return m.OldBeforeNumber(ctx)
+	case creditusage.FieldAfterNumber:
+		return m.OldAfterNumber(ctx)
+	case creditusage.FieldPayMethod:
+		return m.OldPayMethod(ctx)
 	case creditusage.FieldStatus:
 		return m.OldStatus(ctx)
 	case creditusage.FieldNtype:
@@ -14310,6 +14549,34 @@ func (m *CreditUsageMutation) SetField(name string, value ent.Value) error {
 		}
 		m.SetNumber(v)
 		return nil
+	case creditusage.FieldPayNumber:
+		v, ok := value.(float32)
+		if !ok {
+			return fmt.Errorf("unexpected type %T for field %s", value, name)
+		}
+		m.SetPayNumber(v)
+		return nil
+	case creditusage.FieldBeforeNumber:
+		v, ok := value.(float32)
+		if !ok {
+			return fmt.Errorf("unexpected type %T for field %s", value, name)
+		}
+		m.SetBeforeNumber(v)
+		return nil
+	case creditusage.FieldAfterNumber:
+		v, ok := value.(float32)
+		if !ok {
+			return fmt.Errorf("unexpected type %T for field %s", value, name)
+		}
+		m.SetAfterNumber(v)
+		return nil
+	case creditusage.FieldPayMethod:
+		v, ok := value.(string)
+		if !ok {
+			return fmt.Errorf("unexpected type %T for field %s", value, name)
+		}
+		m.SetPayMethod(v)
+		return nil
 	case creditusage.FieldStatus:
 		v, ok := value.(int)
 		if !ok {
@@ -14370,6 +14637,15 @@ func (m *CreditUsageMutation) AddedFields() []string {
 	if m.addnumber != nil {
 		fields = append(fields, creditusage.FieldNumber)
 	}
+	if m.addpay_number != nil {
+		fields = append(fields, creditusage.FieldPayNumber)
+	}
+	if m.addbefore_number != nil {
+		fields = append(fields, creditusage.FieldBeforeNumber)
+	}
+	if m.addafter_number != nil {
+		fields = append(fields, creditusage.FieldAfterNumber)
+	}
 	if m.addstatus != nil {
 		fields = append(fields, creditusage.FieldStatus)
 	}
@@ -14392,6 +14668,12 @@ func (m *CreditUsageMutation) AddedField(name string) (ent.Value, bool) {
 	switch name {
 	case creditusage.FieldNumber:
 		return m.AddedNumber()
+	case creditusage.FieldPayNumber:
+		return m.AddedPayNumber()
+	case creditusage.FieldBeforeNumber:
+		return m.AddedBeforeNumber()
+	case creditusage.FieldAfterNumber:
+		return m.AddedAfterNumber()
 	case creditusage.FieldStatus:
 		return m.AddedStatus()
 	case creditusage.FieldNtype:
@@ -14416,6 +14698,27 @@ func (m *CreditUsageMutation) AddField(name string, value ent.Value) error {
 		}
 		m.AddNumber(v)
 		return nil
+	case creditusage.FieldPayNumber:
+		v, ok := value.(float32)
+		if !ok {
+			return fmt.Errorf("unexpected type %T for field %s", value, name)
+		}
+		m.AddPayNumber(v)
+		return nil
+	case creditusage.FieldBeforeNumber:
+		v, ok := value.(float32)
+		if !ok {
+			return fmt.Errorf("unexpected type %T for field %s", value, name)
+		}
+		m.AddBeforeNumber(v)
+		return nil
+	case creditusage.FieldAfterNumber:
+		v, ok := value.(float32)
+		if !ok {
+			return fmt.Errorf("unexpected type %T for field %s", value, name)
+		}
+		m.AddAfterNumber(v)
+		return nil
 	case creditusage.FieldStatus:
 		v, ok := value.(int)
 		if !ok {
@@ -14513,6 +14816,18 @@ func (m *CreditUsageMutation) ResetField(name string) error {
 	case creditusage.FieldNumber:
 		m.ResetNumber()
 		return nil
+	case creditusage.FieldPayNumber:
+		m.ResetPayNumber()
+		return nil
+	case creditusage.FieldBeforeNumber:
+		m.ResetBeforeNumber()
+		return nil
+	case creditusage.FieldAfterNumber:
+		m.ResetAfterNumber()
+		return nil
+	case creditusage.FieldPayMethod:
+		m.ResetPayMethod()
+		return nil
 	case creditusage.FieldStatus:
 		m.ResetStatus()
 		return nil

+ 6 - 6
ent/runtime/runtime.go

@@ -558,31 +558,31 @@ func init() {
 	// creditusage.UserIDValidator is a validator for the "user_id" field. It is called by the builders before save.
 	creditusage.UserIDValidator = creditusageDescUserID.Validators[0].(func(string) error)
 	// creditusageDescStatus is the schema descriptor for status field.
-	creditusageDescStatus := creditusageFields[2].Descriptor()
+	creditusageDescStatus := creditusageFields[6].Descriptor()
 	// creditusage.DefaultStatus holds the default value on creation for the status field.
 	creditusage.DefaultStatus = creditusageDescStatus.Default.(int)
 	// creditusage.StatusValidator is a validator for the "status" field. It is called by the builders before save.
 	creditusage.StatusValidator = creditusageDescStatus.Validators[0].(func(int) error)
 	// creditusageDescNtype is the schema descriptor for ntype field.
-	creditusageDescNtype := creditusageFields[3].Descriptor()
+	creditusageDescNtype := creditusageFields[7].Descriptor()
 	// creditusage.DefaultNtype holds the default value on creation for the ntype field.
 	creditusage.DefaultNtype = creditusageDescNtype.Default.(int)
 	// creditusageDescTable is the schema descriptor for table field.
-	creditusageDescTable := creditusageFields[4].Descriptor()
+	creditusageDescTable := creditusageFields[8].Descriptor()
 	// creditusage.DefaultTable holds the default value on creation for the table field.
 	creditusage.DefaultTable = creditusageDescTable.Default.(string)
 	// creditusageDescNid is the schema descriptor for nid field.
-	creditusageDescNid := creditusageFields[6].Descriptor()
+	creditusageDescNid := creditusageFields[10].Descriptor()
 	// creditusage.DefaultNid holds the default value on creation for the nid field.
 	creditusage.DefaultNid = creditusageDescNid.Default.(uint64)
 	// creditusageDescReason is the schema descriptor for reason field.
-	creditusageDescReason := creditusageFields[7].Descriptor()
+	creditusageDescReason := creditusageFields[11].Descriptor()
 	// creditusage.DefaultReason holds the default value on creation for the reason field.
 	creditusage.DefaultReason = creditusageDescReason.Default.(string)
 	// creditusage.ReasonValidator is a validator for the "reason" field. It is called by the builders before save.
 	creditusage.ReasonValidator = creditusageDescReason.Validators[0].(func(string) error)
 	// creditusageDescOperator is the schema descriptor for operator field.
-	creditusageDescOperator := creditusageFields[8].Descriptor()
+	creditusageDescOperator := creditusageFields[12].Descriptor()
 	// creditusage.DefaultOperator holds the default value on creation for the operator field.
 	creditusage.DefaultOperator = creditusageDescOperator.Default.(string)
 	// creditusage.OperatorValidator is a validator for the "operator" field. It is called by the builders before save.

+ 4 - 0
ent/schema/credit_usage.go

@@ -19,6 +19,10 @@ func (CreditUsage) Fields() []ent.Field {
 	return []ent.Field{
 		field.String("user_id").Optional().MaxLen(255).Comment("user_id | 用户ID"),
 		field.Float32("number").Comment("number | 积分改变量"),
+		field.Float32("pay_number").Comment("pay_number | 充值金额"),
+		field.Float32("before_number").Comment("before_number | 变动前金额"),
+		field.Float32("after_number").Comment("after_number | 变动后金额"),
+		field.String("pay_method").Comment("pay_method | 充值方式"),
 		field.Int("status").Optional().Range(1, 2).Default(1).Comment("status | 状态 1-正常 2-禁用"),
 		field.Int("ntype").Default(1).Comment("ntype | 积分变化类型:1-消耗 2-增加"),
 		field.String("table").Default("").Comment("table | 积分变化表名"),

+ 96 - 0
ent/set_not_nil.go

@@ -3032,6 +3032,102 @@ func (cu *CreditUsageCreate) SetNotNilNumber(value *float32) *CreditUsageCreate
 }
 
 // set field if value's pointer is not nil.
+func (cu *CreditUsageUpdate) SetNotNilPayNumber(value *float32) *CreditUsageUpdate {
+	if value != nil {
+		return cu.SetPayNumber(*value)
+	}
+	return cu
+}
+
+// set field if value's pointer is not nil.
+func (cu *CreditUsageUpdateOne) SetNotNilPayNumber(value *float32) *CreditUsageUpdateOne {
+	if value != nil {
+		return cu.SetPayNumber(*value)
+	}
+	return cu
+}
+
+// set field if value's pointer is not nil.
+func (cu *CreditUsageCreate) SetNotNilPayNumber(value *float32) *CreditUsageCreate {
+	if value != nil {
+		return cu.SetPayNumber(*value)
+	}
+	return cu
+}
+
+// set field if value's pointer is not nil.
+func (cu *CreditUsageUpdate) SetNotNilBeforeNumber(value *float32) *CreditUsageUpdate {
+	if value != nil {
+		return cu.SetBeforeNumber(*value)
+	}
+	return cu
+}
+
+// set field if value's pointer is not nil.
+func (cu *CreditUsageUpdateOne) SetNotNilBeforeNumber(value *float32) *CreditUsageUpdateOne {
+	if value != nil {
+		return cu.SetBeforeNumber(*value)
+	}
+	return cu
+}
+
+// set field if value's pointer is not nil.
+func (cu *CreditUsageCreate) SetNotNilBeforeNumber(value *float32) *CreditUsageCreate {
+	if value != nil {
+		return cu.SetBeforeNumber(*value)
+	}
+	return cu
+}
+
+// set field if value's pointer is not nil.
+func (cu *CreditUsageUpdate) SetNotNilAfterNumber(value *float32) *CreditUsageUpdate {
+	if value != nil {
+		return cu.SetAfterNumber(*value)
+	}
+	return cu
+}
+
+// set field if value's pointer is not nil.
+func (cu *CreditUsageUpdateOne) SetNotNilAfterNumber(value *float32) *CreditUsageUpdateOne {
+	if value != nil {
+		return cu.SetAfterNumber(*value)
+	}
+	return cu
+}
+
+// set field if value's pointer is not nil.
+func (cu *CreditUsageCreate) SetNotNilAfterNumber(value *float32) *CreditUsageCreate {
+	if value != nil {
+		return cu.SetAfterNumber(*value)
+	}
+	return cu
+}
+
+// set field if value's pointer is not nil.
+func (cu *CreditUsageUpdate) SetNotNilPayMethod(value *string) *CreditUsageUpdate {
+	if value != nil {
+		return cu.SetPayMethod(*value)
+	}
+	return cu
+}
+
+// set field if value's pointer is not nil.
+func (cu *CreditUsageUpdateOne) SetNotNilPayMethod(value *string) *CreditUsageUpdateOne {
+	if value != nil {
+		return cu.SetPayMethod(*value)
+	}
+	return cu
+}
+
+// set field if value's pointer is not nil.
+func (cu *CreditUsageCreate) SetNotNilPayMethod(value *string) *CreditUsageCreate {
+	if value != nil {
+		return cu.SetPayMethod(*value)
+	}
+	return cu
+}
+
+// set field if value's pointer is not nil.
 func (cu *CreditUsageUpdate) SetNotNilStatus(value *int) *CreditUsageUpdate {
 	if value != nil {
 		return cu.SetStatus(*value)

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

@@ -4,6 +4,7 @@ import (
 	"context"
 	"github.com/suyuan32/simple-admin-common/msg/errormsg"
 	"github.com/suyuan32/simple-admin-common/utils/pointy"
+	"time"
 	"wechat-api/ent/predicate"
 	"wechat-api/ent/usagedetail"
 	"wechat-api/internal/svc"
@@ -34,8 +35,38 @@ func (l *GetUsageDetailListLogic) GetUsageDetailList(req *types.UsageDetailListR
 
 	if !isAdmin {
 		predicates = append(predicates, usagedetail.OrganizationIDEQ(organizationId))
+	} else {
+		if req.OrganizationId != nil && *req.OrganizationId > 0 {
+			predicates = append(predicates, usagedetail.OrganizationIDEQ(*req.OrganizationId))
+		}
+	}
+
+	if req.Type != nil {
+		predicates = append(predicates, usagedetail.TypeEQ(*req.Type))
+	}
+	if req.BotId != nil {
+		predicates = append(predicates, usagedetail.BotID(*req.BotId))
+	}
+	if req.ReceiverId != nil {
+		predicates = append(predicates, usagedetail.ReceiverID(*req.ReceiverId))
+	}
+	// 这里是为限制时间段
+	if req.StartDate != nil && *req.StartDate != "" {
+		startDate, err := time.Parse("2006-01-02 15:04:05", *req.StartDate)
+		if err != nil {
+			l.Logger.Errorf("时间字符串startDate转换错误: %v", err)
+		} else {
+			predicates = append(predicates, usagedetail.CreatedAtGTE(startDate))
+		}
+	}
+	if req.EndDate != nil && *req.EndDate != "" {
+		endDate, err := time.Parse("2006-01-02 15:04:05", *req.EndDate)
+		if err != nil {
+			l.Logger.Errorf("时间字符串endDate转换错误: %v", err)
+		} else {
+			predicates = append(predicates, usagedetail.CreatedAtLTE(endDate))
+		}
 	}
-	predicates = append(predicates, usagedetail.BotID(*req.BotId))
 
 	data, err := l.svcCtx.DB.UsageDetail.Query().Where(predicates...).Page(l.ctx, req.Page, req.PageSize)
 

+ 1 - 2
internal/logic/credit_balance/create_credit_balance_logic.go

@@ -48,7 +48,6 @@ func (l *CreateCreditBalanceLogic) CreateCreditBalance(req *types.CreditBalanceI
 	old, err := tx.CreditBalance.Query().Where(creditbalance.OrganizationID(*req.OrganizationId)).First(l.ctx)
 	if err != nil && ent.IsNotFound(err) {
 		_, err = tx.CreditBalance.Create().
-			SetNotNilUserID(req.UserId).
 			SetNotNilBalance(req.Balance).
 			SetNotNilOrganizationID(req.OrganizationId).
 			Save(l.ctx)
@@ -70,7 +69,7 @@ func (l *CreateCreditBalanceLogic) CreateCreditBalance(req *types.CreditBalanceI
 	}
 
 	_, err = tx.CreditUsage.Create().
-		SetNotNilUserID(req.UserId).
+		SetNotNilStatus(req.Status).
 		SetNotNilNumber(req.Balance).
 		SetNtype(2).
 		SetTable("").

+ 1 - 1
internal/logic/credit_balance/get_credit_balance_by_id_logic.go

@@ -48,7 +48,7 @@ func (l *GetCreditBalanceByIdLogic) GetCreditBalanceById(req *types.IDReq) (*typ
 				CreatedAt: pointy.GetPointer(data.CreatedAt.UnixMilli()),
 				UpdatedAt: pointy.GetPointer(data.UpdatedAt.UnixMilli()),
 			},
-			UserId:           &data.UserID,
+			Status:           &data.Status,
 			Balance:          &data.Balance,
 			OrganizationId:   &data.OrganizationID,
 			OrganizationName: departmentInfo.Name,

+ 7 - 4
internal/logic/credit_balance/get_credit_balance_list_logic.go

@@ -3,6 +3,7 @@ package credit_balance
 import (
 	"context"
 	"github.com/suyuan32/simple-admin-core/rpc/types/core"
+	"github.com/zeromicro/go-zero/core/errorx"
 	"wechat-api/ent/creditbalance"
 	"wechat-api/ent/predicate"
 	"wechat-api/internal/svc"
@@ -30,10 +31,12 @@ func NewGetCreditBalanceListLogic(ctx context.Context, svcCtx *svc.ServiceContex
 }
 
 func (l *GetCreditBalanceListLogic) GetCreditBalanceList(req *types.CreditBalanceListReq) (*types.CreditBalanceListResp, error) {
-	var predicates []predicate.CreditBalance
-	if req.UserId != nil && *req.UserId != "" {
-		predicates = append(predicates, creditbalance.UserID(*req.UserId))
+	isAdmin := l.ctx.Value("isAdmin").(bool)
+	if !isAdmin {
+		return nil, errorx.NewInvalidArgumentError("权限不足")
 	}
+
+	var predicates []predicate.CreditBalance
 	if req.OrganizationId != nil && *req.OrganizationId > 0 {
 		predicates = append(predicates, creditbalance.OrganizationID(*req.OrganizationId))
 	}
@@ -60,7 +63,7 @@ func (l *GetCreditBalanceListLogic) GetCreditBalanceList(req *types.CreditBalanc
 					CreatedAt: pointy.GetPointer(v.CreatedAt.UnixMilli()),
 					UpdatedAt: pointy.GetPointer(v.UpdatedAt.UnixMilli()),
 				},
-				UserId:           &v.UserID,
+				Status:           &v.Status,
 				Balance:          &v.Balance,
 				OrganizationId:   &v.OrganizationID,
 				OrganizationName: departmentInfo.Name,

+ 19 - 1
internal/logic/credit_balance/operate_credit_balance_logic.go

@@ -27,6 +27,11 @@ func NewOperateCreditBalanceLogic(ctx context.Context, svcCtx *svc.ServiceContex
 }
 
 func (l *OperateCreditBalanceLogic) OperateCreditBalance(req *types.CreditBalanceOperateReq) (*types.BaseMsgResp, error) {
+	isAdmin := l.ctx.Value("isAdmin").(bool)
+	if !isAdmin {
+		return nil, errorx.NewInvalidArgumentError("权限不足")
+	}
+
 	if req.Number == nil || *req.Number == 0 {
 		return nil, errorx.NewInvalidArgumentError("Number参数非法")
 	}
@@ -51,15 +56,28 @@ func (l *OperateCreditBalanceLogic) OperateCreditBalance(req *types.CreditBalanc
 
 	userId := l.ctx.Value("userId").(string)
 	tx, err := l.svcCtx.DB.Tx(context.Background())
+
+	var beforeNumber, afterNumber float32
+	if creditBalance == nil {
+		beforeNumber = 0
+		afterNumber = *req.Number
+	} else {
+		beforeNumber = creditBalance.Balance
+		afterNumber = beforeNumber + *req.Number
+	}
+
 	_, err = tx.CreditUsage.Create().
-		SetUserID("").
 		SetNumber(*req.Number).
+		SetNotNilPayMethod(req.PayMethod). //支付方式
+		SetNotNilPayNumber(req.PayNumber). //支付金额
 		SetNtype(ntype).
 		SetNid(0).
 		SetTable("").
 		SetReason(*req.Reason).
 		SetOrganizationID(*req.OrganizationId).
 		SetOperator(userId).
+		SetBeforeNumber(beforeNumber).
+		SetAfterNumber(afterNumber).
 		Save(l.ctx)
 	if err != nil {
 		l.Logger.Errorf("create credit_usage error:%v\n", err)

+ 0 - 1
internal/logic/credit_balance/update_credit_balance_logic.go

@@ -27,7 +27,6 @@ func NewUpdateCreditBalanceLogic(ctx context.Context, svcCtx *svc.ServiceContext
 
 func (l *UpdateCreditBalanceLogic) UpdateCreditBalance(req *types.CreditBalanceInfo) (*types.BaseMsgResp, error) {
 	err := l.svcCtx.DB.CreditBalance.UpdateOneID(*req.Id).
-		SetNotNilUserID(req.UserId).
 		SetNotNilBalance(req.Balance).
 		SetNotNilStatus(req.Status).
 		SetNotNilOrganizationID(req.OrganizationId).

+ 14 - 15
internal/logic/credit_usage/create_credit_usage_logic.go

@@ -7,7 +7,7 @@ import (
 	"wechat-api/internal/types"
 	"wechat-api/internal/utils/dberrorhandler"
 
-    "github.com/suyuan32/simple-admin-common/msg/errormsg"
+	"github.com/suyuan32/simple-admin-common/msg/errormsg"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )
@@ -27,21 +27,20 @@ func NewCreateCreditUsageLogic(ctx context.Context, svcCtx *svc.ServiceContext)
 }
 
 func (l *CreateCreditUsageLogic) CreateCreditUsage(req *types.CreditUsageInfo) (*types.BaseMsgResp, error) {
-    _, err := l.svcCtx.DB.CreditUsage.Create().
-			SetNotNilUserID(req.UserId).
-			SetNotNilNumber(req.Number).
-			SetNotNilStatus(req.Status).
-			SetNotNilNtype(req.Ntype).
-			SetNotNilTable(req.Table).
-			SetNotNilOrganizationID(req.OrganizationId).
-			SetNotNilNid(req.Nid).
-			SetNotNilReason(req.Reason).
-			SetNotNilOperator(req.Operator).
-			Save(l.ctx)
-
-    if err != nil {
+	_, err := l.svcCtx.DB.CreditUsage.Create().
+		SetNotNilNumber(req.Number).
+		SetNotNilStatus(req.Status).
+		SetNotNilNtype(req.Ntype).
+		SetNotNilTable(req.Table).
+		SetNotNilOrganizationID(req.OrganizationId).
+		SetNotNilNid(req.Nid).
+		SetNotNilReason(req.Reason).
+		SetNotNilOperator(req.Operator).
+		Save(l.ctx)
+
+	if err != nil {
 		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 	}
 
-    return &types.BaseMsgResp{Msg: errormsg.CreateSuccess}, nil
+	return &types.BaseMsgResp{Msg: errormsg.CreateSuccess}, nil
 }

+ 24 - 22
internal/logic/credit_usage/get_credit_usage_by_id_logic.go

@@ -7,7 +7,7 @@ import (
 	"wechat-api/internal/types"
 	"wechat-api/internal/utils/dberrorhandler"
 
-    "github.com/suyuan32/simple-admin-common/msg/errormsg"
+	"github.com/suyuan32/simple-admin-common/msg/errormsg"
 
 	"github.com/suyuan32/simple-admin-common/utils/pointy"
 	"github.com/zeromicro/go-zero/core/logx"
@@ -34,26 +34,28 @@ func (l *GetCreditUsageByIdLogic) GetCreditUsageById(req *types.IDReq) (*types.C
 	}
 
 	return &types.CreditUsageInfoResp{
-	    BaseDataInfo: types.BaseDataInfo{
-            Code: 0,
-            Msg:  errormsg.Success,
-        },
-        Data: types.CreditUsageInfo{
-            BaseIDInfo:    types.BaseIDInfo{
-				Id:          &data.ID,
-				CreatedAt:    pointy.GetPointer(data.CreatedAt.UnixMilli()),
-				UpdatedAt:    pointy.GetPointer(data.UpdatedAt.UnixMilli()),
-            },
-			UserId:	&data.UserID,
-			Number:	&data.Number,
-			Status:	&data.Status,
-			Ntype:	&data.Ntype,
-			Table:	&data.Table,
-			OrganizationId:	&data.OrganizationID,
-			Nid:	&data.Nid,
-			Reason:	&data.Reason,
-			Operator:	&data.Operator,
-        },
+		BaseDataInfo: types.BaseDataInfo{
+			Code: 0,
+			Msg:  errormsg.Success,
+		},
+		Data: types.CreditUsageInfo{
+			BaseIDInfo: types.BaseIDInfo{
+				Id:        &data.ID,
+				CreatedAt: pointy.GetPointer(data.CreatedAt.UnixMilli()),
+				UpdatedAt: pointy.GetPointer(data.UpdatedAt.UnixMilli()),
+			},
+			Number:         &data.Number,
+			BeforeNumber:   &data.BeforeNumber,
+			AfterNumber:    &data.AfterNumber,
+			PayNumber:      &data.PayNumber,
+			PayMethod:      &data.PayMethod,
+			Status:         &data.Status,
+			Ntype:          &data.Ntype,
+			Table:          &data.Table,
+			OrganizationId: &data.OrganizationID,
+			Nid:            &data.Nid,
+			Reason:         &data.Reason,
+			Operator:       &data.Operator,
+		},
 	}, nil
 }
-

+ 36 - 14
internal/logic/credit_usage/get_credit_usage_list_logic.go

@@ -3,6 +3,7 @@ package credit_usage
 import (
 	"context"
 	"github.com/suyuan32/simple-admin-core/rpc/types/core"
+	"time"
 
 	"wechat-api/ent/creditusage"
 	"wechat-api/ent/predicate"
@@ -31,10 +32,39 @@ func NewGetCreditUsageListLogic(ctx context.Context, svcCtx *svc.ServiceContext)
 }
 
 func (l *GetCreditUsageListLogic) GetCreditUsageList(req *types.CreditUsageListReq) (*types.CreditUsageListResp, error) {
+	isAdmin := l.ctx.Value("isAdmin").(bool)
 	var predicates []predicate.CreditUsage
-	if req.OrganizationId != nil {
-		predicates = append(predicates, creditusage.OrganizationID(*req.OrganizationId))
+	if isAdmin {
+		if req.OrganizationId != nil {
+			predicates = append(predicates, creditusage.OrganizationID(*req.OrganizationId))
+		}
+	} else {
+		organizationId := l.ctx.Value("organizationId").(uint64)
+		predicates = append(predicates, creditusage.OrganizationID(organizationId))
+	}
+
+	if req.Ntype != nil {
+		predicates = append(predicates, creditusage.Ntype(*req.Ntype))
+	}
+
+	// 这里是为限制时间段
+	if req.StartDate != nil && *req.StartDate != "" {
+		startDate, err := time.Parse("2006-01-02 15:04:05", *req.StartDate)
+		if err != nil {
+			l.Logger.Errorf("时间字符串startDate转换错误: %v", err)
+		} else {
+			predicates = append(predicates, creditusage.CreatedAtGTE(startDate))
+		}
+	}
+	if req.EndDate != nil && *req.EndDate != "" {
+		endDate, err := time.Parse("2006-01-02 15:04:05", *req.EndDate)
+		if err != nil {
+			l.Logger.Errorf("时间字符串endDate转换错误: %v", err)
+		} else {
+			predicates = append(predicates, creditusage.CreatedAtLTE(endDate))
+		}
 	}
+
 	data, err := l.svcCtx.DB.CreditUsage.Query().Where(predicates...).Page(l.ctx, req.Page, req.PageSize)
 
 	if err != nil {
@@ -51,16 +81,6 @@ func (l *GetCreditUsageListLogic) GetCreditUsageList(req *types.CreditUsageListR
 	}
 
 	for _, v := range data.List {
-		bUserInfo := types.UserInfo{}
-		if v.UserID != "" {
-			userInfo, _ := l.svcCtx.CoreRpc.GetUserById(l.ctx, &core.UUIDReq{Id: v.UserID})
-			if userInfo != nil {
-				bUserInfo.Id = userInfo.Id
-				bUserInfo.Username = userInfo.Username
-				bUserInfo.Nickname = userInfo.Nickname
-				bUserInfo.Avatar = userInfo.Avatar
-			}
-		}
 		resp.Data.Data = append(resp.Data.Data,
 			types.CreditUsageInfo{
 				BaseIDInfo: types.BaseIDInfo{
@@ -68,9 +88,11 @@ func (l *GetCreditUsageListLogic) GetCreditUsageList(req *types.CreditUsageListR
 					CreatedAt: pointy.GetPointer(v.CreatedAt.UnixMilli()),
 					UpdatedAt: pointy.GetPointer(v.UpdatedAt.UnixMilli()),
 				},
-				UserId:           &v.UserID,
-				UserInfo:         bUserInfo,
 				Number:           &v.Number,
+				BeforeNumber:     &v.BeforeNumber,
+				AfterNumber:      &v.AfterNumber,
+				PayNumber:        &v.PayNumber,
+				PayMethod:        &v.PayMethod,
 				Status:           &v.Status,
 				Ntype:            &v.Ntype,
 				Table:            &v.Table,

+ 6 - 15
internal/logic/credit_usage/update_credit_usage_logic.go

@@ -7,7 +7,6 @@ import (
 	"wechat-api/internal/types"
 	"wechat-api/internal/utils/dberrorhandler"
 
-
 	"github.com/suyuan32/simple-admin-common/msg/errormsg"
 	"github.com/zeromicro/go-zero/core/logx"
 )
@@ -27,21 +26,13 @@ func NewUpdateCreditUsageLogic(ctx context.Context, svcCtx *svc.ServiceContext)
 }
 
 func (l *UpdateCreditUsageLogic) UpdateCreditUsage(req *types.CreditUsageInfo) (*types.BaseMsgResp, error) {
-    err := l.svcCtx.DB.CreditUsage.UpdateOneID(*req.Id).
-			SetNotNilUserID(req.UserId).
-			SetNotNilNumber(req.Number).
-			SetNotNilStatus(req.Status).
-			SetNotNilNtype(req.Ntype).
-			SetNotNilTable(req.Table).
-			SetNotNilOrganizationID(req.OrganizationId).
-			SetNotNilNid(req.Nid).
-			SetNotNilReason(req.Reason).
-			SetNotNilOperator(req.Operator).
-			Exec(l.ctx)
-
-    if err != nil {
+	err := l.svcCtx.DB.CreditUsage.UpdateOneID(*req.Id).
+		SetNotNilStatus(req.Status).
+		Exec(l.ctx)
+
+	if err != nil {
 		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 	}
 
-    return &types.BaseMsgResp{Msg: errormsg.UpdateSuccess}, nil
+	return &types.BaseMsgResp{Msg: errormsg.UpdateSuccess}, nil
 }

+ 18 - 5
internal/types/types.go

@@ -3339,7 +3339,12 @@ type UsageDetailListInfo struct {
 type UsageDetailListReq struct {
 	PageInfo
 	// 租户id
-	BotId *string `json:"botId,optional"`
+	OrganizationId *uint64 `json:"organizationId,optional"`
+	Type           *int    `json:"type,optional"`
+	BotId          *string `json:"botId,optional"`
+	ReceiverId     *string `json:"receiverId,optional"`
+	StartDate      *string `json:"startDate,optional"`
+	EndDate        *string `json:"endDate,optional"`
 }
 
 // swagger:model UsageDetailResp
@@ -3554,7 +3559,7 @@ type WxData struct {
 type CreditBalanceInfo struct {
 	BaseIDInfo
 	// user_id | 用户ID
-	UserId *string `json:"userId,optional"`
+	//        UserId  *string `json:"userId,optional"`
 	// role | 角色设定
 	Balance *float32 `json:"balance,optional"`
 	// status | 状态 1-正常 2-禁用
@@ -3601,6 +3606,8 @@ type CreditBalanceInfoResp struct {
 type CreditBalanceOperateReq struct {
 	OrganizationId *uint64  `json:"organizationId,optional"`
 	Number         *float32 `json:"number,optional"`
+	PayNumber      *float32 `json:"payNumber,optional"`
+	PayMethod      *string  `json:"payMethod,optional"`
 	Reason         *string  `json:"reason,optional"`
 }
 
@@ -3609,10 +3616,13 @@ type CreditBalanceOperateReq struct {
 type CreditUsageInfo struct {
 	BaseIDInfo
 	// user_id | 用户ID
-	UserId   *string  `json:"userId,optional"`
-	UserInfo UserInfo `json:"userInfo,optional"`
+	//        UserId  *string `json:"userId,optional"`
 	// number | 积分改变量
-	Number *float32 `json:"number,optional"`
+	Number       *float32 `json:"number,optional"`
+	BeforeNumber *float32 `json:"beforeNumber,optional"`
+	AfterNumber  *float32 `json:"afterNumber,optional"`
+	PayNumber    *float32 `json:"payNumber,optional"`
+	PayMethod    *string  `json:"payMethod,optional"`
 	// status | 状态 1-正常 2-禁用
 	Status *int `json:"status,optional"`
 	// ntype | 积分变化类型:1-消耗 2-增加
@@ -3651,6 +3661,9 @@ type CreditUsageListInfo struct {
 type CreditUsageListReq struct {
 	PageInfo
 	OrganizationId *uint64 `json:"organizationId,optional"`
+	Ntype          *int    `json:"ntype,optional"`
+	StartDate      *string `json:"startDate,optional"`
+	EndDate        *string `json:"endDate,optional"`
 }
 
 // CreditUsage information response | CreditUsage信息返回体