This commit is contained in:
oneao committed 2026-01-18 21:20:51 +08:00
1 parent 78c7a812be
commit 1934225c53
24 files changed
+711 -654

No files matched your search

@@ -164,3 +164,39 @@ func CreateMoneyCategory(ctx context.Context, c *app.RequestContext) {
response.Success(c).Data(resp).Send() response.Success(c).Data(resp).Send()
} }
// UpdateMoneyCategory .
// @router /money/category/update [POST]
func UpdateMoneyCategory(ctx context.Context, c *app.RequestContext) {
var err error
var req money.UpdateMoneyCategoryReq
err = c.BindAndValidate(&req)
if err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
resp := new(money.UpdateMoneyCategoryResp)
params := repo.UpdateMoneyCategoryParams{
ID: req.Id,
Name: req.Name,
Icon: req.Icon,
}
// 插入
err = db.WithTx(ctx, func(q *repo.Queries) error {
err = q.UpdateMoneyCategory(ctx, params)
if err != nil {
return err
}
return nil
})
if err != nil {
errorx.AddError(c, err)
return
}
response.Success(c).Data(resp).Send()
}
@@ -12,11 +12,9 @@ import (
"allapp/utils/response" "allapp/utils/response"
"context" "context"
"fmt" "fmt"
"sort"
"time" "time"
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"github.com/shopspring/decimal"
money "allapp/biz/model/money" money "allapp/biz/model/money"
@@ -46,19 +44,19 @@ func QueryMoneyRecord(ctx context.Context, c *app.RequestContext) {
spaceID, ok := middleware.GetSpaceID(ctx) spaceID, ok := middleware.GetSpaceID(ctx)
// 定义统一的 records 切片 // 定义统一的 records 切片
var dbRecordsUser []repo.FindUserMoneyRecordsRow var dbRecordsUser []repo.MoneyRecord
var dbRecordsSpace []repo.FindMoneyRecordsBySpaceRow var dbRecordsSpace []repo.FindMoneyRecordsBySpaceRow
var errQuery error var errQuery error
// 最终返回统一类型 // 最终返回统一类型
var records []*money.MoneyRecordItem var records []*money.MoneyRecord
// 有空间ID,查询空间内所有用户 // 有空间ID,查询空间内所有用户
if ok { if ok {
params := repo.FindMoneyRecordsBySpaceParams{ params := repo.FindMoneyRecordsBySpaceParams{
SpaceID: spaceID, SpaceID: spaceID,
RecordTime: pgtype.Timestamp{Time: startTime, Valid: true}, RecordTime: pgtype.Date{Time: startTime, Valid: true},
RecordTime_2: pgtype.Timestamp{Time: endTime, Valid: true}, RecordTime_2: pgtype.Date{Time: endTime, Valid: true},
} }
dbRecordsSpace, errQuery = db.Queries.FindMoneyRecordsBySpace(ctx, params) dbRecordsSpace, errQuery = db.Queries.FindMoneyRecordsBySpace(ctx, params)
if errQuery != nil { if errQuery != nil {
@@ -67,27 +65,24 @@ func QueryMoneyRecord(ctx context.Context, c *app.RequestContext) {
} }
for _, r := range dbRecordsSpace { for _, r := range dbRecordsSpace {
records = append(records, &money.MoneyRecordItem{ records = append(records, &money.MoneyRecord{
Id: r.ID, Id: r.ID,
CategoryId: r.CategoryID, CategoryId: r.CategoryID,
CategoryType: r.CategoryType.Int32, UserId: r.UserID,
CategoryIcon: r.CategoryIcon.String, Username: r.Username.String,
CategoryName: r.CategoryName.String, Amount: pgtypex.NumericToString(r.Amount),
UserId: r.UserID, Remark: r.Remark.String,
Username: r.Username.String, RecordTime: pgtypex.DateToString(r.RecordTime),
Amount: pgtypex.NumericToString(r.Amount), CreateTime: pgtypex.TimestampToMillis(r.CreateTime),
Remark: r.Remark.String, UpdateTime: pgtypex.TimestampToMillis(r.UpdateTime),
RecordTime: pgtypex.TimestampToDateString(r.RecordTime),
CreateTime: pgtypex.TimestampToDateTimeString(r.CreateTime),
UpdateTime: pgtypex.TimestampToDateTimeString(r.UpdateTime),
}) })
} }
} else { } else {
// 没有空间ID,只查询单用户 // 没有空间ID,只查询单用户
params := repo.FindUserMoneyRecordsParams{ params := repo.FindUserMoneyRecordsParams{
UserID: userID, UserID: userID,
RecordTime: pgtype.Timestamp{Time: startTime, Valid: true}, RecordTime: pgtype.Date{Time: startTime, Valid: true},
RecordTime_2: pgtype.Timestamp{Time: endTime, Valid: true}, RecordTime_2: pgtype.Date{Time: endTime, Valid: true},
} }
dbRecordsUser, errQuery = db.Queries.FindUserMoneyRecords(ctx, params) dbRecordsUser, errQuery = db.Queries.FindUserMoneyRecords(ctx, params)
if errQuery != nil { if errQuery != nil {
@@ -96,76 +91,22 @@ func QueryMoneyRecord(ctx context.Context, c *app.RequestContext) {
} }
for _, r := range dbRecordsUser { for _, r := range dbRecordsUser {
records = append(records, &money.MoneyRecordItem{ records = append(records, &money.MoneyRecord{
Id: r.ID, Id: r.ID,
CategoryId: r.CategoryID, CategoryId: r.CategoryID,
CategoryType: r.CategoryType.Int32, UserId: r.UserID,
CategoryIcon: r.CategoryIcon.String, Username: "",
CategoryName: r.CategoryName.String, Amount: pgtypex.NumericToString(r.Amount),
UserId: r.UserID, Remark: r.Remark.String,
Username: "", RecordTime: pgtypex.DateToString(r.RecordTime),
Amount: pgtypex.NumericToString(r.Amount), CreateTime: pgtypex.TimestampToMillis(r.CreateTime),
Remark: r.Remark.String, UpdateTime: pgtypex.TimestampToMillis(r.UpdateTime),
RecordTime: pgtypex.TimestampToDateString(r.RecordTime),
CreateTime: pgtypex.TimestampToDateTimeString(r.CreateTime),
UpdateTime: pgtypex.TimestampToDateTimeString(r.UpdateTime),
}) })
} }
} }
// 分组统计
groupMap := make(map[string]*money.MoneyRecordGroup)
totalIncome := decimal.NewFromInt(0)
totalExpense := decimal.NewFromInt(0)
for _, r := range records {
day := r.RecordTime[:10] // "YYYY-MM-DD"
group, ok := groupMap[day]
if !ok {
group = &money.MoneyRecordGroup{
RecordTime: day,
Income: "0.00",
Expense: "0.00",
Records: make([]*money.MoneyRecordItem, 0),
}
groupMap[day] = group
}
group.Records = append(group.Records, r)
// 收支累加
amount := decimal.RequireFromString(r.Amount)
if r.CategoryType == 1 {
incomeDec, _ := decimal.NewFromString(group.Income)
incomeDec = incomeDec.Add(amount)
group.Income = incomeDec.Round(2).StringFixed(2)
totalIncome = totalIncome.Add(amount)
} else if r.CategoryType == 0 {
expenseDec, _ := decimal.NewFromString(group.Expense)
expenseDec = expenseDec.Add(amount)
group.Expense = expenseDec.Round(2).StringFixed(2)
totalExpense = totalExpense.Add(amount)
}
}
// 对日期排序
dates := make([]string, 0, len(groupMap))
for k := range groupMap {
dates = append(dates, k)
}
sort.Slice(dates, func(i, j int) bool { return dates[i] > dates[j] })
resultGroups := make([]*money.MoneyRecordGroup, 0, len(dates))
for _, day := range dates {
resultGroups = append(resultGroups, groupMap[day])
}
result := &money.QueryMoneyRecordsResult{ result := &money.QueryMoneyRecordsResult{
Records: resultGroups, Records: records,
TotalIncome: totalIncome.Round(2).StringFixed(2),
TotalExpense: totalExpense.Round(2).StringFixed(2),
TotalBalance: totalIncome.Sub(totalExpense).Round(2).StringFixed(2),
} }
response.Success(c).Data(result).Send() response.Success(c).Data(result).Send()
@@ -192,17 +133,22 @@ func InsertMoneyRecord(ctx context.Context, c *app.RequestContext) {
UserID: middleware.GetUserID(ctx), UserID: middleware.GetUserID(ctx),
Amount: pgtypex.StringToNumeric(req.Amount), Amount: pgtypex.StringToNumeric(req.Amount),
Remark: pgtypex.StringToText(req.Remark), Remark: pgtypex.StringToText(req.Remark),
RecordTime: pgtypex.StringToTimestamp(req.RecordTime), RecordTime: pgtypex.StringToDate(req.RecordTime),
} }
record, err := db.Queries.InsertMoneyRecord(ctx, params) record, err := db.Queries.InsertMoneyRecord(ctx, params)
if err != nil {
errorx.AddError(c, err)
return
}
resp.Id = record.ID resp.Id = record.ID
resp.CategoryId = record.CategoryID resp.CategoryId = record.CategoryID
resp.UserId = record.UserID resp.UserId = record.UserID
resp.Amount = pgtypex.NumericToString(record.Amount) resp.Amount = pgtypex.NumericToString(record.Amount)
resp.Remark = record.Remark.String resp.Remark = record.Remark.String
resp.RecordTime = pgtypex.TimestampToDateString(record.RecordTime) resp.RecordTime = pgtypex.DateToString(record.RecordTime)
resp.CreateTime = pgtypex.TimestampToDateTimeString(record.CreateTime) resp.CreateTime = pgtypex.TimestampToDateTimeString(record.CreateTime)
resp.UpdateTime = pgtypex.TimestampToDateTimeString(record.UpdateTime) resp.UpdateTime = pgtypex.TimestampToDateTimeString(record.UpdateTime)
@@ -234,7 +180,7 @@ func UpdateMoneyRecord(ctx context.Context, c *app.RequestContext) {
CategoryID: req.CategoryId, CategoryID: req.CategoryId,
Amount: pgtypex.StringToNumeric(req.Amount), Amount: pgtypex.StringToNumeric(req.Amount),
Remark: pgtypex.StringToText(req.Remark), Remark: pgtypex.StringToText(req.Remark),
RecordTime: pgtypex.StringToTimestamp(req.RecordTime), RecordTime: pgtypex.StringToDate(req.RecordTime),
} }
if err := db.Queries.UpdateMoneyRecord(ctx, params); err != nil { if err := db.Queries.UpdateMoneyRecord(ctx, params); err != nil {
@@ -3,7 +3,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT. // Code generated by protoc-gen-go. DO NOT EDIT.
// versions: // versions:
// protoc-gen-go v1.28.0 // protoc-gen-go v1.28.0
// protoc v4.25.3 // protoc v6.33.1
// source: api.proto // source: api.proto
package api package api
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT. // Code generated by protoc-gen-go. DO NOT EDIT.
// versions: // versions:
// protoc-gen-go v1.28.0 // protoc-gen-go v1.28.0
// protoc v4.25.3 // protoc v6.33.1
// source: money.proto // source: money.proto
package money package money
@@ -10,6 +10,7 @@ import (
_ "allapp/biz/model/api" _ "allapp/biz/model/api"
protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl" protoimpl "google.golang.org/protobuf/runtime/protoimpl"
_ "google.golang.org/protobuf/types/known/emptypb"
reflect "reflect" reflect "reflect"
) )
@@ -29,67 +30,76 @@ var file_money_proto_rawDesc = []byte{
0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x1a, 0x1e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x1a, 0x1e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x72,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x32, 0xd9, 0x03, 0x0a, 0x14, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, 0x0a, 0x04, 0x4c, 0x69, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xcb,
0x73, 0x74, 0x12, 0x1b, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x04, 0x0a, 0x14, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12,
0x1c, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x1b, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x6e, 0x65,
0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x13, 0xca, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6d,
0xc1, 0x18, 0x0f, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61,
0x72, 0x79, 0x12, 0x74, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x13, 0xca, 0xc1, 0x18, 0x0f,
0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12,
0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x74, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x6e,
0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6d, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x6d, 0x6f, 0x6e,
0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x65, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61,
0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1a, 0xd2, 0xc1, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65,
0x18, 0x16, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74,
0x79, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1a, 0xd2, 0xc1, 0x18, 0x16, 0x2f,
0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2f, 0x64,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x6f, 0x72,
0x74, 0x12, 0x21, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x6f, 0x72,
0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
0x53, 0x6f, 0x72, 0x74, 0x12, 0x21, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1e, 0xd2, 0xc1, 0x18, 0x1a, 0x2f, 0x6d,
0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2f, 0x75, 0x70,
0x53, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x70, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12,
0x6f, 0x72, 0x79, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1e, 0xd2, 0xc1, 0x18, 0x1d, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f,
0x1a, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1e,
0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x70, 0x0a, 0x13, 0x43, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e,
0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1a,
0x72, 0x79, 0x12, 0x1d, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0xd2, 0xc1, 0x18, 0x16, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x74, 0x65, 0x67,
0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x6f, 0x72, 0x79, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x70, 0x0a, 0x13, 0x55, 0x70,
0x71, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x79, 0x12, 0x1d, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x70, 0x22, 0x1a, 0xd2, 0xc1, 0x18, 0x16, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71,
0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x32, 0xce, 0x03, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d,
0x0a, 0x12, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x72, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70,
0x76, 0x69, 0x63, 0x65, 0x12, 0x6b, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x22, 0x1a, 0xd2, 0xc1, 0x18, 0x16, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x74,
0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x32, 0xce, 0x03, 0x0a,
0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x12, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x72, 0x76,
0x64, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x69, 0x63, 0x65, 0x12, 0x6b, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x65,
0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e,
0x64, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x17, 0xd2, 0xc1, 0x18, 0x13, 0x2f, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e,
0x79, 0x12, 0x6d, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x49, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x17, 0xd2, 0xc1, 0x18, 0x13, 0x2f, 0x6d, 0x6f,
0x6e, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x6e, 0x65, 0x79, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79,
0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x49, 0x12, 0x6d, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52,
0x6e, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x49, 0x6e,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x18, 0xd2, 0xc1, 0x18, 0x14, 0x2f, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50,
0x65, 0x79, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x49, 0x6e,
0x12, 0x6d, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x18, 0xd2, 0xc1, 0x18, 0x14, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x18, 0xd2, 0xc1, 0x18, 0x14, 0x2f, 0x6d, 0x6f, 0x6e, 0x65,
0x79, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x79, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x12,
0x6d, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x6d, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65,
0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x55, 0x70, 0x64,
0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61,
0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x55, 0x70, 0x64,
0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x22, 0x18, 0xd2, 0xc1, 0x18, 0x14, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x18, 0xd2, 0xc1, 0x18, 0x14, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79,
0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x18, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x6d,
0x5a, 0x16, 0x61, 0x6c, 0x6c, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x6d, 0x6f, 0x64, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63,
0x65, 0x6c, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x72,
0x61, 0x6d, 0x73, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x22, 0x18, 0xd2, 0xc1, 0x18, 0x14, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f,
0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x18, 0x5a,
0x16, 0x61, 0x6c, 0x6c, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x6d, 0x6f, 0x64, 0x65,
0x6c, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var file_money_proto_goTypes = []interface{}{ var file_money_proto_goTypes = []interface{}{
@@ -97,38 +107,42 @@ var file_money_proto_goTypes = []interface{}{
(*DeleteMoneyCategoryReq)(nil), // 1: money.DeleteMoneyCategoryReq (*DeleteMoneyCategoryReq)(nil), // 1: money.DeleteMoneyCategoryReq
(*UpdateMoneyCategorySortReq)(nil), // 2: money.UpdateMoneyCategorySortReq (*UpdateMoneyCategorySortReq)(nil), // 2: money.UpdateMoneyCategorySortReq
(*CreateMoneyCategoryReq)(nil), // 3: money.CreateMoneyCategoryReq (*CreateMoneyCategoryReq)(nil), // 3: money.CreateMoneyCategoryReq
(*QueryMoneyRecordsParams)(nil), // 4: money.QueryMoneyRecordsParams (*UpdateMoneyCategoryReq)(nil), // 4: money.UpdateMoneyCategoryReq
(*InsertMoneyRecordParams)(nil), // 5: money.InsertMoneyRecordParams (*QueryMoneyRecordsParams)(nil), // 5: money.QueryMoneyRecordsParams
(*UpdateMoneyRecordParams)(nil), // 6: money.UpdateMoneyRecordParams (*InsertMoneyRecordParams)(nil), // 6: money.InsertMoneyRecordParams
(*DeleteMoneyRecordParams)(nil), // 7: money.DeleteMoneyRecordParams (*UpdateMoneyRecordParams)(nil), // 7: money.UpdateMoneyRecordParams
(*ListMoneyCategoryResp)(nil), // 8: money.ListMoneyCategoryResp (*DeleteMoneyRecordParams)(nil), // 8: money.DeleteMoneyRecordParams
(*DeleteMoneyCategoryResp)(nil), // 9: money.DeleteMoneyCategoryResp (*ListMoneyCategoryResp)(nil), // 9: money.ListMoneyCategoryResp
(*UpdateMoneyCategorySortResp)(nil), // 10: money.UpdateMoneyCategorySortResp (*DeleteMoneyCategoryResp)(nil), // 10: money.DeleteMoneyCategoryResp
(*CreateMoneyCategoryResp)(nil), // 11: money.CreateMoneyCategoryResp (*UpdateMoneyCategorySortResp)(nil), // 11: money.UpdateMoneyCategorySortResp
(*QueryMoneyRecordsResult)(nil), // 12: money.QueryMoneyRecordsResult (*CreateMoneyCategoryResp)(nil), // 12: money.CreateMoneyCategoryResp
(*InsertMoneyRecordResult)(nil), // 13: money.InsertMoneyRecordResult (*UpdateMoneyCategoryResp)(nil), // 13: money.UpdateMoneyCategoryResp
(*UpdateMoneyRecordResult)(nil), // 14: money.UpdateMoneyRecordResult (*QueryMoneyRecordsResult)(nil), // 14: money.QueryMoneyRecordsResult
(*DeleteMoneyRecordResult)(nil), // 15: money.DeleteMoneyRecordResult (*InsertMoneyRecordResult)(nil), // 15: money.InsertMoneyRecordResult
(*UpdateMoneyRecordResult)(nil), // 16: money.UpdateMoneyRecordResult
(*DeleteMoneyRecordResult)(nil), // 17: money.DeleteMoneyRecordResult
} }
var file_money_proto_depIdxs = []int32{ var file_money_proto_depIdxs = []int32{
0, // 0: money.MoneyCategoryService.List:input_type -> money.ListMoneyCategoryReq 0, // 0: money.MoneyCategoryService.List:input_type -> money.ListMoneyCategoryReq
1, // 1: money.MoneyCategoryService.DeleteUserMoneyCategory:input_type -> money.DeleteMoneyCategoryReq 1, // 1: money.MoneyCategoryService.DeleteUserMoneyCategory:input_type -> money.DeleteMoneyCategoryReq
2, // 2: money.MoneyCategoryService.UpdateMoneyCategorySort:input_type -> money.UpdateMoneyCategorySortReq 2, // 2: money.MoneyCategoryService.UpdateMoneyCategorySort:input_type -> money.UpdateMoneyCategorySortReq
3, // 3: money.MoneyCategoryService.CreateMoneyCategory:input_type -> money.CreateMoneyCategoryReq 3, // 3: money.MoneyCategoryService.CreateMoneyCategory:input_type -> money.CreateMoneyCategoryReq
4, // 4: money.MoneyRecordService.QueryMoneyRecord:input_type -> money.QueryMoneyRecordsParams 4, // 4: money.MoneyCategoryService.UpdateMoneyCategory:input_type -> money.UpdateMoneyCategoryReq
5, // 5: money.MoneyRecordService.InsertMoneyRecord:input_type -> money.InsertMoneyRecordParams 5, // 5: money.MoneyRecordService.QueryMoneyRecord:input_type -> money.QueryMoneyRecordsParams
6, // 6: money.MoneyRecordService.UpdateMoneyRecord:input_type -> money.UpdateMoneyRecordParams 6, // 6: money.MoneyRecordService.InsertMoneyRecord:input_type -> money.InsertMoneyRecordParams
7, // 7: money.MoneyRecordService.DeleteMoneyRecord:input_type -> money.DeleteMoneyRecordParams 7, // 7: money.MoneyRecordService.UpdateMoneyRecord:input_type -> money.UpdateMoneyRecordParams
8, // 8: money.MoneyCategoryService.List:output_type -> money.ListMoneyCategoryResp 8, // 8: money.MoneyRecordService.DeleteMoneyRecord:input_type -> money.DeleteMoneyRecordParams
9, // 9: money.MoneyCategoryService.DeleteUserMoneyCategory:output_type -> money.DeleteMoneyCategoryResp 9, // 9: money.MoneyCategoryService.List:output_type -> money.ListMoneyCategoryResp
10, // 10: money.MoneyCategoryService.UpdateMoneyCategorySort:output_type -> money.UpdateMoneyCategorySortResp 10, // 10: money.MoneyCategoryService.DeleteUserMoneyCategory:output_type -> money.DeleteMoneyCategoryResp
11, // 11: money.MoneyCategoryService.CreateMoneyCategory:output_type -> money.CreateMoneyCategoryResp 11, // 11: money.MoneyCategoryService.UpdateMoneyCategorySort:output_type -> money.UpdateMoneyCategorySortResp
12, // 12: money.MoneyRecordService.QueryMoneyRecord:output_type -> money.QueryMoneyRecordsResult 12, // 12: money.MoneyCategoryService.CreateMoneyCategory:output_type -> money.CreateMoneyCategoryResp
13, // 13: money.MoneyRecordService.InsertMoneyRecord:output_type -> money.InsertMoneyRecordResult 13, // 13: money.MoneyCategoryService.UpdateMoneyCategory:output_type -> money.UpdateMoneyCategoryResp
14, // 14: money.MoneyRecordService.UpdateMoneyRecord:output_type -> money.UpdateMoneyRecordResult 14, // 14: money.MoneyRecordService.QueryMoneyRecord:output_type -> money.QueryMoneyRecordsResult
15, // 15: money.MoneyRecordService.DeleteMoneyRecord:output_type -> money.DeleteMoneyRecordResult 15, // 15: money.MoneyRecordService.InsertMoneyRecord:output_type -> money.InsertMoneyRecordResult
8, // [8:16] is the sub-list for method output_type 16, // 16: money.MoneyRecordService.UpdateMoneyRecord:output_type -> money.UpdateMoneyRecordResult
0, // [0:8] is the sub-list for method input_type 17, // 17: money.MoneyRecordService.DeleteMoneyRecord:output_type -> money.DeleteMoneyRecordResult
9, // [9:18] is the sub-list for method output_type
0, // [0:9] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name 0, // [0:0] is the sub-list for field type_name
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT. // Code generated by protoc-gen-go. DO NOT EDIT.
// versions: // versions:
// protoc-gen-go v1.28.0 // protoc-gen-go v1.28.0
// protoc v4.25.3 // protoc v6.33.1
// source: money/money_category_types.proto // source: money/money_category_types.proto
package money package money
@@ -536,6 +536,107 @@ func (x *CreateMoneyCategoryResp) GetId() int64 {
return 0 return 0
} }
type UpdateMoneyCategoryReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=Id,proto3" form:"id" json:"id"`
Name string `protobuf:"bytes,2,opt,name=Name,proto3" form:"name" json:"name" vd:"$ != ''"`
Icon string `protobuf:"bytes,3,opt,name=Icon,proto3" form:"icon" json:"icon" vd:"$ != ''"`
}
func (x *UpdateMoneyCategoryReq) Reset() {
*x = UpdateMoneyCategoryReq{}
if protoimpl.UnsafeEnabled {
mi := &file_money_money_category_types_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateMoneyCategoryReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateMoneyCategoryReq) ProtoMessage() {}
func (x *UpdateMoneyCategoryReq) ProtoReflect() protoreflect.Message {
mi := &file_money_money_category_types_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UpdateMoneyCategoryReq.ProtoReflect.Descriptor instead.
func (*UpdateMoneyCategoryReq) Descriptor() ([]byte, []int) {
return file_money_money_category_types_proto_rawDescGZIP(), []int{10}
}
func (x *UpdateMoneyCategoryReq) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *UpdateMoneyCategoryReq) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *UpdateMoneyCategoryReq) GetIcon() string {
if x != nil {
return x.Icon
}
return ""
}
type UpdateMoneyCategoryResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *UpdateMoneyCategoryResp) Reset() {
*x = UpdateMoneyCategoryResp{}
if protoimpl.UnsafeEnabled {
mi := &file_money_money_category_types_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateMoneyCategoryResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateMoneyCategoryResp) ProtoMessage() {}
func (x *UpdateMoneyCategoryResp) ProtoReflect() protoreflect.Message {
mi := &file_money_money_category_types_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UpdateMoneyCategoryResp.ProtoReflect.Descriptor instead.
func (*UpdateMoneyCategoryResp) Descriptor() ([]byte, []int) {
return file_money_money_category_types_proto_rawDescGZIP(), []int{11}
}
var File_money_money_category_types_proto protoreflect.FileDescriptor var File_money_money_category_types_proto protoreflect.FileDescriptor
var file_money_money_category_types_proto_rawDesc = []byte{ var file_money_money_category_types_proto_rawDesc = []byte{
@@ -595,7 +696,17 @@ var file_money_money_category_types_proto_rawDesc = []byte{
0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74,
0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x02, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xca, 0xbb, 0x18, 0x02, 0x69, 0x64, 0x52, 0x02, 0x49, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xca, 0xbb, 0x18, 0x02, 0x69, 0x64, 0x52, 0x02, 0x49,
0x64, 0x42, 0x18, 0x5a, 0x16, 0x61, 0x6c, 0x6c, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x64, 0x22, 0x82, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65,
0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x02,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xca, 0xbb, 0x18, 0x02, 0x69, 0x64,
0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x42, 0x13, 0xca, 0xbb, 0x18, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0xda, 0xbb, 0x18, 0x07,
0x24, 0x20, 0x21, 0x3d, 0x20, 0x27, 0x27, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a,
0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x13, 0xca, 0xbb, 0x18,
0x04, 0x69, 0x63, 0x6f, 0x6e, 0xda, 0xbb, 0x18, 0x07, 0x24, 0x20, 0x21, 0x3d, 0x20, 0x27, 0x27,
0x52, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x22, 0x19, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73,
0x70, 0x42, 0x18, 0x5a, 0x16, 0x61, 0x6c, 0x6c, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f,
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33, 0x74, 0x6f, 0x33,
} }
@@ -612,7 +723,7 @@ func file_money_money_category_types_proto_rawDescGZIP() []byte {
return file_money_money_category_types_proto_rawDescData return file_money_money_category_types_proto_rawDescData
} }
var file_money_money_category_types_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_money_money_category_types_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
var file_money_money_category_types_proto_goTypes = []interface{}{ var file_money_money_category_types_proto_goTypes = []interface{}{
(*MoneyCategory)(nil), // 0: money.MoneyCategory (*MoneyCategory)(nil), // 0: money.MoneyCategory
(*ListMoneyCategoryReq)(nil), // 1: money.ListMoneyCategoryReq (*ListMoneyCategoryReq)(nil), // 1: money.ListMoneyCategoryReq
@@ -624,6 +735,8 @@ var file_money_money_category_types_proto_goTypes = []interface{}{
(*UpdateMoneyCategorySortResp)(nil), // 7: money.UpdateMoneyCategorySortResp (*UpdateMoneyCategorySortResp)(nil), // 7: money.UpdateMoneyCategorySortResp
(*CreateMoneyCategoryReq)(nil), // 8: money.CreateMoneyCategoryReq (*CreateMoneyCategoryReq)(nil), // 8: money.CreateMoneyCategoryReq
(*CreateMoneyCategoryResp)(nil), // 9: money.CreateMoneyCategoryResp (*CreateMoneyCategoryResp)(nil), // 9: money.CreateMoneyCategoryResp
(*UpdateMoneyCategoryReq)(nil), // 10: money.UpdateMoneyCategoryReq
(*UpdateMoneyCategoryResp)(nil), // 11: money.UpdateMoneyCategoryResp
} }
var file_money_money_category_types_proto_depIdxs = []int32{ var file_money_money_category_types_proto_depIdxs = []int32{
0, // 0: money.ListMoneyCategoryResp.Categories:type_name -> money.MoneyCategory 0, // 0: money.ListMoneyCategoryResp.Categories:type_name -> money.MoneyCategory
@@ -761,6 +874,30 @@ func file_money_money_category_types_proto_init() {
return nil return nil
} }
} }
file_money_money_category_types_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateMoneyCategoryReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_money_money_category_types_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateMoneyCategoryResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
} }
type x struct{} type x struct{}
out := protoimpl.TypeBuilder{ out := protoimpl.TypeBuilder{
@@ -768,7 +905,7 @@ func file_money_money_category_types_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_money_money_category_types_proto_rawDesc, RawDescriptor: file_money_money_category_types_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 10, NumMessages: 12,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT. // Code generated by protoc-gen-go. DO NOT EDIT.
// versions: // versions:
// protoc-gen-go v1.28.0 // protoc-gen-go v1.28.0
// protoc v4.25.3 // protoc v6.33.1
// source: money/money_record_types.proto // source: money/money_record_types.proto
package money package money
@@ -22,27 +22,24 @@ const (
) )
// 单条记账记录 // 单条记账记录
type MoneyRecordItem struct { type MoneyRecord struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=Id,proto3" form:"id" json:"id"` Id int64 `protobuf:"varint,1,opt,name=Id,proto3" form:"id" json:"id"`
CategoryId int64 `protobuf:"varint,2,opt,name=CategoryId,proto3" form:"category_id" json:"category_id"` CategoryId int64 `protobuf:"varint,2,opt,name=CategoryId,proto3" form:"category_id" json:"category_id"`
UserId int64 `protobuf:"varint,3,opt,name=UserId,proto3" form:"user_id" json:"user_id"` UserId int64 `protobuf:"varint,3,opt,name=UserId,proto3" form:"user_id" json:"user_id"`
Amount string `protobuf:"bytes,4,opt,name=Amount,proto3" form:"amount" json:"amount"` Amount string `protobuf:"bytes,4,opt,name=Amount,proto3" form:"amount" json:"amount"`
Remark string `protobuf:"bytes,5,opt,name=Remark,proto3" form:"remark" json:"remark"` Remark string `protobuf:"bytes,5,opt,name=Remark,proto3" form:"remark" json:"remark"`
RecordTime string `protobuf:"bytes,6,opt,name=RecordTime,proto3" form:"record_time" json:"record_time"` RecordTime string `protobuf:"bytes,6,opt,name=RecordTime,proto3" form:"record_time" json:"record_time"`
CreateTime string `protobuf:"bytes,7,opt,name=CreateTime,proto3" form:"create_time" json:"create_time"` CreateTime int64 `protobuf:"varint,7,opt,name=CreateTime,proto3" form:"create_time" json:"create_time"`
UpdateTime string `protobuf:"bytes,8,opt,name=UpdateTime,proto3" form:"update_time" json:"update_time"` UpdateTime int64 `protobuf:"varint,8,opt,name=UpdateTime,proto3" form:"update_time" json:"update_time"`
Username string `protobuf:"bytes,9,opt,name=Username,proto3" form:"username" json:"username"` Username string `protobuf:"bytes,9,opt,name=Username,proto3" form:"username" json:"username"`
CategoryType int32 `protobuf:"varint,10,opt,name=CategoryType,proto3" form:"category_type" json:"category_type"`
CategoryIcon string `protobuf:"bytes,11,opt,name=CategoryIcon,proto3" form:"category_icon" json:"category_icon"`
CategoryName string `protobuf:"bytes,12,opt,name=CategoryName,proto3" form:"category_name" json:"category_name"`
} }
func (x *MoneyRecordItem) Reset() { func (x *MoneyRecord) Reset() {
*x = MoneyRecordItem{} *x = MoneyRecord{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_money_money_record_types_proto_msgTypes[0] mi := &file_money_money_record_types_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -50,13 +47,13 @@ func (x *MoneyRecordItem) Reset() {
} }
} }
func (x *MoneyRecordItem) String() string { func (x *MoneyRecord) String() string {
return protoimpl.X.MessageStringOf(x) return protoimpl.X.MessageStringOf(x)
} }
func (*MoneyRecordItem) ProtoMessage() {} func (*MoneyRecord) ProtoMessage() {}
func (x *MoneyRecordItem) ProtoReflect() protoreflect.Message { func (x *MoneyRecord) ProtoReflect() protoreflect.Message {
mi := &file_money_money_record_types_proto_msgTypes[0] mi := &file_money_money_record_types_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -68,167 +65,74 @@ func (x *MoneyRecordItem) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x) return mi.MessageOf(x)
} }
// Deprecated: Use MoneyRecordItem.ProtoReflect.Descriptor instead. // Deprecated: Use MoneyRecord.ProtoReflect.Descriptor instead.
func (*MoneyRecordItem) Descriptor() ([]byte, []int) { func (*MoneyRecord) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{0} return file_money_money_record_types_proto_rawDescGZIP(), []int{0}
} }
func (x *MoneyRecordItem) GetId() int64 { func (x *MoneyRecord) GetId() int64 {
if x != nil { if x != nil {
return x.Id return x.Id
} }
return 0 return 0
} }
func (x *MoneyRecordItem) GetCategoryId() int64 { func (x *MoneyRecord) GetCategoryId() int64 {
if x != nil { if x != nil {
return x.CategoryId return x.CategoryId
} }
return 0 return 0
} }
func (x *MoneyRecordItem) GetUserId() int64 { func (x *MoneyRecord) GetUserId() int64 {
if x != nil { if x != nil {
return x.UserId return x.UserId
} }
return 0 return 0
} }
func (x *MoneyRecordItem) GetAmount() string { func (x *MoneyRecord) GetAmount() string {
if x != nil { if x != nil {
return x.Amount return x.Amount
} }
return "" return ""
} }
func (x *MoneyRecordItem) GetRemark() string { func (x *MoneyRecord) GetRemark() string {
if x != nil { if x != nil {
return x.Remark return x.Remark
} }
return "" return ""
} }
func (x *MoneyRecordItem) GetRecordTime() string { func (x *MoneyRecord) GetRecordTime() string {
if x != nil { if x != nil {
return x.RecordTime return x.RecordTime
} }
return "" return ""
} }
func (x *MoneyRecordItem) GetCreateTime() string { func (x *MoneyRecord) GetCreateTime() int64 {
if x != nil { if x != nil {
return x.CreateTime return x.CreateTime
} }
return ""
}
func (x *MoneyRecordItem) GetUpdateTime() string {
if x != nil {
return x.UpdateTime
}
return ""
}
func (x *MoneyRecordItem) GetUsername() string {
if x != nil {
return x.Username
}
return ""
}
func (x *MoneyRecordItem) GetCategoryType() int32 {
if x != nil {
return x.CategoryType
}
return 0 return 0
} }
func (x *MoneyRecordItem) GetCategoryIcon() string { func (x *MoneyRecord) GetUpdateTime() int64 {
if x != nil { if x != nil {
return x.CategoryIcon return x.UpdateTime
}
return 0
}
func (x *MoneyRecord) GetUsername() string {
if x != nil {
return x.Username
} }
return "" return ""
} }
func (x *MoneyRecordItem) GetCategoryName() string {
if x != nil {
return x.CategoryName
}
return ""
}
// 同一天的记账记录分组
type MoneyRecordGroup struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
RecordTime string `protobuf:"bytes,1,opt,name=RecordTime,proto3" form:"record_time" json:"record_time"`
Expense string `protobuf:"bytes,2,opt,name=Expense,proto3" form:"expense" json:"expense"`
Income string `protobuf:"bytes,3,opt,name=Income,proto3" form:"income" json:"income"`
Records []*MoneyRecordItem `protobuf:"bytes,4,rep,name=Records,proto3" form:"records" json:"records"`
}
func (x *MoneyRecordGroup) Reset() {
*x = MoneyRecordGroup{}
if protoimpl.UnsafeEnabled {
mi := &file_money_money_record_types_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MoneyRecordGroup) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MoneyRecordGroup) ProtoMessage() {}
func (x *MoneyRecordGroup) ProtoReflect() protoreflect.Message {
mi := &file_money_money_record_types_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MoneyRecordGroup.ProtoReflect.Descriptor instead.
func (*MoneyRecordGroup) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{1}
}
func (x *MoneyRecordGroup) GetRecordTime() string {
if x != nil {
return x.RecordTime
}
return ""
}
func (x *MoneyRecordGroup) GetExpense() string {
if x != nil {
return x.Expense
}
return ""
}
func (x *MoneyRecordGroup) GetIncome() string {
if x != nil {
return x.Income
}
return ""
}
func (x *MoneyRecordGroup) GetRecords() []*MoneyRecordItem {
if x != nil {
return x.Records
}
return nil
}
// 查询记账记录请求参数 // 查询记账记录请求参数
type QueryMoneyRecordsParams struct { type QueryMoneyRecordsParams struct {
state protoimpl.MessageState state protoimpl.MessageState
@@ -241,7 +145,7 @@ type QueryMoneyRecordsParams struct {
func (x *QueryMoneyRecordsParams) Reset() { func (x *QueryMoneyRecordsParams) Reset() {
*x = QueryMoneyRecordsParams{} *x = QueryMoneyRecordsParams{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_money_money_record_types_proto_msgTypes[2] mi := &file_money_money_record_types_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -254,7 +158,7 @@ func (x *QueryMoneyRecordsParams) String() string {
func (*QueryMoneyRecordsParams) ProtoMessage() {} func (*QueryMoneyRecordsParams) ProtoMessage() {}
func (x *QueryMoneyRecordsParams) ProtoReflect() protoreflect.Message { func (x *QueryMoneyRecordsParams) ProtoReflect() protoreflect.Message {
mi := &file_money_money_record_types_proto_msgTypes[2] mi := &file_money_money_record_types_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -267,7 +171,7 @@ func (x *QueryMoneyRecordsParams) ProtoReflect() protoreflect.Message {
// Deprecated: Use QueryMoneyRecordsParams.ProtoReflect.Descriptor instead. // Deprecated: Use QueryMoneyRecordsParams.ProtoReflect.Descriptor instead.
func (*QueryMoneyRecordsParams) Descriptor() ([]byte, []int) { func (*QueryMoneyRecordsParams) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{2} return file_money_money_record_types_proto_rawDescGZIP(), []int{1}
} }
func (x *QueryMoneyRecordsParams) GetRecordTime() string { func (x *QueryMoneyRecordsParams) GetRecordTime() string {
@@ -283,16 +187,13 @@ type QueryMoneyRecordsResult struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Records []*MoneyRecordGroup `protobuf:"bytes,1,rep,name=Records,proto3" form:"records" json:"records"` Records []*MoneyRecord `protobuf:"bytes,1,rep,name=Records,proto3" form:"records" json:"records"`
TotalIncome string `protobuf:"bytes,2,opt,name=TotalIncome,proto3" form:"total_income" json:"total_income"`
TotalExpense string `protobuf:"bytes,3,opt,name=TotalExpense,proto3" form:"total_expense" json:"total_expense"`
TotalBalance string `protobuf:"bytes,4,opt,name=TotalBalance,proto3" form:"total_balance" json:"total_balance"`
} }
func (x *QueryMoneyRecordsResult) Reset() { func (x *QueryMoneyRecordsResult) Reset() {
*x = QueryMoneyRecordsResult{} *x = QueryMoneyRecordsResult{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_money_money_record_types_proto_msgTypes[3] mi := &file_money_money_record_types_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -305,7 +206,7 @@ func (x *QueryMoneyRecordsResult) String() string {
func (*QueryMoneyRecordsResult) ProtoMessage() {} func (*QueryMoneyRecordsResult) ProtoMessage() {}
func (x *QueryMoneyRecordsResult) ProtoReflect() protoreflect.Message { func (x *QueryMoneyRecordsResult) ProtoReflect() protoreflect.Message {
mi := &file_money_money_record_types_proto_msgTypes[3] mi := &file_money_money_record_types_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -318,37 +219,16 @@ func (x *QueryMoneyRecordsResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use QueryMoneyRecordsResult.ProtoReflect.Descriptor instead. // Deprecated: Use QueryMoneyRecordsResult.ProtoReflect.Descriptor instead.
func (*QueryMoneyRecordsResult) Descriptor() ([]byte, []int) { func (*QueryMoneyRecordsResult) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{3} return file_money_money_record_types_proto_rawDescGZIP(), []int{2}
} }
func (x *QueryMoneyRecordsResult) GetRecords() []*MoneyRecordGroup { func (x *QueryMoneyRecordsResult) GetRecords() []*MoneyRecord {
if x != nil { if x != nil {
return x.Records return x.Records
} }
return nil return nil
} }
func (x *QueryMoneyRecordsResult) GetTotalIncome() string {
if x != nil {
return x.TotalIncome
}
return ""
}
func (x *QueryMoneyRecordsResult) GetTotalExpense() string {
if x != nil {
return x.TotalExpense
}
return ""
}
func (x *QueryMoneyRecordsResult) GetTotalBalance() string {
if x != nil {
return x.TotalBalance
}
return ""
}
// 新增记账记录参数 // 新增记账记录参数
type InsertMoneyRecordParams struct { type InsertMoneyRecordParams struct {
state protoimpl.MessageState state protoimpl.MessageState
@@ -364,7 +244,7 @@ type InsertMoneyRecordParams struct {
func (x *InsertMoneyRecordParams) Reset() { func (x *InsertMoneyRecordParams) Reset() {
*x = InsertMoneyRecordParams{} *x = InsertMoneyRecordParams{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_money_money_record_types_proto_msgTypes[4] mi := &file_money_money_record_types_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -377,7 +257,7 @@ func (x *InsertMoneyRecordParams) String() string {
func (*InsertMoneyRecordParams) ProtoMessage() {} func (*InsertMoneyRecordParams) ProtoMessage() {}
func (x *InsertMoneyRecordParams) ProtoReflect() protoreflect.Message { func (x *InsertMoneyRecordParams) ProtoReflect() protoreflect.Message {
mi := &file_money_money_record_types_proto_msgTypes[4] mi := &file_money_money_record_types_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -390,7 +270,7 @@ func (x *InsertMoneyRecordParams) ProtoReflect() protoreflect.Message {
// Deprecated: Use InsertMoneyRecordParams.ProtoReflect.Descriptor instead. // Deprecated: Use InsertMoneyRecordParams.ProtoReflect.Descriptor instead.
func (*InsertMoneyRecordParams) Descriptor() ([]byte, []int) { func (*InsertMoneyRecordParams) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{4} return file_money_money_record_types_proto_rawDescGZIP(), []int{3}
} }
func (x *InsertMoneyRecordParams) GetCategoryId() int64 { func (x *InsertMoneyRecordParams) GetCategoryId() int64 {
@@ -440,7 +320,7 @@ type InsertMoneyRecordResult struct {
func (x *InsertMoneyRecordResult) Reset() { func (x *InsertMoneyRecordResult) Reset() {
*x = InsertMoneyRecordResult{} *x = InsertMoneyRecordResult{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_money_money_record_types_proto_msgTypes[5] mi := &file_money_money_record_types_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -453,7 +333,7 @@ func (x *InsertMoneyRecordResult) String() string {
func (*InsertMoneyRecordResult) ProtoMessage() {} func (*InsertMoneyRecordResult) ProtoMessage() {}
func (x *InsertMoneyRecordResult) ProtoReflect() protoreflect.Message { func (x *InsertMoneyRecordResult) ProtoReflect() protoreflect.Message {
mi := &file_money_money_record_types_proto_msgTypes[5] mi := &file_money_money_record_types_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -466,7 +346,7 @@ func (x *InsertMoneyRecordResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use InsertMoneyRecordResult.ProtoReflect.Descriptor instead. // Deprecated: Use InsertMoneyRecordResult.ProtoReflect.Descriptor instead.
func (*InsertMoneyRecordResult) Descriptor() ([]byte, []int) { func (*InsertMoneyRecordResult) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{5} return file_money_money_record_types_proto_rawDescGZIP(), []int{4}
} }
func (x *InsertMoneyRecordResult) GetId() int64 { func (x *InsertMoneyRecordResult) GetId() int64 {
@@ -541,7 +421,7 @@ type UpdateMoneyRecordParams struct {
func (x *UpdateMoneyRecordParams) Reset() { func (x *UpdateMoneyRecordParams) Reset() {
*x = UpdateMoneyRecordParams{} *x = UpdateMoneyRecordParams{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_money_money_record_types_proto_msgTypes[6] mi := &file_money_money_record_types_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -554,7 +434,7 @@ func (x *UpdateMoneyRecordParams) String() string {
func (*UpdateMoneyRecordParams) ProtoMessage() {} func (*UpdateMoneyRecordParams) ProtoMessage() {}
func (x *UpdateMoneyRecordParams) ProtoReflect() protoreflect.Message { func (x *UpdateMoneyRecordParams) ProtoReflect() protoreflect.Message {
mi := &file_money_money_record_types_proto_msgTypes[6] mi := &file_money_money_record_types_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -567,7 +447,7 @@ func (x *UpdateMoneyRecordParams) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpdateMoneyRecordParams.ProtoReflect.Descriptor instead. // Deprecated: Use UpdateMoneyRecordParams.ProtoReflect.Descriptor instead.
func (*UpdateMoneyRecordParams) Descriptor() ([]byte, []int) { func (*UpdateMoneyRecordParams) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{6} return file_money_money_record_types_proto_rawDescGZIP(), []int{5}
} }
func (x *UpdateMoneyRecordParams) GetId() int64 { func (x *UpdateMoneyRecordParams) GetId() int64 {
@@ -614,7 +494,7 @@ type UpdateMoneyRecordResult struct {
func (x *UpdateMoneyRecordResult) Reset() { func (x *UpdateMoneyRecordResult) Reset() {
*x = UpdateMoneyRecordResult{} *x = UpdateMoneyRecordResult{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_money_money_record_types_proto_msgTypes[7] mi := &file_money_money_record_types_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -627,7 +507,7 @@ func (x *UpdateMoneyRecordResult) String() string {
func (*UpdateMoneyRecordResult) ProtoMessage() {} func (*UpdateMoneyRecordResult) ProtoMessage() {}
func (x *UpdateMoneyRecordResult) ProtoReflect() protoreflect.Message { func (x *UpdateMoneyRecordResult) ProtoReflect() protoreflect.Message {
mi := &file_money_money_record_types_proto_msgTypes[7] mi := &file_money_money_record_types_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -640,7 +520,7 @@ func (x *UpdateMoneyRecordResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpdateMoneyRecordResult.ProtoReflect.Descriptor instead. // Deprecated: Use UpdateMoneyRecordResult.ProtoReflect.Descriptor instead.
func (*UpdateMoneyRecordResult) Descriptor() ([]byte, []int) { func (*UpdateMoneyRecordResult) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{7} return file_money_money_record_types_proto_rawDescGZIP(), []int{6}
} }
// 删除记账记录 // 删除记账记录
@@ -655,7 +535,7 @@ type DeleteMoneyRecordParams struct {
func (x *DeleteMoneyRecordParams) Reset() { func (x *DeleteMoneyRecordParams) Reset() {
*x = DeleteMoneyRecordParams{} *x = DeleteMoneyRecordParams{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_money_money_record_types_proto_msgTypes[8] mi := &file_money_money_record_types_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -668,7 +548,7 @@ func (x *DeleteMoneyRecordParams) String() string {
func (*DeleteMoneyRecordParams) ProtoMessage() {} func (*DeleteMoneyRecordParams) ProtoMessage() {}
func (x *DeleteMoneyRecordParams) ProtoReflect() protoreflect.Message { func (x *DeleteMoneyRecordParams) ProtoReflect() protoreflect.Message {
mi := &file_money_money_record_types_proto_msgTypes[8] mi := &file_money_money_record_types_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -681,7 +561,7 @@ func (x *DeleteMoneyRecordParams) ProtoReflect() protoreflect.Message {
// Deprecated: Use DeleteMoneyRecordParams.ProtoReflect.Descriptor instead. // Deprecated: Use DeleteMoneyRecordParams.ProtoReflect.Descriptor instead.
func (*DeleteMoneyRecordParams) Descriptor() ([]byte, []int) { func (*DeleteMoneyRecordParams) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{8} return file_money_money_record_types_proto_rawDescGZIP(), []int{7}
} }
func (x *DeleteMoneyRecordParams) GetId() int64 { func (x *DeleteMoneyRecordParams) GetId() int64 {
@@ -700,7 +580,7 @@ type DeleteMoneyRecordResult struct {
func (x *DeleteMoneyRecordResult) Reset() { func (x *DeleteMoneyRecordResult) Reset() {
*x = DeleteMoneyRecordResult{} *x = DeleteMoneyRecordResult{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_money_money_record_types_proto_msgTypes[9] mi := &file_money_money_record_types_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -713,7 +593,7 @@ func (x *DeleteMoneyRecordResult) String() string {
func (*DeleteMoneyRecordResult) ProtoMessage() {} func (*DeleteMoneyRecordResult) ProtoMessage() {}
func (x *DeleteMoneyRecordResult) ProtoReflect() protoreflect.Message { func (x *DeleteMoneyRecordResult) ProtoReflect() protoreflect.Message {
mi := &file_money_money_record_types_proto_msgTypes[9] mi := &file_money_money_record_types_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -726,7 +606,7 @@ func (x *DeleteMoneyRecordResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use DeleteMoneyRecordResult.ProtoReflect.Descriptor instead. // Deprecated: Use DeleteMoneyRecordResult.ProtoReflect.Descriptor instead.
func (*DeleteMoneyRecordResult) Descriptor() ([]byte, []int) { func (*DeleteMoneyRecordResult) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{9} return file_money_money_record_types_proto_rawDescGZIP(), []int{8}
} }
var File_money_money_record_types_proto protoreflect.FileDescriptor var File_money_money_record_types_proto protoreflect.FileDescriptor
@@ -735,139 +615,105 @@ var file_money_money_record_types_proto_rawDesc = []byte{
0x0a, 0x1e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x72, 0x65, 0x0a, 0x1e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x72, 0x65,
0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x12, 0x05, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x1a, 0x09, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x12, 0x05, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x1a, 0x09, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0xa9, 0x04, 0x0a, 0x0f, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x74, 0x6f, 0x22, 0x80, 0x03, 0x0a, 0x0b, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06,
0x28, 0x03, 0x42, 0x06, 0xca, 0xbb, 0x18, 0x02, 0x69, 0x64, 0x52, 0x02, 0x49, 0x64, 0x12, 0x2f, 0xca, 0xbb, 0x18, 0x02, 0x69, 0x64, 0x52, 0x02, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0a, 0x43, 0x61,
0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0f,
0x28, 0x03, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x52,
0x5f, 0x69, 0x64, 0x52, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x06, 0x55,
0x23, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xca, 0xbb, 0x18,
0x0b, 0xca, 0xbb, 0x18, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x06, 0x55, 0x73, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64,
0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x12, 0x22, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0xbb, 0x18, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0xca, 0xbb, 0x18, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x41, 0x6d,
0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05,
0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0xbb, 0x18, 0x06, 0x72, 0x65, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0xbb, 0x18, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b,
0x6d, 0x61, 0x72, 0x6b, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x2f, 0x0a, 0x0a, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x2f, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f,
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb,
0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x52,
0x65, 0x52, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x43, 0x72, 0x65,
0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0f, 0xca,
0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0xbb, 0x18, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a,
0x6d, 0x65, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x55, 0x70,
0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0f,
0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0xca, 0xbb, 0x18, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52,
0x69, 0x6d, 0x65, 0x52, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x08, 0x55,
0x28, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0xca,
0x09, 0x42, 0x0c, 0xca, 0xbb, 0x18, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0xbb, 0x18, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x08, 0x55, 0x73, 0x65,
0x08, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4a, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f,
0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x11, 0xca, 0xbb, 0x18, 0x0d, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01,
0x70, 0x65, 0x52, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x12, 0x35, 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x63, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d,
0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, 0xca, 0xbb, 0x18, 0x0d, 0x63, 0x61, 0x74, 0x65, 0x65, 0x22, 0x54, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52,
0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x07,
0x6f, 0x72, 0x79, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
0x6f, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, 0xca, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72,
0xbb, 0x18, 0x0d, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x42, 0x0b, 0xca, 0xbb, 0x18, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x07,
0x52, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xcd, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0xa4, 0x02, 0x0a, 0x17, 0x49, 0x6e, 0x73, 0x65,
0x01, 0x0a, 0x10, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x72,
0x6f, 0x75, 0x70, 0x12, 0x2f, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x61, 0x6d, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x18, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x61, 0x74,
0x6f, 0x72, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0xda, 0xbb, 0x18, 0x05, 0x24, 0x21, 0x3d, 0x27,
0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x07, 0x45, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x27, 0x52, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x4d, 0x0a,
0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xca, 0xbb, 0x18, 0x07, 0x65, 0x78, 0x70, 0x65, 0x6e, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xca,
0x73, 0x65, 0x52, 0x07, 0x45, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x49, 0xbb, 0x18, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0xda, 0xbb, 0x18, 0x27, 0x24, 0x21, 0x3d,
0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0xbb, 0x18, 0x27, 0x27, 0x20, 0x26, 0x26, 0x20, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x28, 0x27, 0x5e, 0x5c,
0x06, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x52, 0x06, 0x49, 0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x12, 0x64, 0x2b, 0x28, 0x5c, 0x2e, 0x5c, 0x64, 0x7b, 0x31, 0x2c, 0x32, 0x7d, 0x29, 0x3f, 0x24, 0x27,
0x3d, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x2c, 0x20, 0x24, 0x29, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x06,
0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0xbb,
0x63, 0x6f, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0b, 0xca, 0xbb, 0x18, 0x07, 0x72, 0x65, 0x18, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b,
0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x07, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x4a, 0x12, 0x5c, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04,
0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xca, 0xbb, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x72, 0x64, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2f, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0xda, 0xbb, 0x18, 0x29, 0x24, 0x21, 0x3d, 0x27, 0x27, 0x20, 0x26,
0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0x26, 0x20, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x28, 0x27, 0x5e, 0x5c, 0x64, 0x7b, 0x34, 0x7d,
0xbb, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x24, 0x27, 0x2c, 0x20,
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x17, 0x51, 0x24, 0x29, 0x52, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xe2,
0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x02, 0x0a, 0x17, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3e, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x49, 0x64,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xca, 0xbb, 0x18, 0x02, 0x69, 0x64, 0x52, 0x02,
0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64,
0x42, 0x0b, 0xca, 0xbb, 0x18, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x07, 0x52, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x61, 0x74, 0x65,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x0b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0xca, 0xbb, 0x18, 0x79, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20,
0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x52, 0x0b, 0x54, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xca, 0xbb, 0x18, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64,
0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x54, 0x6f, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75,
0x74, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0xbb, 0x18, 0x06, 0x61, 0x6d,
0x42, 0x11, 0xca, 0xbb, 0x18, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x06,
0x6e, 0x73, 0x65, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0xbb,
0x65, 0x12, 0x35, 0x0a, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x18, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b,
0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, 0xca, 0xbb, 0x18, 0x0d, 0x74, 0x6f, 0x74, 0x12, 0x2f, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06,
0x61, 0x6c, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xa4, 0x02, 0x0a, 0x17, 0x49, 0x6e, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d,
0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18,
0x72, 0x61, 0x6d, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x18, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x61, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69,
0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0xda, 0xbb, 0x18, 0x05, 0x24, 0x21, 0x3d, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x27, 0x27, 0x52, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x4d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x75, 0x70, 0x64, 0x61,
0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54,
0xca, 0xbb, 0x18, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0xda, 0xbb, 0x18, 0x27, 0x24, 0x21, 0x69, 0x6d, 0x65, 0x22, 0xe3, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f,
0x3d, 0x27, 0x27, 0x20, 0x26, 0x26, 0x20, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x28, 0x27, 0x5e, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12,
0x5c, 0x64, 0x2b, 0x28, 0x5c, 0x2e, 0x5c, 0x64, 0x7b, 0x31, 0x2c, 0x32, 0x7d, 0x29, 0x3f, 0x24, 0x1e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0e, 0xca, 0xbb, 0x18,
0x27, 0x2c, 0x20, 0x24, 0x29, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x02, 0x69, 0x64, 0xda, 0xbb, 0x18, 0x04, 0x24, 0x21, 0x3d, 0x30, 0x52, 0x02, 0x49, 0x64, 0x12,
0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0x2f, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20,
0xbb, 0x18, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x01, 0x28, 0x03, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
0x6b, 0x12, 0x5c, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64,
0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xca, 0xbb, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x12, 0x22, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0xda, 0xbb, 0x18, 0x29, 0x24, 0x21, 0x3d, 0x27, 0x27, 0x20, 0x42, 0x0a, 0xca, 0xbb, 0x18, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x41, 0x6d,
0x26, 0x26, 0x20, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x28, 0x27, 0x5e, 0x5c, 0x64, 0x7b, 0x34, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04,
0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x24, 0x27, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0xbb, 0x18, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b,
0x20, 0x24, 0x29, 0x52, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x2f, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f,
0xe2, 0x02, 0x0a, 0x17, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x49, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x52,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xca, 0xbb, 0x18, 0x02, 0x69, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x55, 0x70, 0x64,
0x02, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x61, 0x74, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x39, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f,
0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12,
0x72, 0x79, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x1e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0e, 0xca, 0xbb, 0x18,
0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xca, 0xbb, 0x18, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x02, 0x69, 0x64, 0xda, 0xbb, 0x18, 0x04, 0x24, 0x21, 0x3d, 0x30, 0x52, 0x02, 0x49, 0x64, 0x22,
0x64, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65,
0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0xbb, 0x18, 0x06, 0x61, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x18, 0x5a, 0x16, 0x61, 0x6c,
0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x6c, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x6d,
0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0x6f, 0x6e, 0x65, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0xbb, 0x18, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72,
0x6b, 0x12, 0x2f, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18,
0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72,
0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69,
0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x72, 0x65, 0x61,
0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54,
0x69, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x54, 0x69, 0x6d, 0x65, 0x22, 0xe3, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d,
0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x12, 0x1e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0e, 0xca, 0xbb,
0x18, 0x02, 0x69, 0x64, 0xda, 0xbb, 0x18, 0x04, 0x24, 0x21, 0x3d, 0x30, 0x52, 0x02, 0x49, 0x64,
0x12, 0x2f, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x03, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f,
0x72, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49,
0x64, 0x12, 0x22, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x42, 0x0a, 0xca, 0xbb, 0x18, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x41,
0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0xbb, 0x18, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72,
0x6b, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x2f, 0x0a, 0x0a, 0x52, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca,
0xbb, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0a,
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x39, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d,
0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x12, 0x1e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0e, 0xca, 0xbb,
0x18, 0x02, 0x69, 0x64, 0xda, 0xbb, 0x18, 0x04, 0x24, 0x21, 0x3d, 0x30, 0x52, 0x02, 0x49, 0x64,
0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x18, 0x5a, 0x16, 0x61,
0x6c, 0x6c, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f,
0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@@ -882,27 +728,25 @@ func file_money_money_record_types_proto_rawDescGZIP() []byte {
return file_money_money_record_types_proto_rawDescData return file_money_money_record_types_proto_rawDescData
} }
var file_money_money_record_types_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_money_money_record_types_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_money_money_record_types_proto_goTypes = []interface{}{ var file_money_money_record_types_proto_goTypes = []interface{}{
(*MoneyRecordItem)(nil), // 0: money.MoneyRecordItem (*MoneyRecord)(nil), // 0: money.MoneyRecord
(*MoneyRecordGroup)(nil), // 1: money.MoneyRecordGroup (*QueryMoneyRecordsParams)(nil), // 1: money.QueryMoneyRecordsParams
(*QueryMoneyRecordsParams)(nil), // 2: money.QueryMoneyRecordsParams (*QueryMoneyRecordsResult)(nil), // 2: money.QueryMoneyRecordsResult
(*QueryMoneyRecordsResult)(nil), // 3: money.QueryMoneyRecordsResult (*InsertMoneyRecordParams)(nil), // 3: money.InsertMoneyRecordParams
(*InsertMoneyRecordParams)(nil), // 4: money.InsertMoneyRecordParams (*InsertMoneyRecordResult)(nil), // 4: money.InsertMoneyRecordResult
(*InsertMoneyRecordResult)(nil), // 5: money.InsertMoneyRecordResult (*UpdateMoneyRecordParams)(nil), // 5: money.UpdateMoneyRecordParams
(*UpdateMoneyRecordParams)(nil), // 6: money.UpdateMoneyRecordParams (*UpdateMoneyRecordResult)(nil), // 6: money.UpdateMoneyRecordResult
(*UpdateMoneyRecordResult)(nil), // 7: money.UpdateMoneyRecordResult (*DeleteMoneyRecordParams)(nil), // 7: money.DeleteMoneyRecordParams
(*DeleteMoneyRecordParams)(nil), // 8: money.DeleteMoneyRecordParams (*DeleteMoneyRecordResult)(nil), // 8: money.DeleteMoneyRecordResult
(*DeleteMoneyRecordResult)(nil), // 9: money.DeleteMoneyRecordResult
} }
var file_money_money_record_types_proto_depIdxs = []int32{ var file_money_money_record_types_proto_depIdxs = []int32{
0, // 0: money.MoneyRecordGroup.Records:type_name -> money.MoneyRecordItem 0, // 0: money.QueryMoneyRecordsResult.Records:type_name -> money.MoneyRecord
1, // 1: money.QueryMoneyRecordsResult.Records:type_name -> money.MoneyRecordGroup 1, // [1:1] is the sub-list for method output_type
2, // [2:2] is the sub-list for method output_type 1, // [1:1] is the sub-list for method input_type
2, // [2:2] is the sub-list for method input_type 1, // [1:1] is the sub-list for extension type_name
2, // [2:2] is the sub-list for extension type_name 1, // [1:1] is the sub-list for extension extendee
2, // [2:2] is the sub-list for extension extendee 0, // [0:1] is the sub-list for field type_name
0, // [0:2] is the sub-list for field type_name
} }
func init() { file_money_money_record_types_proto_init() } func init() { file_money_money_record_types_proto_init() }
@@ -912,7 +756,7 @@ func file_money_money_record_types_proto_init() {
} }
if !protoimpl.UnsafeEnabled { if !protoimpl.UnsafeEnabled {
file_money_money_record_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { file_money_money_record_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MoneyRecordItem); i { switch v := v.(*MoneyRecord); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@@ -924,18 +768,6 @@ func file_money_money_record_types_proto_init() {
} }
} }
file_money_money_record_types_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { file_money_money_record_types_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MoneyRecordGroup); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_money_money_record_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryMoneyRecordsParams); i { switch v := v.(*QueryMoneyRecordsParams); i {
case 0: case 0:
return &v.state return &v.state
@@ -947,7 +779,7 @@ func file_money_money_record_types_proto_init() {
return nil return nil
} }
} }
file_money_money_record_types_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { file_money_money_record_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryMoneyRecordsResult); i { switch v := v.(*QueryMoneyRecordsResult); i {
case 0: case 0:
return &v.state return &v.state
@@ -959,7 +791,7 @@ func file_money_money_record_types_proto_init() {
return nil return nil
} }
} }
file_money_money_record_types_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { file_money_money_record_types_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*InsertMoneyRecordParams); i { switch v := v.(*InsertMoneyRecordParams); i {
case 0: case 0:
return &v.state return &v.state
@@ -971,7 +803,7 @@ func file_money_money_record_types_proto_init() {
return nil return nil
} }
} }
file_money_money_record_types_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { file_money_money_record_types_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*InsertMoneyRecordResult); i { switch v := v.(*InsertMoneyRecordResult); i {
case 0: case 0:
return &v.state return &v.state
@@ -983,7 +815,7 @@ func file_money_money_record_types_proto_init() {
return nil return nil
} }
} }
file_money_money_record_types_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { file_money_money_record_types_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateMoneyRecordParams); i { switch v := v.(*UpdateMoneyRecordParams); i {
case 0: case 0:
return &v.state return &v.state
@@ -995,7 +827,7 @@ func file_money_money_record_types_proto_init() {
return nil return nil
} }
} }
file_money_money_record_types_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { file_money_money_record_types_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateMoneyRecordResult); i { switch v := v.(*UpdateMoneyRecordResult); i {
case 0: case 0:
return &v.state return &v.state
@@ -1007,7 +839,7 @@ func file_money_money_record_types_proto_init() {
return nil return nil
} }
} }
file_money_money_record_types_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { file_money_money_record_types_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteMoneyRecordParams); i { switch v := v.(*DeleteMoneyRecordParams); i {
case 0: case 0:
return &v.state return &v.state
@@ -1019,7 +851,7 @@ func file_money_money_record_types_proto_init() {
return nil return nil
} }
} }
file_money_money_record_types_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { file_money_money_record_types_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteMoneyRecordResult); i { switch v := v.(*DeleteMoneyRecordResult); i {
case 0: case 0:
return &v.state return &v.state
@@ -1038,7 +870,7 @@ func file_money_money_record_types_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_money_money_record_types_proto_rawDesc, RawDescriptor: file_money_money_record_types_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 10, NumMessages: 9,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },
@@ -70,3 +70,8 @@ func _listMw() []app.HandlerFunc {
// your code... // your code...
return nil return nil
} }
func _updatemoneycategoryMw() []app.HandlerFunc {
// your code...
return nil
}
@@ -23,6 +23,7 @@ func Register(r *server.Hertz) {
_category := _money.Group("/category", _categoryMw()...) _category := _money.Group("/category", _categoryMw()...)
_category.POST("/create", append(_createmoneycategoryMw(), money.CreateMoneyCategory)...) _category.POST("/create", append(_createmoneycategoryMw(), money.CreateMoneyCategory)...)
_category.POST("/delete", append(_deleteusermoneycategoryMw(), money.DeleteUserMoneyCategory)...) _category.POST("/delete", append(_deleteusermoneycategoryMw(), money.DeleteUserMoneyCategory)...)
_category.POST("/update", append(_updatemoneycategoryMw(), money.UpdateMoneyCategory)...)
_category.POST("/updateSort", append(_updatemoneycategorysortMw(), money.UpdateMoneyCategorySort)...) _category.POST("/updateSort", append(_updatemoneycategorysortMw(), money.UpdateMoneyCategorySort)...)
{ {
_record := _money.Group("/record", _recordMw()...) _record := _money.Group("/record", _recordMw()...)
@@ -1,11 +1,6 @@
-- name: FindUserMoneyRecords :many -- name: FindUserMoneyRecords :many
SELECT SELECT mr.*
mr.*,
muc.name AS category_name,
muc.icon AS category_icon,
muc.type AS category_type
FROM money_record mr FROM money_record mr
LEFT JOIN money_user_category muc ON mr.category_id = muc.id
WHERE mr.user_id = $1 WHERE mr.user_id = $1
AND mr.record_time BETWEEN $2 AND $3 AND mr.record_time BETWEEN $2 AND $3
ORDER BY mr.record_time DESC, mr.create_time DESC; ORDER BY mr.record_time DESC, mr.create_time DESC;
@@ -13,17 +8,17 @@ ORDER BY mr.record_time DESC, mr.create_time DESC;
-- name: FindMoneyRecordsBySpace :many -- name: FindMoneyRecordsBySpace :many
SELECT SELECT
mr.*, mr.*,
u.username AS username, u.username AS username
muc.name AS category_name,
muc.icon AS category_icon,
muc.type AS category_type
FROM money_record mr FROM money_record mr
LEFT JOIN money_user_category muc ON mr.category_id = muc.id INNER JOIN space_user su
INNER JOIN space_user su ON mr.user_id = su.user_id AND su.space_id = $1 ON mr.user_id = su.user_id
LEFT JOIN user_info u ON mr.user_id = u.id AND su.space_id = $1
LEFT JOIN user_info u
ON mr.user_id = u.id
WHERE mr.record_time BETWEEN $2 AND $3 WHERE mr.record_time BETWEEN $2 AND $3
ORDER BY mr.record_time DESC, mr.create_time DESC; ORDER BY mr.record_time DESC, mr.create_time DESC;
-- name: InsertMoneyRecord :one -- name: InsertMoneyRecord :one
INSERT INTO money_record ( INSERT INTO money_record (
id, id,
@@ -21,10 +21,10 @@ DELETE FROM money_user_category
WHERE user_id = $1; WHERE user_id = $1;
-- name: InsertMoneyUserCategory :exec -- name: InsertMoneyUserCategory :exec
INSERT INTO money_user_category (id, user_id, name, icon, type, sort_number) INSERT INTO money_user_category (id, user_id, name, icon, type, sort_number,create_time,update_time)
VALUES ($1, $2, $3, $4, $5, $6); VALUES ($1, $2, $3, $4, $5, $6,NOW(),NOW());
-- name: UpdateMoneyCategory :exec -- name: UpdateMoneyCategory :exec
UPDATE money_user_category UPDATE money_user_category
SET icon = $2,name = $3 SET icon = $2,name = $3,update_time = NOW()
WHERE id = $1; WHERE id = $1;
+1 -1
View File
@@ -14,7 +14,7 @@ type MoneyRecord struct {
UserID int64 UserID int64
Amount pgtype.Numeric Amount pgtype.Numeric
Remark pgtype.Text Remark pgtype.Text
RecordTime pgtype.Timestamp RecordTime pgtype.Date
CreateTime pgtype.Timestamp CreateTime pgtype.Timestamp
UpdateTime pgtype.Timestamp UpdateTime pgtype.Timestamp
} }
@@ -23,37 +23,33 @@ func (q *Queries) DeleteMoneyRecord(ctx context.Context, id int64) error {
const findMoneyRecordsBySpace = `-- name: FindMoneyRecordsBySpace :many const findMoneyRecordsBySpace = `-- name: FindMoneyRecordsBySpace :many
SELECT SELECT
mr.id, mr.category_id, mr.user_id, mr.amount, mr.remark, mr.record_time, mr.create_time, mr.update_time, mr.id, mr.category_id, mr.user_id, mr.amount, mr.remark, mr.record_time, mr.create_time, mr.update_time,
u.username AS username, u.username AS username
muc.name AS category_name,
muc.icon AS category_icon,
muc.type AS category_type
FROM money_record mr FROM money_record mr
LEFT JOIN money_user_category muc ON mr.category_id = muc.id INNER JOIN space_user su
INNER JOIN space_user su ON mr.user_id = su.user_id AND su.space_id = $1 ON mr.user_id = su.user_id
LEFT JOIN user_info u ON mr.user_id = u.id AND su.space_id = $1
LEFT JOIN user_info u
ON mr.user_id = u.id
WHERE mr.record_time BETWEEN $2 AND $3 WHERE mr.record_time BETWEEN $2 AND $3
ORDER BY mr.record_time DESC, mr.create_time DESC ORDER BY mr.record_time DESC, mr.create_time DESC
` `
type FindMoneyRecordsBySpaceParams struct { type FindMoneyRecordsBySpaceParams struct {
SpaceID int64 SpaceID int64
RecordTime pgtype.Timestamp RecordTime pgtype.Date
RecordTime_2 pgtype.Timestamp RecordTime_2 pgtype.Date
} }
type FindMoneyRecordsBySpaceRow struct { type FindMoneyRecordsBySpaceRow struct {
ID int64 ID int64
CategoryID int64 CategoryID int64
UserID int64 UserID int64
Amount pgtype.Numeric Amount pgtype.Numeric
Remark pgtype.Text Remark pgtype.Text
RecordTime pgtype.Timestamp RecordTime pgtype.Date
CreateTime pgtype.Timestamp CreateTime pgtype.Timestamp
UpdateTime pgtype.Timestamp UpdateTime pgtype.Timestamp
Username pgtype.Text Username pgtype.Text
CategoryName pgtype.Text
CategoryIcon pgtype.Text
CategoryType pgtype.Int4
} }
func (q *Queries) FindMoneyRecordsBySpace(ctx context.Context, arg FindMoneyRecordsBySpaceParams) ([]FindMoneyRecordsBySpaceRow, error) { func (q *Queries) FindMoneyRecordsBySpace(ctx context.Context, arg FindMoneyRecordsBySpaceParams) ([]FindMoneyRecordsBySpaceRow, error) {
@@ -75,9 +71,6 @@ func (q *Queries) FindMoneyRecordsBySpace(ctx context.Context, arg FindMoneyReco
&i.CreateTime, &i.CreateTime,
&i.UpdateTime, &i.UpdateTime,
&i.Username, &i.Username,
&i.CategoryName,
&i.CategoryIcon,
&i.CategoryType,
); err != nil { ); err != nil {
return nil, err return nil, err
} }
@@ -90,13 +83,8 @@ func (q *Queries) FindMoneyRecordsBySpace(ctx context.Context, arg FindMoneyReco
} }
const findUserMoneyRecords = `-- name: FindUserMoneyRecords :many const findUserMoneyRecords = `-- name: FindUserMoneyRecords :many
SELECT SELECT mr.id, mr.category_id, mr.user_id, mr.amount, mr.remark, mr.record_time, mr.create_time, mr.update_time
mr.id, mr.category_id, mr.user_id, mr.amount, mr.remark, mr.record_time, mr.create_time, mr.update_time,
muc.name AS category_name,
muc.icon AS category_icon,
muc.type AS category_type
FROM money_record mr FROM money_record mr
LEFT JOIN money_user_category muc ON mr.category_id = muc.id
WHERE mr.user_id = $1 WHERE mr.user_id = $1
AND mr.record_time BETWEEN $2 AND $3 AND mr.record_time BETWEEN $2 AND $3
ORDER BY mr.record_time DESC, mr.create_time DESC ORDER BY mr.record_time DESC, mr.create_time DESC
@@ -104,33 +92,19 @@ ORDER BY mr.record_time DESC, mr.create_time DESC
type FindUserMoneyRecordsParams struct { type FindUserMoneyRecordsParams struct {
UserID int64 UserID int64
RecordTime pgtype.Timestamp RecordTime pgtype.Date
RecordTime_2 pgtype.Timestamp RecordTime_2 pgtype.Date
} }
type FindUserMoneyRecordsRow struct { func (q *Queries) FindUserMoneyRecords(ctx context.Context, arg FindUserMoneyRecordsParams) ([]MoneyRecord, error) {
ID int64
CategoryID int64
UserID int64
Amount pgtype.Numeric
Remark pgtype.Text
RecordTime pgtype.Timestamp
CreateTime pgtype.Timestamp
UpdateTime pgtype.Timestamp
CategoryName pgtype.Text
CategoryIcon pgtype.Text
CategoryType pgtype.Int4
}
func (q *Queries) FindUserMoneyRecords(ctx context.Context, arg FindUserMoneyRecordsParams) ([]FindUserMoneyRecordsRow, error) {
rows, err := q.db.Query(ctx, findUserMoneyRecords, arg.UserID, arg.RecordTime, arg.RecordTime_2) rows, err := q.db.Query(ctx, findUserMoneyRecords, arg.UserID, arg.RecordTime, arg.RecordTime_2)
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer rows.Close() defer rows.Close()
var items []FindUserMoneyRecordsRow var items []MoneyRecord
for rows.Next() { for rows.Next() {
var i FindUserMoneyRecordsRow var i MoneyRecord
if err := rows.Scan( if err := rows.Scan(
&i.ID, &i.ID,
&i.CategoryID, &i.CategoryID,
@@ -140,9 +114,6 @@ func (q *Queries) FindUserMoneyRecords(ctx context.Context, arg FindUserMoneyRec
&i.RecordTime, &i.RecordTime,
&i.CreateTime, &i.CreateTime,
&i.UpdateTime, &i.UpdateTime,
&i.CategoryName,
&i.CategoryIcon,
&i.CategoryType,
); err != nil { ); err != nil {
return nil, err return nil, err
} }
@@ -196,7 +167,7 @@ type InsertMoneyRecordParams struct {
UserID int64 UserID int64
Amount pgtype.Numeric Amount pgtype.Numeric
Remark pgtype.Text Remark pgtype.Text
RecordTime pgtype.Timestamp RecordTime pgtype.Date
} }
func (q *Queries) InsertMoneyRecord(ctx context.Context, arg InsertMoneyRecordParams) (MoneyRecord, error) { func (q *Queries) InsertMoneyRecord(ctx context.Context, arg InsertMoneyRecordParams) (MoneyRecord, error) {
@@ -239,7 +210,7 @@ type UpdateMoneyRecordParams struct {
CategoryID int64 CategoryID int64
Amount pgtype.Numeric Amount pgtype.Numeric
Remark pgtype.Text Remark pgtype.Text
RecordTime pgtype.Timestamp RecordTime pgtype.Date
} }
func (q *Queries) UpdateMoneyRecord(ctx context.Context, arg UpdateMoneyRecordParams) error { func (q *Queries) UpdateMoneyRecord(ctx context.Context, arg UpdateMoneyRecordParams) error {
@@ -73,8 +73,8 @@ func (q *Queries) FindUserMoneyCategoriesByUserID(ctx context.Context, userID in
} }
const insertMoneyUserCategory = `-- name: InsertMoneyUserCategory :exec const insertMoneyUserCategory = `-- name: InsertMoneyUserCategory :exec
INSERT INTO money_user_category (id, user_id, name, icon, type, sort_number) INSERT INTO money_user_category (id, user_id, name, icon, type, sort_number,create_time,update_time)
VALUES ($1, $2, $3, $4, $5, $6) VALUES ($1, $2, $3, $4, $5, $6,NOW(),NOW())
` `
type InsertMoneyUserCategoryParams struct { type InsertMoneyUserCategoryParams struct {
@@ -97,3 +97,20 @@ func (q *Queries) InsertMoneyUserCategory(ctx context.Context, arg InsertMoneyUs
) )
return err return err
} }
const updateMoneyCategory = `-- name: UpdateMoneyCategory :exec
UPDATE money_user_category
SET icon = $2,name = $3,update_time = NOW()
WHERE id = $1
`
type UpdateMoneyCategoryParams struct {
ID int64
Icon string
Name string
}
func (q *Queries) UpdateMoneyCategory(ctx context.Context, arg UpdateMoneyCategoryParams) error {
_, err := q.db.Exec(ctx, updateMoneyCategory, arg.ID, arg.Icon, arg.Name)
return err
}
+3 -3
View File
@@ -18,9 +18,9 @@ CREATE TABLE money_record(
user_id BIGINT NOT NULL, user_id BIGINT NOT NULL,
amount NUMERIC(12,2) NOT NULL, amount NUMERIC(12,2) NOT NULL,
remark VARCHAR(255) DEFAULT '', remark VARCHAR(255) DEFAULT '',
record_time timestamp NOT NULL, record_time DATE NOT NULL,
create_time timestamp DEFAULT CURRENT_TIMESTAMP, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time timestamp DEFAULT CURRENT_TIMESTAMP update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
); );
CREATE TABLE money_sys_category( CREATE TABLE money_sys_category(
@@ -7,6 +7,7 @@ option go_package = "money";
import "api.proto"; import "api.proto";
import "money/money_category_types.proto"; import "money/money_category_types.proto";
import "money/money_record_types.proto"; import "money/money_record_types.proto";
import "google/protobuf/empty.proto";
service MoneyCategoryService { service MoneyCategoryService {
rpc List(ListMoneyCategoryReq) returns (ListMoneyCategoryResp){ rpc List(ListMoneyCategoryReq) returns (ListMoneyCategoryResp){
@@ -21,6 +22,9 @@ service MoneyCategoryService {
rpc CreateMoneyCategory(CreateMoneyCategoryReq) returns (CreateMoneyCategoryResp){ rpc CreateMoneyCategory(CreateMoneyCategoryReq) returns (CreateMoneyCategoryResp){
option (api.post) = '/money/category/create'; option (api.post) = '/money/category/create';
}; };
rpc UpdateMoneyCategory(UpdateMoneyCategoryReq) returns (UpdateMoneyCategoryResp){
option (api.post) = '/money/category/update';
};
} }
service MoneyRecordService { service MoneyRecordService {
@@ -60,3 +60,19 @@ message CreateMoneyCategoryReq {
message CreateMoneyCategoryResp { message CreateMoneyCategoryResp {
int64 Id = 1 [(api.body)="id"]; int64 Id = 1 [(api.body)="id"];
} }
message UpdateMoneyCategoryReq {
int64 Id = 1[
(api.body)="id"
];;
string Name = 2 [
(api.body)="name",
(api.vd) = "$ != ''"
];;
string Icon = 3 [
(api.body)="icon",
(api.vd) = "$ != ''"
];;
}
message UpdateMoneyCategoryResp {}
@@ -7,30 +7,18 @@ import "api.proto";
// 单条记账记录 // 单条记账记录
message MoneyRecordItem { message MoneyRecord {
int64 Id = 1 [(api.body)="id"]; int64 Id = 1 [(api.body)="id"];
int64 CategoryId = 2 [(api.body)="category_id"]; int64 CategoryId = 2 [(api.body)="category_id"];
int64 UserId = 3 [(api.body)="user_id"]; int64 UserId = 3 [(api.body)="user_id"];
string Amount = 4 [(api.body)="amount"]; string Amount = 4 [(api.body)="amount"];
string Remark = 5 [(api.body)="remark"]; string Remark = 5 [(api.body)="remark"];
string RecordTime = 6 [(api.body)="record_time"]; string RecordTime = 6 [(api.body)="record_time"];
string CreateTime = 7 [(api.body)="create_time"]; int64 CreateTime = 7 [(api.body)="create_time"];
string UpdateTime = 8 [(api.body)="update_time"]; int64 UpdateTime = 8 [(api.body)="update_time"];
string Username = 9 [(api.body)="username"]; string Username = 9 [(api.body)="username"];
int32 CategoryType = 10 [(api.body)="category_type"];
string CategoryIcon = 11 [(api.body)="category_icon"];
string CategoryName = 12 [(api.body)="category_name"];
} }
// 同一天的记账记录分组
message MoneyRecordGroup {
string RecordTime = 1 [(api.body)="record_time"];
string Expense = 2 [(api.body)="expense"];
string Income = 3 [(api.body)="income"];
repeated MoneyRecordItem Records = 4 [(api.body)="records"];
}
// 查询记账记录请求参数 // 查询记账记录请求参数
message QueryMoneyRecordsParams { message QueryMoneyRecordsParams {
@@ -39,11 +27,7 @@ message QueryMoneyRecordsParams {
// 查询记账记录结果 // 查询记账记录结果
message QueryMoneyRecordsResult { message QueryMoneyRecordsResult {
repeated MoneyRecordGroup Records = 1 [(api.body)="records"]; repeated MoneyRecord Records = 1 [(api.body)="records"];
string TotalIncome = 2 [(api.body)="total_income"];
string TotalExpense = 3 [(api.body)="total_expense"];
string TotalBalance = 4 [(api.body)="total_balance"];
} }
// 新增记账记录参数 // 新增记账记录参数
+11 -2
View File
@@ -1,10 +1,11 @@
package pgtypex package pgtypex
import ( import (
"github.com/jackc/pgx/v5/pgtype"
"github.com/shopspring/decimal"
"strings" "strings"
"time" "time"
"github.com/jackc/pgx/v5/pgtype"
"github.com/shopspring/decimal"
) )
func NumericToString(n pgtype.Numeric) string { func NumericToString(n pgtype.Numeric) string {
@@ -123,3 +124,11 @@ func StringToDate(s string) pgtype.Date {
Valid: true, Valid: true,
} }
} }
func TimestampToMillis(ts pgtype.Timestamp) int64 {
return ts.Time.UnixMilli()
}
func DateToString(s pgtype.Date) string {
return s.Time.String()
}
@@ -1,5 +1,5 @@
import { useRouter } from 'expo-router' import { useFocusEffect, useRouter } from 'expo-router'
import React, { useEffect, useState } from 'react' import React, { useCallback, useEffect, useState } from 'react'
import { Image, Text, TouchableOpacity, View } from 'react-native' import { Image, Text, TouchableOpacity, View } from 'react-native'
import { Drawer } from 'react-native-drawer-layout' import { Drawer } from 'react-native-drawer-layout'
import { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context' import { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context'
@@ -52,6 +52,17 @@ export default function Money() {
getMoneyRecords() getMoneyRecords()
}, [appStore.ready, searchParams]) }, [appStore.ready, searchParams])
useFocusEffect(
useCallback(() => {
// 页面显示 / 返回时
console.log('===shohw===')
return () => {
// 页面离开(可选)
}
}, []),
)
return ( return (
<View <View
className="flex-1" className="flex-1"
@@ -1,3 +1,4 @@
import type { MoneyCategoryItem } from '@/types/money/category'
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import { Pressable, Text, View } from 'react-native' import { Pressable, Text, View } from 'react-native'
import { AButton, AInput } from '@/components/common/ao' import { AButton, AInput } from '@/components/common/ao'
@@ -23,7 +24,7 @@ interface EditCategoryProps {
open: boolean open: boolean
onClose?: () => void onClose?: () => void
type: MoneyCategoryEnum type: MoneyCategoryEnum
category: MoneyCategoryItem | null
onConfirm?: (form: EditCategoryForm) => Promise<void> onConfirm?: (form: EditCategoryForm) => Promise<void>
} }
@@ -32,6 +33,7 @@ export default function CreateCategory({
onClose, onClose,
type, type,
onConfirm, onConfirm,
category,
}: EditCategoryProps) { }: EditCategoryProps) {
const moneyCategoryStore = useMoneyCategoryStore() const moneyCategoryStore = useMoneyCategoryStore()
@@ -58,6 +60,12 @@ export default function CreateCategory({
} }
}, [form.name, form.icon]) }, [form.name, form.icon])
useEffect(() => {
if (category !== null) {
setForm(category)
}
}, [category])
function handleClose() { function handleClose() {
setIsOpen(false) setIsOpen(false)
onClose && onClose() onClose && onClose()
@@ -116,6 +124,7 @@ export default function CreateCategory({
</View> </View>
<AInput <AInput
value={form.name}
placeholder="请输入名称(不超过5个字符)" placeholder="请输入名称(不超过5个字符)"
onChangeText={(text) => { onChangeText={(text) => {
setForm((val) => { setForm((val) => {
@@ -25,7 +25,9 @@ export default function MoneyCategorySetting() {
const [draggingDeleteZone, setDraggingDeleteZone] = useState<boolean>(false) const [draggingDeleteZone, setDraggingDeleteZone] = useState<boolean>(false)
const [deleteTimer, setDeleteTimer] = useState<number | null>(null) const [deleteTimer, setDeleteTimer] = useState<number | null>(null)
const [openCreateCategory, setOpenCreateCategory] = useState<boolean>(false) const [showEditCategory, setshowEditCategory] = useState<boolean>(false)
const [selectedCategory, setSelectedCategory] = useState<MoneyCategoryItem | null>(null)
useEffect(() => { useEffect(() => {
setCategories(selectedTab === MoneyCategoryEnum.Expense ? moneyCategoryStore.getExpenseCategories() : moneyCategoryStore.getIncomeCategories()) setCategories(selectedTab === MoneyCategoryEnum.Expense ? moneyCategoryStore.getExpenseCategories() : moneyCategoryStore.getIncomeCategories())
@@ -35,7 +37,8 @@ export default function MoneyCategorySetting() {
({ item }) => ( ({ item }) => (
<Pressable <Pressable
onPress={() => { onPress={() => {
console.log('点击进入编辑') setSelectedCategory(item)
setshowEditCategory(true)
}} }}
className="flex flex-col items-center justify-center" className="flex flex-col items-center justify-center"
> >
@@ -64,33 +67,49 @@ export default function MoneyCategorySetting() {
) )
async function handleConfirmEdit(form: EditCategoryForm) { async function handleConfirmEdit(form: EditCategoryForm) {
const isDuplicate = moneyCategoryStore.isDuplicateCategory(form.name, selectedTab) const isDuplicate = moneyCategoryStore.isDuplicateCategory(
form.name,
selectedTab,
form.id ?? null,
)
if (isDuplicate) { if (isDuplicate) {
toast.show({ toast.show({
type: 'warning', type: 'warning',
title: '类别不能重复', title: '类别不能重复',
}) })
return return
} }
try { try {
await moneyCategoryStore.createCategory({ if (form.id != null) {
id: 0, await moneyCategoryStore.updateCategory({
name: form.name, id: form.id,
icon: form.icon, name: form.name,
sort_number: 0, icon: form.icon,
type: selectedTab, type: selectedTab,
}) sort_number: 0,
})
}
else {
await moneyCategoryStore.createCategory({
id: 0,
name: form.name,
icon: form.icon,
sort_number: 0,
type: selectedTab,
})
}
setOpenCreateCategory(false) setshowEditCategory(false)
} }
catch (err) { catch (err) {
const message const message
= err instanceof Error = err instanceof Error
? err.message ? err.message
: '新增失败,请稍后再试' : form.id != null
? '更新失败,请稍后再试'
: '新增失败,请稍后再试'
toast.show({ toast.show({
type: 'error', type: 'error',
@@ -133,7 +152,7 @@ export default function MoneyCategorySetting() {
clickable: false, clickable: false,
}} }}
onPress={(() => onPress={(() =>
setOpenCreateCategory(true) setshowEditCategory(true)
)} )}
> >
新增 新增
@@ -228,8 +247,12 @@ export default function MoneyCategorySetting() {
<EditCategory <EditCategory
type={selectedTab} type={selectedTab}
open={openCreateCategory} open={showEditCategory}
onClose={() => setOpenCreateCategory(false)} onClose={() => {
setshowEditCategory(false)
setSelectedCategory(null)
}}
category={selectedCategory}
onConfirm={handleConfirmEdit} onConfirm={handleConfirmEdit}
/> />
</View> </View>
@@ -1,4 +1,4 @@
import type { CreateMoneyCategoryParams, CreateMoneyCategoryResult, DeleteMoneyCategoryParams, QueryMoneyCategoryResult, UpdateMoneyCategorySortParams } from '@/types/money/category' import type { CreateMoneyCategoryParams, CreateMoneyCategoryResult, DeleteMoneyCategoryParams, QueryMoneyCategoryResult, UpdateMoneyCategoryParams, UpdateMoneyCategoryResult, UpdateMoneyCategorySortParams } from '@/types/money/category'
import alovaInstance from '../../index' import alovaInstance from '../../index'
const API_PREFIX = '/money/category' const API_PREFIX = '/money/category'
@@ -18,3 +18,7 @@ export function updateMoneyCategorySortApi(params: UpdateMoneyCategorySortParams
export function createMoneyCategoryApi(params: CreateMoneyCategoryParams) { export function createMoneyCategoryApi(params: CreateMoneyCategoryParams) {
return alovaInstance.Post<ResponseData<CreateMoneyCategoryResult>>(`${API_PREFIX}/create`, params) return alovaInstance.Post<ResponseData<CreateMoneyCategoryResult>>(`${API_PREFIX}/create`, params)
} }
export function updateMoneyCategoryApi(params: UpdateMoneyCategoryParams) {
return alovaInstance.Post<ResponseData<UpdateMoneyCategoryResult>>(`${API_PREFIX}/update`, params)
}
@@ -1,6 +1,6 @@
import type { MoneyCategoryItem, UpdateMoneyCategorySortItem } from '@/types/money/category' import type { MoneyCategoryItem } from '@/types/money/category'
import { create } from 'zustand' import { create } from 'zustand'
import { createMoneyCategoryApi, deleteMoneyCategoryApi, queryMoneyCategoryApi, updateMoneyCategorySortApi } from '@/request/api/money/category' import { createMoneyCategoryApi, deleteMoneyCategoryApi, queryMoneyCategoryApi, updateMoneyCategoryApi, updateMoneyCategorySortApi } from '@/request/api/money/category'
import { MoneyCategoryEnum } from '@/types/money/category' import { MoneyCategoryEnum } from '@/types/money/category'
interface MoneyCategoryStore { interface MoneyCategoryStore {
@@ -16,10 +16,11 @@ interface MoneyCategoryStore {
getCategoryById: (id: number) => MoneyCategoryItem | null getCategoryById: (id: number) => MoneyCategoryItem | null
createCategory: (category: MoneyCategoryItem) => Promise<void> createCategory: (category: MoneyCategoryItem) => Promise<void>
updateCategory: (category: MoneyCategoryItem) => Promise<void>
updateSortNumbers: (data: MoneyCategoryItem[], type: number) => Promise<void> updateSortNumbers: (data: MoneyCategoryItem[], type: number) => Promise<void>
deleteCategoryById: (id: number) => Promise<void> deleteCategoryById: (id: number) => Promise<void>
isDuplicateCategory: (name: string, type: number) => boolean isDuplicateCategory: (name: string, type: number, excludeId: number | null) => boolean
clear: () => void clear: () => void
} }
@@ -162,6 +163,36 @@ export const useMoneyCategoryStore = create<MoneyCategoryStore>()(
} }
}, },
updateCategory: async (category) => {
try {
const res = await updateMoneyCategoryApi({
id: category.id,
name: category.name,
icon: category.icon,
})
if (!res.isSuccess) {
throw new Error(res.message)
}
// 更新本地 categories
set(state => ({
categories: state.categories.map(c =>
c.id !== category.id
? c
: {
...c,
...category,
},
),
}))
}
catch (err) {
console.error(err)
throw err
}
},
updateSortNumbers: async (data, type) => { updateSortNumbers: async (data, type) => {
const payload = data.map((item, index) => ({ const payload = data.map((item, index) => ({
id: item.id, id: item.id,
@@ -207,9 +238,13 @@ export const useMoneyCategoryStore = create<MoneyCategoryStore>()(
} }
}, },
isDuplicateCategory: (name, type) => { isDuplicateCategory: (name, type, excludeId) => {
const categories = get().categories || [] const categories = get().categories || []
return categories.some(c => c.name === name && c.type === type) return categories.some(c =>
c.name === name
&& c.type === type
&& c.id !== excludeId,
)
}, },
}), }),
) )
@@ -44,3 +44,11 @@ export interface CreateMoneyCategoryParams {
export interface CreateMoneyCategoryResult { export interface CreateMoneyCategoryResult {
id: number id: number
} }
export interface UpdateMoneyCategoryParams {
id: number
name: string
icon: string
}
export interface UpdateMoneyCategoryResult {
}