diff --git a/code/allapp/allapp-go/biz/handler/money/money_category_service.go b/code/allapp/allapp-go/biz/handler/money/money_category_service.go
index 2e82fc09..6de2c5a4 100644
--- a/code/allapp/allapp-go/biz/handler/money/money_category_service.go
+++ b/code/allapp/allapp-go/biz/handler/money/money_category_service.go
@@ -69,7 +69,24 @@ func DeleteUserMoneyCategory(ctx context.Context, c *app.RequestContext) {
return
}
- err = db.Queries.DeleteMoneyCategoryById(ctx, req.Id)
+ userID := middleware.GetUserID(ctx)
+ categoryId := req.Id
+
+ err = db.WithTx(ctx, func(q *repo.Queries) error {
+ err2 := q.DeleteMoneyCategoryById(ctx, categoryId)
+ if err2 != nil {
+ return err2
+ }
+ err2 = q.DeleteMoneyRecordByCategoryId(ctx, repo.DeleteMoneyRecordByCategoryIdParams{
+ UserID: userID,
+ CategoryID: categoryId,
+ })
+ if err2 != nil {
+ return err2
+ }
+
+ return nil
+ })
if err != nil {
errorx.AddError(c, err)
diff --git a/code/allapp/allapp-go/biz/handler/money/money_record_service.go b/code/allapp/allapp-go/biz/handler/money/money_record_service.go
index e0a30ff3..87efadbc 100644
--- a/code/allapp/allapp-go/biz/handler/money/money_record_service.go
+++ b/code/allapp/allapp-go/biz/handler/money/money_record_service.go
@@ -12,101 +12,66 @@ import (
"allapp/utils/response"
"context"
"fmt"
+ "time"
money "allapp/biz/model/money"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/protocol/consts"
+ "github.com/jackc/pgx/v5/pgtype"
)
-// QueryMoneyRecord .
-// @router /money/record/query [POST]
-func QueryMoneyRecord(ctx context.Context, c *app.RequestContext) {
- var req money.QueryMoneyRecordsParams
+// ListMoneyRecords 账目列表
+// @router /money/record/list [POST]
+func ListMoneyRecords(ctx context.Context, c *app.RequestContext) {
+ var req money.ListMoneyRecordsParams
if err := c.BindAndValidate(&req); err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
- //// 解析年月
- //startTime, err := time.Parse("2006-01", req.RecordTime)
- //if err != nil {
- // errorx.AddError(c, fmt.Errorf("invalid record_time format: %v", err))
- // return
- //}
- //endTime := startTime.AddDate(0, 1, 0).Add(-time.Nanosecond)
- //
- //// 获取 userID 和 spaceID
- //userID := middleware.GetUserID(ctx)
- //spaceIspaceID := middleware.GetSpaceID(ctx)
- //
- //// 定义统一的 records 切片
- //var dbRecordsUser []repo.MoneyRecord
- //var dbRecordsSpace []repo.FindMoneyRecordsBySpaceRow
- //var errQuery error
- //
- //// 最终返回统一类型
- //var records []*money.MoneyRecord
- //
- //// 有空间ID,查询空间内所有用户
- //if ok {
- // params := repo.FindMoneyRecordsBySpaceParams{
- // SpaceID: spaceID,
- // RecordTime: pgtype.Date{Time: startTime, Valid: true},
- // RecordTime_2: pgtype.Date{Time: endTime, Valid: true},
- // }
- // dbRecordsSpace, errQuery = db.Queries.FindMoneyRecordsBySpace(ctx, params)
- // if errQuery != nil {
- // errorx.AddError(c, errQuery)
- // return
- // }
- //
- // for _, r := range dbRecordsSpace {
- // records = append(records, &money.MoneyRecord{
- // Id: r.ID,
- // CategoryId: r.CategoryID,
- // UserId: r.UserID,
- // Username: r.Username.String,
- // Amount: pgtypex.NumericToString(r.Amount),
- // Remark: r.Remark.String,
- // RecordTime: pgtypex.DateToString(r.RecordTime),
- // CreateTime: pgtypex.TimestampToMillis(r.CreateTime),
- // UpdateTime: pgtypex.TimestampToMillis(r.UpdateTime),
- // })
- // }
- //} else {
- // // 没有空间ID,只查询单用户
- // params := repo.FindUserMoneyRecordsParams{
- // UserID: userID,
- // RecordTime: pgtype.Date{Time: startTime, Valid: true},
- // RecordTime_2: pgtype.Date{Time: endTime, Valid: true},
- // }
- // dbRecordsUser, errQuery = db.Queries.FindUserMoneyRecords(ctx, params)
- // if errQuery != nil {
- // errorx.AddError(c, errQuery)
- // return
- // }
- //
- // for _, r := range dbRecordsUser {
- // records = append(records, &money.MoneyRecord{
- // Id: r.ID,
- // CategoryId: r.CategoryID,
- // UserId: r.UserID,
- // Username: "",
- // Amount: pgtypex.NumericToString(r.Amount),
- // Remark: r.Remark.String,
- // RecordTime: pgtypex.DateToString(r.RecordTime),
- // CreateTime: pgtypex.TimestampToMillis(r.CreateTime),
- // UpdateTime: pgtypex.TimestampToMillis(r.UpdateTime),
- // })
- // }
- //}
- //
- //result := &money.QueryMoneyRecordsResult{
- // Records: records,
- //}
+ // 解析年月(yyyy-MM)
+ startTime, err := time.Parse("2006-01", req.RecordTime)
+ if err != nil {
+ errorx.AddError(c, fmt.Errorf("invalid record_time format: %v", err))
+ return
+ }
+ endTime := startTime.AddDate(0, 1, 0).Add(-time.Nanosecond)
- response.Success(c).Send()
+ userID := middleware.GetUserID(ctx)
+
+ // 查询账目列表(统一 SQL)
+ dbRecords, err := db.Queries.ListMoneyRecords(
+ ctx,
+ repo.ListMoneyRecordsParams{
+ UserID: userID,
+ RecordTime: pgtype.Date{Time: startTime, Valid: true},
+ RecordTime_2: pgtype.Date{Time: endTime, Valid: true},
+ },
+ )
+ if err != nil {
+ errorx.AddError(c, err)
+ return
+ }
+
+ records := make([]*money.MoneyRecord, 0, len(dbRecords))
+ for _, r := range dbRecords {
+ records = append(records, &money.MoneyRecord{
+ Id: r.ID,
+ CategoryId: r.CategoryID,
+ UserId: r.UserID,
+ Username: r.Username.String,
+ Amount: pgtypex.NumericToString(r.Amount),
+ Remark: r.Remark.String,
+ RecordTime: pgtypex.DateToString(r.RecordTime),
+ CreateTime: pgtypex.TimestampToMillis(r.CreateTime),
+ UpdateTime: pgtypex.TimestampToMillis(r.UpdateTime),
+ })
+ }
+
+ response.Success(c).Data(&money.ListMoneyRecordsResult{
+ Records: records,
+ }).Send()
}
// InsertMoneyRecord .
@@ -122,8 +87,6 @@ func InsertMoneyRecord(ctx context.Context, c *app.RequestContext) {
return
}
- resp := new(money.InsertMoneyRecordResult)
-
params := repo.InsertMoneyRecordParams{
ID: idgen.NextId(),
CategoryID: req.CategoryId,
@@ -133,22 +96,14 @@ func InsertMoneyRecord(ctx context.Context, c *app.RequestContext) {
RecordTime: pgtypex.StringToDate(req.RecordTime),
}
- record, err := db.Queries.InsertMoneyRecord(ctx, params)
+ err = db.Queries.InsertMoneyRecord(ctx, params)
if err != nil {
errorx.AddError(c, err)
return
}
- resp.Id = record.ID
- resp.CategoryId = record.CategoryID
- resp.UserId = record.UserID
- resp.Amount = pgtypex.NumericToString(record.Amount)
- resp.Remark = record.Remark.String
- resp.RecordTime = pgtypex.DateToString(record.RecordTime)
- resp.CreateTime = pgtypex.TimestampToDateTimeString(record.CreateTime)
- resp.UpdateTime = pgtypex.TimestampToDateTimeString(record.UpdateTime)
- response.Success(c).Data(resp).Message("新增成功").Send()
+ response.Success(c).Message("新增成功").Send()
}
// UpdateMoneyRecord .
diff --git a/code/allapp/allapp-go/biz/handler/user/user_service.go b/code/allapp/allapp-go/biz/handler/user/user_service.go
index 36f5d3a9..f329005e 100644
--- a/code/allapp/allapp-go/biz/handler/user/user_service.go
+++ b/code/allapp/allapp-go/biz/handler/user/user_service.go
@@ -34,7 +34,7 @@ func GetUserSpace(ctx context.Context, c *app.RequestContext) {
if err != nil {
if errorx.IsNotFound(err) {
- response.Success(c).Data(resp).Send()
+ response.Success(c).Data(nil).Send()
return
}
diff --git a/code/allapp/allapp-go/biz/model/api/api.pb.go b/code/allapp/allapp-go/biz/model/api/api.pb.go
index d82e6a07..ff03c0ce 100644
--- a/code/allapp/allapp-go/biz/model/api/api.pb.go
+++ b/code/allapp/allapp-go/biz/model/api/api.pb.go
@@ -3,7 +3,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
-// protoc v4.25.3
+// protoc v6.33.1
// source: api.proto
package api
diff --git a/code/allapp/allapp-go/biz/model/money/money.pb.go b/code/allapp/allapp-go/biz/model/money/money.pb.go
index e1a7aaab..156195a7 100644
--- a/code/allapp/allapp-go/biz/model/money/money.pb.go
+++ b/code/allapp/allapp-go/biz/model/money/money.pb.go
@@ -10,7 +10,6 @@ import (
_ "allapp/biz/model/api"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- _ "google.golang.org/protobuf/types/known/emptypb"
reflect "reflect"
)
@@ -30,76 +29,74 @@ var file_money_proto_rawDesc = []byte{
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,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xcb,
- 0x04, 0x0a, 0x14, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
- 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 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, 0x71, 0x1a, 0x1c, 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, 0xc1, 0x18, 0x0f,
- 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12,
- 0x74, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x6e,
- 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x6d, 0x6f, 0x6e,
- 0x65, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61,
- 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65,
- 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74,
- 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,
+ 0x6f, 0x32, 0xcb, 0x04, 0x0a, 0x14, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67,
+ 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, 0x0a, 0x04, 0x4c, 0x69,
+ 0x73, 0x74, 0x12, 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, 0x71, 0x1a,
+ 0x1c, 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,
+ 0xc1, 0x18, 0x0f, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f,
+ 0x72, 0x79, 0x12, 0x74, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72,
+ 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x2e,
+ 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65,
+ 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6d,
+ 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79,
+ 0x43, 0x61, 0x74, 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, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1e, 0xd2, 0xc1, 0x18, 0x1a, 0x2f, 0x6d,
- 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2f, 0x75, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x70, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12,
- 0x1d, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f,
- 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1e,
- 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e,
- 0x65, 0x79, 0x43, 0x61, 0x74, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x70, 0x0a, 0x13, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
- 0x79, 0x12, 0x1d, 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, 0x52, 0x65, 0x71,
+ 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, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1e, 0xd2, 0xc1, 0x18,
+ 0x1a, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
+ 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x70, 0x0a, 0x13, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f,
+ 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65,
+ 0x71, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x70, 0x0a,
+ 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x43, 0x61, 0x74, 0x65,
+ 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1d, 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,
+ 0x52, 0x65, 0x71, 0x1a, 0x1e, 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, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x32,
+ 0xc7, 0x03, 0x0a, 0x12, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53,
+ 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x64, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f,
+ 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1d, 0x2e, 0x6d, 0x6f, 0x6e,
+ 0x65, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f,
+ 0x72, 0x64, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1d, 0x2e, 0x6d, 0x6f, 0x6e, 0x65,
+ 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72,
+ 0x64, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x12, 0xd2, 0xc1, 0x18, 0x0e, 0x2f, 0x6d,
+ 0x6f, 0x6e, 0x65, 0x79, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x6d, 0x0a, 0x11,
+ 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72,
+ 0x64, 0x12, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74,
+ 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, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74,
+ 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, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x12, 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, 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, 0x43, 0x61, 0x74, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x32, 0xce, 0x03, 0x0a,
- 0x12, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x12, 0x6b, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x65,
- 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e,
- 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
- 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e,
- 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
- 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x17, 0xd2, 0xc1, 0x18, 0x13, 0x2f, 0x6d, 0x6f,
- 0x6e, 0x65, 0x79, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79,
- 0x12, 0x6d, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52,
- 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x2e, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x49, 0x6e,
- 0x73, 0x65, 0x72, 0x74, 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, 0x49, 0x6e,
- 0x73, 0x65, 0x72, 0x74, 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, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x12,
- 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, 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, 0x79,
- 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x6d,
- 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 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, 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,
+ 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x6d, 0x0a, 0x11, 0x44, 0x65,
+ 0x6c, 0x65, 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, 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{}{
@@ -108,7 +105,7 @@ var file_money_proto_goTypes = []interface{}{
(*UpdateMoneyCategorySortReq)(nil), // 2: money.UpdateMoneyCategorySortReq
(*CreateMoneyCategoryReq)(nil), // 3: money.CreateMoneyCategoryReq
(*UpdateMoneyCategoryReq)(nil), // 4: money.UpdateMoneyCategoryReq
- (*QueryMoneyRecordsParams)(nil), // 5: money.QueryMoneyRecordsParams
+ (*ListMoneyRecordsParams)(nil), // 5: money.ListMoneyRecordsParams
(*InsertMoneyRecordParams)(nil), // 6: money.InsertMoneyRecordParams
(*UpdateMoneyRecordParams)(nil), // 7: money.UpdateMoneyRecordParams
(*DeleteMoneyRecordParams)(nil), // 8: money.DeleteMoneyRecordParams
@@ -117,7 +114,7 @@ var file_money_proto_goTypes = []interface{}{
(*UpdateMoneyCategorySortResp)(nil), // 11: money.UpdateMoneyCategorySortResp
(*CreateMoneyCategoryResp)(nil), // 12: money.CreateMoneyCategoryResp
(*UpdateMoneyCategoryResp)(nil), // 13: money.UpdateMoneyCategoryResp
- (*QueryMoneyRecordsResult)(nil), // 14: money.QueryMoneyRecordsResult
+ (*ListMoneyRecordsResult)(nil), // 14: money.ListMoneyRecordsResult
(*InsertMoneyRecordResult)(nil), // 15: money.InsertMoneyRecordResult
(*UpdateMoneyRecordResult)(nil), // 16: money.UpdateMoneyRecordResult
(*DeleteMoneyRecordResult)(nil), // 17: money.DeleteMoneyRecordResult
@@ -128,7 +125,7 @@ var file_money_proto_depIdxs = []int32{
2, // 2: money.MoneyCategoryService.UpdateMoneyCategorySort:input_type -> money.UpdateMoneyCategorySortReq
3, // 3: money.MoneyCategoryService.CreateMoneyCategory:input_type -> money.CreateMoneyCategoryReq
4, // 4: money.MoneyCategoryService.UpdateMoneyCategory:input_type -> money.UpdateMoneyCategoryReq
- 5, // 5: money.MoneyRecordService.QueryMoneyRecord:input_type -> money.QueryMoneyRecordsParams
+ 5, // 5: money.MoneyRecordService.ListMoneyRecords:input_type -> money.ListMoneyRecordsParams
6, // 6: money.MoneyRecordService.InsertMoneyRecord:input_type -> money.InsertMoneyRecordParams
7, // 7: money.MoneyRecordService.UpdateMoneyRecord:input_type -> money.UpdateMoneyRecordParams
8, // 8: money.MoneyRecordService.DeleteMoneyRecord:input_type -> money.DeleteMoneyRecordParams
@@ -137,7 +134,7 @@ var file_money_proto_depIdxs = []int32{
11, // 11: money.MoneyCategoryService.UpdateMoneyCategorySort:output_type -> money.UpdateMoneyCategorySortResp
12, // 12: money.MoneyCategoryService.CreateMoneyCategory:output_type -> money.CreateMoneyCategoryResp
13, // 13: money.MoneyCategoryService.UpdateMoneyCategory:output_type -> money.UpdateMoneyCategoryResp
- 14, // 14: money.MoneyRecordService.QueryMoneyRecord:output_type -> money.QueryMoneyRecordsResult
+ 14, // 14: money.MoneyRecordService.ListMoneyRecords:output_type -> money.ListMoneyRecordsResult
15, // 15: money.MoneyRecordService.InsertMoneyRecord:output_type -> money.InsertMoneyRecordResult
16, // 16: money.MoneyRecordService.UpdateMoneyRecord:output_type -> money.UpdateMoneyRecordResult
17, // 17: money.MoneyRecordService.DeleteMoneyRecord:output_type -> money.DeleteMoneyRecordResult
diff --git a/code/allapp/allapp-go/biz/model/money/money_record_types.pb.go b/code/allapp/allapp-go/biz/model/money/money_record_types.pb.go
index 5336a0c5..54e9284a 100644
--- a/code/allapp/allapp-go/biz/model/money/money_record_types.pb.go
+++ b/code/allapp/allapp-go/biz/model/money/money_record_types.pb.go
@@ -134,7 +134,7 @@ func (x *MoneyRecord) GetUsername() string {
}
// 查询记账记录请求参数
-type QueryMoneyRecordsParams struct {
+type ListMoneyRecordsParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -142,8 +142,8 @@ type QueryMoneyRecordsParams struct {
RecordTime string `protobuf:"bytes,1,opt,name=RecordTime,proto3" form:"record_time" json:"record_time"`
}
-func (x *QueryMoneyRecordsParams) Reset() {
- *x = QueryMoneyRecordsParams{}
+func (x *ListMoneyRecordsParams) Reset() {
+ *x = ListMoneyRecordsParams{}
if protoimpl.UnsafeEnabled {
mi := &file_money_money_record_types_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -151,13 +151,13 @@ func (x *QueryMoneyRecordsParams) Reset() {
}
}
-func (x *QueryMoneyRecordsParams) String() string {
+func (x *ListMoneyRecordsParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*QueryMoneyRecordsParams) ProtoMessage() {}
+func (*ListMoneyRecordsParams) ProtoMessage() {}
-func (x *QueryMoneyRecordsParams) ProtoReflect() protoreflect.Message {
+func (x *ListMoneyRecordsParams) ProtoReflect() protoreflect.Message {
mi := &file_money_money_record_types_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -169,12 +169,12 @@ func (x *QueryMoneyRecordsParams) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use QueryMoneyRecordsParams.ProtoReflect.Descriptor instead.
-func (*QueryMoneyRecordsParams) Descriptor() ([]byte, []int) {
+// Deprecated: Use ListMoneyRecordsParams.ProtoReflect.Descriptor instead.
+func (*ListMoneyRecordsParams) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{1}
}
-func (x *QueryMoneyRecordsParams) GetRecordTime() string {
+func (x *ListMoneyRecordsParams) GetRecordTime() string {
if x != nil {
return x.RecordTime
}
@@ -182,7 +182,7 @@ func (x *QueryMoneyRecordsParams) GetRecordTime() string {
}
// 查询记账记录结果
-type QueryMoneyRecordsResult struct {
+type ListMoneyRecordsResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -190,8 +190,8 @@ type QueryMoneyRecordsResult struct {
Records []*MoneyRecord `protobuf:"bytes,1,rep,name=Records,proto3" form:"records" json:"records"`
}
-func (x *QueryMoneyRecordsResult) Reset() {
- *x = QueryMoneyRecordsResult{}
+func (x *ListMoneyRecordsResult) Reset() {
+ *x = ListMoneyRecordsResult{}
if protoimpl.UnsafeEnabled {
mi := &file_money_money_record_types_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -199,13 +199,13 @@ func (x *QueryMoneyRecordsResult) Reset() {
}
}
-func (x *QueryMoneyRecordsResult) String() string {
+func (x *ListMoneyRecordsResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*QueryMoneyRecordsResult) ProtoMessage() {}
+func (*ListMoneyRecordsResult) ProtoMessage() {}
-func (x *QueryMoneyRecordsResult) ProtoReflect() protoreflect.Message {
+func (x *ListMoneyRecordsResult) ProtoReflect() protoreflect.Message {
mi := &file_money_money_record_types_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -217,12 +217,12 @@ func (x *QueryMoneyRecordsResult) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use QueryMoneyRecordsResult.ProtoReflect.Descriptor instead.
-func (*QueryMoneyRecordsResult) Descriptor() ([]byte, []int) {
+// Deprecated: Use ListMoneyRecordsResult.ProtoReflect.Descriptor instead.
+func (*ListMoneyRecordsResult) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{2}
}
-func (x *QueryMoneyRecordsResult) GetRecords() []*MoneyRecord {
+func (x *ListMoneyRecordsResult) GetRecords() []*MoneyRecord {
if x != nil {
return x.Records
}
@@ -306,15 +306,6 @@ type InsertMoneyRecordResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
-
- 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"`
- 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"`
- 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"`
- CreateTime string `protobuf:"bytes,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"`
}
func (x *InsertMoneyRecordResult) Reset() {
@@ -349,62 +340,6 @@ func (*InsertMoneyRecordResult) Descriptor() ([]byte, []int) {
return file_money_money_record_types_proto_rawDescGZIP(), []int{4}
}
-func (x *InsertMoneyRecordResult) GetId() int64 {
- if x != nil {
- return x.Id
- }
- return 0
-}
-
-func (x *InsertMoneyRecordResult) GetCategoryId() int64 {
- if x != nil {
- return x.CategoryId
- }
- return 0
-}
-
-func (x *InsertMoneyRecordResult) GetUserId() int64 {
- if x != nil {
- return x.UserId
- }
- return 0
-}
-
-func (x *InsertMoneyRecordResult) GetAmount() string {
- if x != nil {
- return x.Amount
- }
- return ""
-}
-
-func (x *InsertMoneyRecordResult) GetRemark() string {
- if x != nil {
- return x.Remark
- }
- return ""
-}
-
-func (x *InsertMoneyRecordResult) GetRecordTime() string {
- if x != nil {
- return x.RecordTime
- }
- return ""
-}
-
-func (x *InsertMoneyRecordResult) GetCreateTime() string {
- if x != nil {
- return x.CreateTime
- }
- return ""
-}
-
-func (x *InsertMoneyRecordResult) GetUpdateTime() string {
- if x != nil {
- return x.UpdateTime
- }
- return ""
-}
-
// 更新记账记录
type UpdateMoneyRecordParams struct {
state protoimpl.MessageState
@@ -639,81 +574,60 @@ var file_money_money_record_types_proto_rawDesc = []byte{
0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x08, 0x55,
0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0xca,
0xbb, 0x18, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x08, 0x55, 0x73, 0x65,
- 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4a, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f,
- 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
- 0x12, 0x2f, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01,
- 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, 0x54, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52,
- 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x07,
- 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
- 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72,
- 0x64, 0x42, 0x0b, 0xca, 0xbb, 0x18, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x07,
- 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0xa4, 0x02, 0x0a, 0x17, 0x49, 0x6e, 0x73, 0x65,
- 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x72,
- 0x61, 0x6d, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x18, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x61, 0x74,
- 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0xda, 0xbb, 0x18, 0x05, 0x24, 0x21, 0x3d, 0x27,
- 0x27, 0x52, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x4d, 0x0a,
- 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xca,
- 0xbb, 0x18, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0xda, 0xbb, 0x18, 0x27, 0x24, 0x21, 0x3d,
- 0x27, 0x27, 0x20, 0x26, 0x26, 0x20, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x28, 0x27, 0x5e, 0x5c,
- 0x64, 0x2b, 0x28, 0x5c, 0x2e, 0x5c, 0x64, 0x7b, 0x31, 0x2c, 0x32, 0x7d, 0x29, 0x3f, 0x24, 0x27,
- 0x2c, 0x20, 0x24, 0x29, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x06,
- 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 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, 0x5c, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xca, 0xbb, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
- 0x5f, 0x74, 0x69, 0x6d, 0x65, 0xda, 0xbb, 0x18, 0x29, 0x24, 0x21, 0x3d, 0x27, 0x27, 0x20, 0x26,
- 0x26, 0x20, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x28, 0x27, 0x5e, 0x5c, 0x64, 0x7b, 0x34, 0x7d,
- 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x24, 0x27, 0x2c, 0x20,
- 0x24, 0x29, 0x52, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xe2,
- 0x02, 0x0a, 0x17, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65,
- 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 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, 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, 0x23, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x03, 0x42, 0x0b, 0xca, 0xbb, 0x18, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64,
- 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75,
- 0x6e, 0x74, 0x18, 0x04, 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, 0x05, 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, 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,
+ 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x6e,
+ 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12,
+ 0x2f, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 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, 0x53, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63,
+ 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x07, 0x52, 0x65,
+ 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x6f,
+ 0x6e, 0x65, 0x79, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42,
+ 0x0b, 0xca, 0xbb, 0x18, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x07, 0x52, 0x65,
+ 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0xa4, 0x02, 0x0a, 0x17, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74,
+ 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d,
+ 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x18, 0xca, 0xbb, 0x18, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67,
+ 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0xda, 0xbb, 0x18, 0x05, 0x24, 0x21, 0x3d, 0x27, 0x27, 0x52,
+ 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x06, 0x41,
+ 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xca, 0xbb, 0x18,
+ 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0xda, 0xbb, 0x18, 0x27, 0x24, 0x21, 0x3d, 0x27, 0x27,
+ 0x20, 0x26, 0x26, 0x20, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x28, 0x27, 0x5e, 0x5c, 0x64, 0x2b,
+ 0x28, 0x5c, 0x2e, 0x5c, 0x64, 0x7b, 0x31, 0x2c, 0x32, 0x7d, 0x29, 0x3f, 0x24, 0x27, 0x2c, 0x20,
+ 0x24, 0x29, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x06, 0x52, 0x65,
+ 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 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, 0x5c,
+ 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x3c, 0xca, 0xbb, 0x18, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74,
+ 0x69, 0x6d, 0x65, 0xda, 0xbb, 0x18, 0x29, 0x24, 0x21, 0x3d, 0x27, 0x27, 0x20, 0x26, 0x26, 0x20,
+ 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x28, 0x27, 0x5e, 0x5c, 0x64, 0x7b, 0x34, 0x7d, 0x2d, 0x5c,
+ 0x64, 0x7b, 0x32, 0x7d, 0x2d, 0x5c, 0x64, 0x7b, 0x32, 0x7d, 0x24, 0x27, 0x2c, 0x20, 0x24, 0x29,
+ 0x52, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17,
+ 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72,
+ 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 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 (
@@ -731,8 +645,8 @@ func file_money_money_record_types_proto_rawDescGZIP() []byte {
var file_money_money_record_types_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_money_money_record_types_proto_goTypes = []interface{}{
(*MoneyRecord)(nil), // 0: money.MoneyRecord
- (*QueryMoneyRecordsParams)(nil), // 1: money.QueryMoneyRecordsParams
- (*QueryMoneyRecordsResult)(nil), // 2: money.QueryMoneyRecordsResult
+ (*ListMoneyRecordsParams)(nil), // 1: money.ListMoneyRecordsParams
+ (*ListMoneyRecordsResult)(nil), // 2: money.ListMoneyRecordsResult
(*InsertMoneyRecordParams)(nil), // 3: money.InsertMoneyRecordParams
(*InsertMoneyRecordResult)(nil), // 4: money.InsertMoneyRecordResult
(*UpdateMoneyRecordParams)(nil), // 5: money.UpdateMoneyRecordParams
@@ -741,7 +655,7 @@ var file_money_money_record_types_proto_goTypes = []interface{}{
(*DeleteMoneyRecordResult)(nil), // 8: money.DeleteMoneyRecordResult
}
var file_money_money_record_types_proto_depIdxs = []int32{
- 0, // 0: money.QueryMoneyRecordsResult.Records:type_name -> money.MoneyRecord
+ 0, // 0: money.ListMoneyRecordsResult.Records:type_name -> money.MoneyRecord
1, // [1:1] is the sub-list for method output_type
1, // [1:1] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
@@ -768,7 +682,7 @@ func file_money_money_record_types_proto_init() {
}
}
file_money_money_record_types_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*QueryMoneyRecordsParams); i {
+ switch v := v.(*ListMoneyRecordsParams); i {
case 0:
return &v.state
case 1:
@@ -780,7 +694,7 @@ func file_money_money_record_types_proto_init() {
}
}
file_money_money_record_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*QueryMoneyRecordsResult); i {
+ switch v := v.(*ListMoneyRecordsResult); i {
case 0:
return &v.state
case 1:
diff --git a/code/allapp/allapp-go/biz/router/middleware/refreshActive.go b/code/allapp/allapp-go/biz/router/middleware/refreshActive.go
index 8a5a7c21..add373ff 100644
--- a/code/allapp/allapp-go/biz/router/middleware/refreshActive.go
+++ b/code/allapp/allapp-go/biz/router/middleware/refreshActive.go
@@ -4,6 +4,7 @@ import (
"allapp/db"
"allapp/logx"
"context"
+
"github.com/cloudwego/hertz/pkg/app"
)
@@ -18,10 +19,12 @@ func RefreshActive() app.HandlerFunc {
}
// 异步刷新活跃时间
- go func() {
- if err := db.Queries.UpdateUserActiveTime(c, userID); err != nil {
- logx.CtxError(c, "刷新用户活跃时间失败, userID=%d, err=%v", userID, err)
+ go func(userID int64) {
+ ctx := context.Background()
+
+ if err := db.Queries.UpdateUserLastLoginTime(ctx, userID); err != nil {
+ logx.CtxError(ctx, "刷新用户活跃时间失败, userID=%d, err=%v", userID, err)
}
- }()
+ }(userID)
}
}
diff --git a/code/allapp/allapp-go/biz/router/money/middleware.go b/code/allapp/allapp-go/biz/router/money/middleware.go
index bc0d5d84..20037ede 100644
--- a/code/allapp/allapp-go/biz/router/money/middleware.go
+++ b/code/allapp/allapp-go/biz/router/money/middleware.go
@@ -75,3 +75,8 @@ func _updatemoneycategoryMw() []app.HandlerFunc {
// your code...
return nil
}
+
+func _listmoneyrecordsMw() []app.HandlerFunc {
+ // your code...
+ return nil
+}
diff --git a/code/allapp/allapp-go/biz/router/money/money.go b/code/allapp/allapp-go/biz/router/money/money.go
index 096c3ae5..e0e2f526 100644
--- a/code/allapp/allapp-go/biz/router/money/money.go
+++ b/code/allapp/allapp-go/biz/router/money/money.go
@@ -25,11 +25,11 @@ func Register(r *server.Hertz) {
_category.POST("/delete", append(_deleteusermoneycategoryMw(), money.DeleteUserMoneyCategory)...)
_category.POST("/update", append(_updatemoneycategoryMw(), money.UpdateMoneyCategory)...)
_category.POST("/updateSort", append(_updatemoneycategorysortMw(), money.UpdateMoneyCategorySort)...)
+ _money.POST("/records", append(_listmoneyrecordsMw(), money.ListMoneyRecords)...)
{
_record := _money.Group("/record", _recordMw()...)
_record.POST("/delete", append(_deletemoneyrecordMw(), money.DeleteMoneyRecord)...)
_record.POST("/insert", append(_insertmoneyrecordMw(), money.InsertMoneyRecord)...)
- _record.POST("/query", append(_querymoneyrecordMw(), money.QueryMoneyRecord)...)
_record.POST("/update", append(_updatemoneyrecordMw(), money.UpdateMoneyRecord)...)
}
}
diff --git a/code/allapp/allapp-go/db/queries/money_record.sql b/code/allapp/allapp-go/db/queries/money_record.sql
index 67632155..d539cca2 100644
--- a/code/allapp/allapp-go/db/queries/money_record.sql
+++ b/code/allapp/allapp-go/db/queries/money_record.sql
@@ -1,25 +1,26 @@
--- name: FindUserMoneyRecords :many
-SELECT mr.*
-FROM money_record mr
-WHERE mr.user_id = $1
- AND mr.record_time BETWEEN $2 AND $3
-ORDER BY mr.record_time DESC, mr.create_time DESC;
-
--- name: FindMoneyRecordsBySpace :many
+-- name: ListMoneyRecords :many
SELECT
mr.*,
u.username AS username
FROM money_record mr
- INNER JOIN space_user su
- ON mr.user_id = su.user_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
-ORDER BY mr.record_time DESC, mr.create_time DESC;
+ LEFT JOIN space_user su
+ ON su.user_id = mr.user_id
+ LEFT JOIN "user" u
+ ON u.id = mr.user_id
+WHERE
+ mr.record_time BETWEEN $2 AND $3
+ AND (
+ -- 空间账本:属于当前空间的用户
+ su.user_id IS NOT NULL
+ -- 个人账本:当前用户
+ OR mr.user_id = $1
+ )
+ORDER BY
+ mr.record_time DESC,
+ mr.create_time DESC;
--- name: InsertMoneyRecord :one
+-- name: InsertMoneyRecord :exec
INSERT INTO money_record (
id,
category_id,
@@ -31,8 +32,7 @@ INSERT INTO money_record (
update_time
) VALUES (
$1, $2, $3, $4, $5,$6,NOW(),NOW()
- )
-RETURNING *;
+ );
-- name: GetMoneyRecordById :one
SELECT * FROM money_record WHERE id = $1;
@@ -49,4 +49,7 @@ WHERE id = $1
RETURNING *;
-- name: DeleteMoneyRecord :exec
-DELETE FROM money_record WHERE id = $1;
\ No newline at end of file
+DELETE FROM money_record WHERE id = $1;
+
+-- name: DeleteMoneyRecordByCategoryId :exec
+DELETE FROM money_record WHERE user_id = $1 AND category_id = $2;
\ No newline at end of file
diff --git a/code/allapp/allapp-go/db/queries/user_info.sql b/code/allapp/allapp-go/db/queries/user_info.sql
deleted file mode 100644
index bd5aff45..00000000
--- a/code/allapp/allapp-go/db/queries/user_info.sql
+++ /dev/null
@@ -1,30 +0,0 @@
--- 根据 ID 查询单条用户记录
--- name: GetUserById :one
-SELECT *
-FROM user_info
-WHERE id = $1;
-
--- 根据账号查询单条用户记录
--- name: GetUserByAccount :one
-SELECT *
-FROM user_info
-WHERE account = $1;
-
--- 根据账号和密码查询单条用户记录(登录用)
--- name: GetUserForLogin :one
-SELECT *
-FROM user_info
-WHERE account = $1
- AND password = $2;
-
--- 更新用户最后登录时间,并返回更新后的记录
--- name: UpdateUserLoginLastTime :exec
-UPDATE user_info
-SET last_login_time = now()
-WHERE id = $1;
-
--- 更新用户活跃时间
--- name: UpdateUserActiveTime :exec
-UPDATE user_info
-SET active_time = now()
-WHERE id = $1;
diff --git a/code/allapp/allapp-go/db/repo/money_record.sql.go b/code/allapp/allapp-go/db/repo/money_record.sql.go
index fbb8b2ce..65ec8e1e 100644
--- a/code/allapp/allapp-go/db/repo/money_record.sql.go
+++ b/code/allapp/allapp-go/db/repo/money_record.sql.go
@@ -20,109 +20,18 @@ func (q *Queries) DeleteMoneyRecord(ctx context.Context, id int64) error {
return err
}
-const findMoneyRecordsBySpace = `-- name: FindMoneyRecordsBySpace :many
-SELECT
- 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
-FROM money_record mr
- INNER JOIN space_user su
- ON mr.user_id = su.user_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
-ORDER BY mr.record_time DESC, mr.create_time DESC
+const deleteMoneyRecordByCategoryId = `-- name: DeleteMoneyRecordByCategoryId :exec
+DELETE FROM money_record WHERE user_id = $1 AND category_id = $2
`
-type FindMoneyRecordsBySpaceParams struct {
- SpaceID int64
- RecordTime pgtype.Date
- RecordTime_2 pgtype.Date
-}
-
-type FindMoneyRecordsBySpaceRow struct {
- ID int64
- CategoryID int64
+type DeleteMoneyRecordByCategoryIdParams struct {
UserID int64
- Amount pgtype.Numeric
- Remark pgtype.Text
- RecordTime pgtype.Date
- CreateTime pgtype.Timestamp
- UpdateTime pgtype.Timestamp
- Username pgtype.Text
+ CategoryID int64
}
-func (q *Queries) FindMoneyRecordsBySpace(ctx context.Context, arg FindMoneyRecordsBySpaceParams) ([]FindMoneyRecordsBySpaceRow, error) {
- rows, err := q.db.Query(ctx, findMoneyRecordsBySpace, arg.SpaceID, arg.RecordTime, arg.RecordTime_2)
- if err != nil {
- return nil, err
- }
- defer rows.Close()
- var items []FindMoneyRecordsBySpaceRow
- for rows.Next() {
- var i FindMoneyRecordsBySpaceRow
- if err := rows.Scan(
- &i.ID,
- &i.CategoryID,
- &i.UserID,
- &i.Amount,
- &i.Remark,
- &i.RecordTime,
- &i.CreateTime,
- &i.UpdateTime,
- &i.Username,
- ); err != nil {
- return nil, err
- }
- items = append(items, i)
- }
- if err := rows.Err(); err != nil {
- return nil, err
- }
- return items, nil
-}
-
-const findUserMoneyRecords = `-- name: FindUserMoneyRecords :many
-SELECT mr.id, mr.category_id, mr.user_id, mr.amount, mr.remark, mr.record_time, mr.create_time, mr.update_time
-FROM money_record mr
-WHERE mr.user_id = $1
- AND mr.record_time BETWEEN $2 AND $3
-ORDER BY mr.record_time DESC, mr.create_time DESC
-`
-
-type FindUserMoneyRecordsParams struct {
- UserID int64
- RecordTime pgtype.Date
- RecordTime_2 pgtype.Date
-}
-
-func (q *Queries) FindUserMoneyRecords(ctx context.Context, arg FindUserMoneyRecordsParams) ([]MoneyRecord, error) {
- rows, err := q.db.Query(ctx, findUserMoneyRecords, arg.UserID, arg.RecordTime, arg.RecordTime_2)
- if err != nil {
- return nil, err
- }
- defer rows.Close()
- var items []MoneyRecord
- for rows.Next() {
- var i MoneyRecord
- if err := rows.Scan(
- &i.ID,
- &i.CategoryID,
- &i.UserID,
- &i.Amount,
- &i.Remark,
- &i.RecordTime,
- &i.CreateTime,
- &i.UpdateTime,
- ); err != nil {
- return nil, err
- }
- items = append(items, i)
- }
- if err := rows.Err(); err != nil {
- return nil, err
- }
- return items, nil
+func (q *Queries) DeleteMoneyRecordByCategoryId(ctx context.Context, arg DeleteMoneyRecordByCategoryIdParams) error {
+ _, err := q.db.Exec(ctx, deleteMoneyRecordByCategoryId, arg.UserID, arg.CategoryID)
+ return err
}
const getMoneyRecordById = `-- name: GetMoneyRecordById :one
@@ -145,7 +54,7 @@ func (q *Queries) GetMoneyRecordById(ctx context.Context, id int64) (MoneyRecord
return i, err
}
-const insertMoneyRecord = `-- name: InsertMoneyRecord :one
+const insertMoneyRecord = `-- name: InsertMoneyRecord :exec
INSERT INTO money_record (
id,
category_id,
@@ -158,7 +67,6 @@ INSERT INTO money_record (
) VALUES (
$1, $2, $3, $4, $5,$6,NOW(),NOW()
)
-RETURNING id, category_id, user_id, amount, remark, record_time, create_time, update_time
`
type InsertMoneyRecordParams struct {
@@ -170,8 +78,8 @@ type InsertMoneyRecordParams struct {
RecordTime pgtype.Date
}
-func (q *Queries) InsertMoneyRecord(ctx context.Context, arg InsertMoneyRecordParams) (MoneyRecord, error) {
- row := q.db.QueryRow(ctx, insertMoneyRecord,
+func (q *Queries) InsertMoneyRecord(ctx context.Context, arg InsertMoneyRecordParams) error {
+ _, err := q.db.Exec(ctx, insertMoneyRecord,
arg.ID,
arg.CategoryID,
arg.UserID,
@@ -179,18 +87,77 @@ func (q *Queries) InsertMoneyRecord(ctx context.Context, arg InsertMoneyRecordPa
arg.Remark,
arg.RecordTime,
)
- var i MoneyRecord
- err := row.Scan(
- &i.ID,
- &i.CategoryID,
- &i.UserID,
- &i.Amount,
- &i.Remark,
- &i.RecordTime,
- &i.CreateTime,
- &i.UpdateTime,
- )
- return i, err
+ return err
+}
+
+const listMoneyRecords = `-- name: ListMoneyRecords :many
+SELECT
+ 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
+FROM money_record mr
+ LEFT JOIN space_user su
+ ON su.user_id = mr.user_id
+ LEFT JOIN "user" u
+ ON u.id = mr.user_id
+WHERE
+ mr.record_time BETWEEN $2 AND $3
+ AND (
+ -- 空间账本:属于当前空间的用户
+ su.user_id IS NOT NULL
+ -- 个人账本:当前用户
+ OR mr.user_id = $1
+ )
+ORDER BY
+ mr.record_time DESC,
+ mr.create_time DESC
+`
+
+type ListMoneyRecordsParams struct {
+ UserID int64
+ RecordTime pgtype.Date
+ RecordTime_2 pgtype.Date
+}
+
+type ListMoneyRecordsRow struct {
+ ID int64
+ CategoryID int64
+ UserID int64
+ Amount pgtype.Numeric
+ Remark pgtype.Text
+ RecordTime pgtype.Date
+ CreateTime pgtype.Timestamp
+ UpdateTime pgtype.Timestamp
+ Username pgtype.Text
+}
+
+func (q *Queries) ListMoneyRecords(ctx context.Context, arg ListMoneyRecordsParams) ([]ListMoneyRecordsRow, error) {
+ rows, err := q.db.Query(ctx, listMoneyRecords, arg.UserID, arg.RecordTime, arg.RecordTime_2)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []ListMoneyRecordsRow
+ for rows.Next() {
+ var i ListMoneyRecordsRow
+ if err := rows.Scan(
+ &i.ID,
+ &i.CategoryID,
+ &i.UserID,
+ &i.Amount,
+ &i.Remark,
+ &i.RecordTime,
+ &i.CreateTime,
+ &i.UpdateTime,
+ &i.Username,
+ ); err != nil {
+ return nil, err
+ }
+ items = append(items, i)
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
}
const updateMoneyRecord = `-- name: UpdateMoneyRecord :exec
diff --git a/code/allapp/allapp-go/db/repo/user_info.sql.go b/code/allapp/allapp-go/db/repo/user_info.sql.go
deleted file mode 100644
index eb875aaf..00000000
--- a/code/allapp/allapp-go/db/repo/user_info.sql.go
+++ /dev/null
@@ -1,118 +0,0 @@
-// Code generated by sqlc. DO NOT EDIT.
-// versions:
-// sqlc v1.30.0
-// source: user_info.sql
-
-package repo
-
-import (
- "context"
-)
-
-const getUserByAccount = `-- name: GetUserByAccount :one
-SELECT id, seq_no, account, password, email, username, gender, create_time, update_time, active_time, last_login_time
-FROM user_info
-WHERE account = $1
-`
-
-// 根据账号查询单条用户记录
-func (q *Queries) GetUserByAccount(ctx context.Context, account string) (UserInfo, error) {
- row := q.db.QueryRow(ctx, getUserByAccount, account)
- var i UserInfo
- err := row.Scan(
- &i.ID,
- &i.SeqNo,
- &i.Account,
- &i.Password,
- &i.Email,
- &i.Username,
- &i.Gender,
- &i.CreateTime,
- &i.UpdateTime,
- &i.ActiveTime,
- &i.LastLoginTime,
- )
- return i, err
-}
-
-const getUserById = `-- name: GetUserById :one
-SELECT id, seq_no, account, password, email, username, gender, create_time, update_time, active_time, last_login_time
-FROM user_info
-WHERE id = $1
-`
-
-// 根据 ID 查询单条用户记录
-func (q *Queries) GetUserById(ctx context.Context, id int64) (UserInfo, error) {
- row := q.db.QueryRow(ctx, getUserById, id)
- var i UserInfo
- err := row.Scan(
- &i.ID,
- &i.SeqNo,
- &i.Account,
- &i.Password,
- &i.Email,
- &i.Username,
- &i.Gender,
- &i.CreateTime,
- &i.UpdateTime,
- &i.ActiveTime,
- &i.LastLoginTime,
- )
- return i, err
-}
-
-const getUserForLogin = `-- name: GetUserForLogin :one
-SELECT id, seq_no, account, password, email, username, gender, create_time, update_time, active_time, last_login_time
-FROM user_info
-WHERE account = $1
- AND password = $2
-`
-
-type GetUserForLoginParams struct {
- Account string
- Password string
-}
-
-// 根据账号和密码查询单条用户记录(登录用)
-func (q *Queries) GetUserForLogin(ctx context.Context, arg GetUserForLoginParams) (UserInfo, error) {
- row := q.db.QueryRow(ctx, getUserForLogin, arg.Account, arg.Password)
- var i UserInfo
- err := row.Scan(
- &i.ID,
- &i.SeqNo,
- &i.Account,
- &i.Password,
- &i.Email,
- &i.Username,
- &i.Gender,
- &i.CreateTime,
- &i.UpdateTime,
- &i.ActiveTime,
- &i.LastLoginTime,
- )
- return i, err
-}
-
-const updateUserActiveTime = `-- name: UpdateUserActiveTime :exec
-UPDATE user_info
-SET active_time = now()
-WHERE id = $1
-`
-
-// 更新用户活跃时间
-func (q *Queries) UpdateUserActiveTime(ctx context.Context, id int64) error {
- _, err := q.db.Exec(ctx, updateUserActiveTime, id)
- return err
-}
-
-const updateUserLoginLastTime = `-- name: UpdateUserLoginLastTime :exec
-UPDATE user_info
-SET last_login_time = now()
-WHERE id = $1
-`
-
-// 更新用户最后登录时间,并返回更新后的记录
-func (q *Queries) UpdateUserLoginLastTime(ctx context.Context, id int64) error {
- _, err := q.db.Exec(ctx, updateUserLoginLastTime, id)
- return err
-}
diff --git a/code/allapp/allapp-go/idl/money/money.proto b/code/allapp/allapp-go/idl/money/money.proto
index 36401bcc..9decec24 100644
--- a/code/allapp/allapp-go/idl/money/money.proto
+++ b/code/allapp/allapp-go/idl/money/money.proto
@@ -7,7 +7,6 @@ option go_package = "money";
import "api.proto";
import "money/money_category_types.proto";
import "money/money_record_types.proto";
-import "google/protobuf/empty.proto";
service MoneyCategoryService {
rpc List(ListMoneyCategoryReq) returns (ListMoneyCategoryResp){
@@ -28,8 +27,8 @@ service MoneyCategoryService {
}
service MoneyRecordService {
- rpc QueryMoneyRecord(QueryMoneyRecordsParams) returns (QueryMoneyRecordsResult){
- option (api.post) = '/money/record/query';
+ rpc ListMoneyRecords(ListMoneyRecordsParams) returns (ListMoneyRecordsResult){
+ option (api.post) = '/money/records';
}
rpc InsertMoneyRecord(InsertMoneyRecordParams) returns (InsertMoneyRecordResult){
option (api.post) = '/money/record/insert';
diff --git a/code/allapp/allapp-go/idl/money/money_category_types.proto b/code/allapp/allapp-go/idl/money/money_category_types.proto
index 47e27809..81899812 100644
--- a/code/allapp/allapp-go/idl/money/money_category_types.proto
+++ b/code/allapp/allapp-go/idl/money/money_category_types.proto
@@ -64,15 +64,15 @@ message CreateMoneyCategoryResp {
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 {}
diff --git a/code/allapp/allapp-go/idl/money/money_record_types.proto b/code/allapp/allapp-go/idl/money/money_record_types.proto
index dc80f3aa..c3dc3aa0 100644
--- a/code/allapp/allapp-go/idl/money/money_record_types.proto
+++ b/code/allapp/allapp-go/idl/money/money_record_types.proto
@@ -19,14 +19,13 @@ message MoneyRecord {
string Username = 9 [(api.body)="username"];
}
-
// 查询记账记录请求参数
-message QueryMoneyRecordsParams {
+message ListMoneyRecordsParams {
string RecordTime = 1 [(api.body)="record_time"];
}
// 查询记账记录结果
-message QueryMoneyRecordsResult {
+message ListMoneyRecordsResult {
repeated MoneyRecord Records = 1 [(api.body)="records"];
}
@@ -46,14 +45,7 @@ message InsertMoneyRecordParams {
// 新增记账记录结果
message InsertMoneyRecordResult {
- int64 Id = 1 [(api.body)="id"];
- int64 CategoryId = 2 [(api.body)="category_id"];
- int64 UserId = 3 [(api.body)="user_id"];
- string Amount = 4 [(api.body)="amount"];
- string Remark = 5 [(api.body)="remark"];
- string RecordTime = 6 [(api.body)="record_time"];
- string CreateTime = 7 [(api.body)="create_time"];
- string UpdateTime = 8 [(api.body)="update_time"];
+
}
// 更新记账记录
diff --git a/code/allapp/allapp-rn/package.json b/code/allapp/allapp-rn/package.json
index a4999952..bc72d487 100644
--- a/code/allapp/allapp-rn/package.json
+++ b/code/allapp/allapp-rn/package.json
@@ -29,6 +29,7 @@
"expo-clipboard": "~8.0.8",
"expo-constants": "~18.0.13",
"expo-font": "~14.0.11",
+ "expo-keep-awake": "~15.0.8",
"expo-linear-gradient": "~15.0.8",
"expo-linking": "~8.0.11",
"expo-qq": "^0.1.6",
diff --git a/code/allapp/allapp-rn/pnpm-lock.yaml b/code/allapp/allapp-rn/pnpm-lock.yaml
index 92b49902..68806833 100644
--- a/code/allapp/allapp-rn/pnpm-lock.yaml
+++ b/code/allapp/allapp-rn/pnpm-lock.yaml
@@ -65,6 +65,9 @@ importers:
expo-font:
specifier: ~14.0.11
version: 14.0.11(expo@54.0.32)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo-keep-awake:
+ specifier: ~15.0.8
+ version: 15.0.8(expo@54.0.32)(react@19.1.0)
expo-linear-gradient:
specifier: ~15.0.8
version: 15.0.8(expo@54.0.32)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
diff --git a/code/allapp/allapp-rn/src/app/(tabs)/money/components/TransactionsList.tsx b/code/allapp/allapp-rn/src/app/(tabs)/money/components/TransactionsList.tsx
index 6225ea08..d08aa065 100644
--- a/code/allapp/allapp-rn/src/app/(tabs)/money/components/TransactionsList.tsx
+++ b/code/allapp/allapp-rn/src/app/(tabs)/money/components/TransactionsList.tsx
@@ -69,16 +69,6 @@ export default function StaticTransactions({
data: group.records,
}))
- if (records.length === 0) {
- return (
-
- )
- }
-
return (
}
+ ListEmptyComponent={() => (
+
+
+
+ )}
renderSectionHeader={({ section }) => (
diff --git a/code/allapp/allapp-rn/src/app/(tabs)/money/index.tsx b/code/allapp/allapp-rn/src/app/(tabs)/money/index.tsx
index 4d8d1e53..0b41366e 100644
--- a/code/allapp/allapp-rn/src/app/(tabs)/money/index.tsx
+++ b/code/allapp/allapp-rn/src/app/(tabs)/money/index.tsx
@@ -5,7 +5,7 @@ import { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context'
import { ADatePicker, ADrawer, AListItem, LucideIcon } from '@/components/common/ao'
import { Fab, FabIcon } from '@/components/ui/fab'
import { AddIcon } from '@/components/ui/icon'
-import { queryMoneyRecordsApi } from '@/request/api/money/record'
+import { deleteMoneyRecordApi, listMoneyRecordsApi } from '@/request/api/money/record'
import { useMoneyRecordStore } from '@/store/moneyRecord'
import { getCurrentYearMonth } from '@/utils/time'
import { toast } from '@/utils/toast'
@@ -26,12 +26,11 @@ export default function Money() {
// 操作菜单
const [showActionsMenu, setShowActionsMenu] = useState(false)
- function getMoneyRecords() {
- queryMoneyRecordsApi({
+ function fetchMoneyRecords() {
+ listMoneyRecordsApi({
record_time: searchParams.record_time,
}).then((res) => {
if (res.isSuccess) {
- console.log(res.data.records)
moneyRecordStore.setRecords(res.data.records || [], searchParams.record_time)
}
else {
@@ -43,18 +42,20 @@ export default function Money() {
console.log(err)
})
}
-
useFocusEffect(
useCallback(() => {
- // 页面显示 / 返回时
- console.log('===show===')
-
- return () => {
- // 页面离开(可选)
- }
- }, []),
+ fetchMoneyRecords()
+ }, [searchParams.record_time]),
)
+ async function handleDeleteRecord(id: number) {
+ await deleteMoneyRecordApi({
+ id,
+ })
+
+ fetchMoneyRecords()
+ }
+
return (
-
- {/*
- 预算
-
-
-
- 点击设置
- */}
@@ -164,10 +149,10 @@ export default function Money() {
})
}}
onDelete={(id) => {
- moneyRecordStore.deleteMoneyRecord(id)
+ handleDeleteRecord(id)
}}
onRefreshData={() => {
- getMoneyRecords()
+ fetchMoneyRecords()
}}
/>
diff --git a/code/allapp/allapp-rn/src/app/auth/index.tsx b/code/allapp/allapp-rn/src/app/auth/index.tsx
index 9ea809f9..51d565cf 100644
--- a/code/allapp/allapp-rn/src/app/auth/index.tsx
+++ b/code/allapp/allapp-rn/src/app/auth/index.tsx
@@ -1,7 +1,7 @@
import { useEvent } from 'expo'
-// import ExpoQQ from 'expo-qq'
+import ExpoQQ from 'expo-qq'
import { useRouter } from 'expo-router'
-// import ExpoWeChat from 'expo-wechat'
+import ExpoWeChat from 'expo-wechat'
import { useEffect, useState } from 'react'
import { Image, Text, View } from 'react-native'
import { AButton, ACheckbox } from '@/components/common/ao'
@@ -23,167 +23,167 @@ export default function Auth() {
const router = useRouter()
const userStore = useUserStore()
- // const onLoginFinished = useEvent(ExpoQQ, 'onLoginFinished')
- // const onGetUserInfo = useEvent(ExpoQQ, 'onGetUserInfo')
- // const authResult = useEvent(ExpoWeChat, 'onAuthResult')
+ const onLoginFinished = useEvent(ExpoQQ, 'onLoginFinished')
+ const onGetUserInfo = useEvent(ExpoQQ, 'onGetUserInfo')
+ const authResult = useEvent(ExpoWeChat, 'onAuthResult')
- // async function onQQLogin() {
- // setLoading(true)
- // setForm(val => ({
- // ...val,
- // type: 1,
- // }))
- // await ExpoQQ.login(['get_user_info'])
- // }
+ async function onQQLogin() {
+ setLoading(true)
+ setForm(val => ({
+ ...val,
+ type: 1,
+ }))
+ await ExpoQQ.login(['get_user_info'])
+ }
- // async function onWeChatLogin() {
- // setLoading(true)
+ async function onWeChatLogin() {
+ setLoading(true)
- // // 检查微信是否安装
- // const isInstalled = await ExpoWeChat.isWXAppInstalled()
- // if (!isInstalled) {
- // toast.show({
- // title: onLoginFinished?.errorMessage || '请先安装微信',
- // })
- // setLoading(false)
- // return
- // }
+ // 检查微信是否安装
+ const isInstalled = await ExpoWeChat.isWXAppInstalled()
+ if (!isInstalled) {
+ toast.show({
+ title: onLoginFinished?.errorMessage || '请先安装微信',
+ })
+ setLoading(false)
+ return
+ }
- // setForm(val => ({
- // ...val,
- // type: 0,
- // }))
+ setForm(val => ({
+ ...val,
+ type: 0,
+ }))
- // ExpoWeChat.sendAuthRequest('snsapi_userinfo', 'state123')
- // }
+ ExpoWeChat.sendAuthRequest('snsapi_userinfo', 'state123')
+ }
- // useEffect(() => {
- // ExpoQQ.init('102826474', '')
- // ExpoWeChat.registerApp('wxdab3e21a1f7e392f', '')
- // }, [])
+ useEffect(() => {
+ ExpoQQ.init('102826474', '')
+ ExpoWeChat.registerApp('wxdab3e21a1f7e392f', '')
+ }, [])
- // useEffect(() => {
- // if (!onLoginFinished) {
- // return
- // }
+ useEffect(() => {
+ if (!onLoginFinished) {
+ return
+ }
- // if (!onLoginFinished.success) {
- // toast.show({
- // title: onLoginFinished?.errorMessage || '授权失败,请检查手机是否安装 QQ 或确认授权',
- // })
- // setLoading(false)
- // return
- // }
+ if (!onLoginFinished.success) {
+ toast.show({
+ title: onLoginFinished?.errorMessage || '授权失败,请检查手机是否安装 QQ 或确认授权',
+ })
+ setLoading(false)
+ return
+ }
- // const fetchUserInfo = async () => {
- // try {
- // const tokenInfo = await ExpoQQ.getLoginTokenInfo()
- // if (!tokenInfo.openId) {
- // toast.show({
- // title: tokenInfo?.errorMessage || '授权失败,请检查手机是否安装 QQ 或确认授权',
- // })
- // setLoading(false)
- // return
- // }
+ const fetchUserInfo = async () => {
+ try {
+ const tokenInfo = await ExpoQQ.getLoginTokenInfo()
+ if (!tokenInfo.openId) {
+ toast.show({
+ title: tokenInfo?.errorMessage || '授权失败,请检查手机是否安装 QQ 或确认授权',
+ })
+ setLoading(false)
+ return
+ }
- // setForm(val => ({
- // ...val,
- // openid: String(tokenInfo.openId),
- // }))
+ setForm(val => ({
+ ...val,
+ openid: String(tokenInfo.openId),
+ }))
- // await ExpoQQ.sendGetUserInfoReq()
- // }
- // catch (e) {
- // console.error('QQ 登录未完成', e)
- // setLoading(false)
- // }
- // }
+ await ExpoQQ.sendGetUserInfoReq()
+ }
+ catch (e) {
+ console.error('QQ 登录未完成', e)
+ setLoading(false)
+ }
+ }
- // fetchUserInfo()
- // }, [onLoginFinished])
+ fetchUserInfo()
+ }, [onLoginFinished])
- // // QQ登录
- // useEffect(() => {
- // const handleLogin = async () => {
- // if (!onGetUserInfo)
- // return
+ // QQ登录
+ useEffect(() => {
+ const handleLogin = async () => {
+ if (!onGetUserInfo)
+ return
- // try {
- // const loginRes = await loginQqApi({
- // openid: form.openid,
- // username: onGetUserInfo.nickname || '',
- // avatar: onGetUserInfo.figureurlQq_2 || onGetUserInfo.figureurl_2,
- // })
+ try {
+ const loginRes = await loginQqApi({
+ openid: form.openid,
+ username: onGetUserInfo.nickname || '',
+ avatar: onGetUserInfo.figureurlQq_2 || onGetUserInfo.figureurl_2,
+ })
- // if (loginRes.isSuccess) {
- // userStore.setUserInfo({
- // token: loginRes.data.token,
- // id: loginRes.data.userId,
- // username: loginRes.data.username,
- // avatar: loginRes.data.avatar,
- // })
+ if (loginRes.isSuccess) {
+ userStore.setUserInfo({
+ token: loginRes.data.token,
+ id: loginRes.data.userId,
+ username: loginRes.data.username,
+ avatar: loginRes.data.avatar,
+ })
- // console.log(loginRes.data.token)
+ console.log(loginRes.data.token)
- // router.push('/')
- // }
- // }
- // catch (err) {
- // console.error('登录接口出错', err)
- // }
- // finally {
- // setLoading(false)
- // }
- // }
+ router.push('/')
+ }
+ }
+ catch (err) {
+ console.error('登录接口出错', err)
+ }
+ finally {
+ setLoading(false)
+ }
+ }
- // handleLogin()
- // }, [onGetUserInfo])
+ handleLogin()
+ }, [onGetUserInfo])
- // // 微信登录
- // useEffect(() => {
- // if (!authResult)
- // return
+ // 微信登录
+ useEffect(() => {
+ if (!authResult)
+ return
- // const handleLogin = async () => {
- // if (authResult.errorCode === 0) {
- // try {
- // const loginRes = await loginWxApi({
- // code: authResult.code,
- // })
+ const handleLogin = async () => {
+ if (authResult.errorCode === 0) {
+ try {
+ const loginRes = await loginWxApi({
+ code: authResult.code,
+ })
- // if (loginRes.isSuccess) {
- // userStore.setUserInfo({
- // token: loginRes.data.token,
- // id: loginRes.data.userId,
- // username: loginRes.data.username,
- // avatar: loginRes.data.avatar,
- // })
+ if (loginRes.isSuccess) {
+ userStore.setUserInfo({
+ token: loginRes.data.token,
+ id: loginRes.data.userId,
+ username: loginRes.data.username,
+ avatar: loginRes.data.avatar,
+ })
- // router.push('/')
- // }
- // }
- // catch (err) {
- // console.error('登录接口出错', err)
- // }
- // finally {
- // setLoading(false)
- // }
- // }
- // else {
- // console.log('授权失败:', authResult.errorMessage)
- // setLoading(false)
- // }
- // }
+ router.push('/')
+ }
+ }
+ catch (err) {
+ console.error('登录接口出错', err)
+ }
+ finally {
+ setLoading(false)
+ }
+ }
+ else {
+ console.log('授权失败:', authResult.errorMessage)
+ setLoading(false)
+ }
+ }
- // handleLogin()
- // }, [authResult])
+ handleLogin()
+ }, [authResult])
function testLogin() {
// eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo3NjY3ODU5ODIxNjUwNjEsImlhdCI6MTc2OTM0ODI0Nn0.17ZNaHD3HSLM8dVn_JQK-gvsG9MKj47IRYV9D4xZkzs
userStore.setUserInfo({
- token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo3NjY3ODU5ODIxNjUwNjEsImlhdCI6MTc2OTM0ODI0Nn0.17ZNaHD3HSLM8dVn_JQK-gvsG9MKj47IRYV9D4xZkzs',
- id: 766785982165061,
+ token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo3Njc4NjM3NTU5MzE3MTcsImlhdCI6MTc2OTYwMzEzOX0.xfW-uyFBi799u4VJ-93A88c2CC8jwpYOPsALUuaIizg',
+ id: 767863755931717,
username: 'Zhang',
avatar: 'http://thirdqq.qlogo.cn/ek_qqapp/AQHVialeUibE42oV8RvTTVZ4tyRlPYeJrUibWTwtCPfV68E4rSzn9cw00GkXQ3QDTiawwhjoqQb7/100',
})
@@ -208,7 +208,7 @@ export default function Auth() {
- {/*
}
@@ -227,7 +227,7 @@ export default function Auth() {
onPress={onQQLogin}
>
QQ
- */}
+
({ icon: '', name: '' })
const [confirmDisabled, setConfirmDisabled] = useState(true)
const [confirmLoading, setConfirmLoading] = useState(false)
+ const flatListData = Object.entries(moneyCategoryStore.ICON_GROUPS)
+ const flatListData2 = Object.values(moneyCategoryStore.ICON_GROUPS).flat()
- const scrollRef = useRef(null)
- const iconPositions = useRef>({}) // 记录每个 icon 的 y 坐标
-
+ const flatListRef = useRef>(null)
// Drawer 打开/关闭控制
useEffect(() => {
setIsOpen(open)
@@ -47,6 +47,22 @@ export default function CreateCategory({
// 确认按钮状态
useEffect(() => {
setConfirmDisabled(!(form.name && form.name.length <= 5 && form.icon))
+
+ const itemIndex = flatListData2.findIndex(item => item === form.icon)
+ if (itemIndex === -1 || !flatListRef.current)
+ return
+
+ if (form.icon) {
+ setTimeout(() => {
+ if (flatListRef.current) {
+ flatListRef.current.scrollToIndex({
+ index: Math.floor(itemIndex / 5),
+ animated: true,
+ viewPosition: 0.5,
+ })
+ }
+ }, 0)
+ }
}, [form.name, form.icon])
// 编辑已有分类时填充数据
@@ -61,62 +77,55 @@ export default function CreateCategory({
onClose?.()
}
- // 缓存点击 Icon 的回调
- const handlePressIcon = useCallback(
- (icon: string) => {
- setForm(v => ({ ...v, icon }))
- },
- [setForm],
- )
-
- // Memo 化单个 IconItem,避免重复渲染
- const IconItem = useCallback(({ icon, selected }: { icon: string, selected: boolean }) => {
- return (
- handlePressIcon(icon)}
- >
-
-
-
-
- )
- }, [handlePressIcon])
-
- // Memo 化渲染每组 Icon 的组件
+ // 渲染每组 Icon
const renderGroup = useCallback(
({ item }: { item: [string, string[]] }) => {
const [groupName, icons] = item
+
return (
{groupName}
+
- {icons.map(icon => (
-
- ))}
+ {icons.map((icon) => {
+ const selected = form.icon === icon
+
+ return (
+
+ setForm(v => ({
+ ...v,
+ icon,
+ }))}
+ >
+
+
+
+
+ )
+ })}
)
},
- [IconItem, form.icon],
+ [form.icon],
)
- // 使用 useMemo 缓存 FlatList 的数据
- const flatListData = useMemo(() => Object.entries(moneyCategoryStore.ICON_GROUPS), [moneyCategoryStore.ICON_GROUPS])
-
return (
groupName}
renderItem={renderGroup}
+ getItemLayout={(data, index) => {
+ return { length: 80, offset: 80 * index, index }
+ }}
/>
)
diff --git a/code/allapp/allapp-rn/src/app/money/record/editor/index.tsx b/code/allapp/allapp-rn/src/app/money/record/editor/index.tsx
index a8f91f96..0e3ff730 100644
--- a/code/allapp/allapp-rn/src/app/money/record/editor/index.tsx
+++ b/code/allapp/allapp-rn/src/app/money/record/editor/index.tsx
@@ -88,13 +88,6 @@ export default function MoenyRecordEditor() {
record_time: moneyRecord.record_time,
}).then((res) => {
if (res.isSuccess) {
- const result: MoneyRecord = {
- ...moneyRecord,
- category_id: selectedCategory.id,
- }
-
- moneyRecordStore.updateMoneyRecord(result)
-
router.back()
}
}).catch((err) => {
@@ -110,13 +103,6 @@ export default function MoenyRecordEditor() {
})
.then((res) => {
if (res.isSuccess) {
- const result: MoneyRecord = {
- ...res.data,
- category_id: selectedCategory.id,
- }
-
- moneyRecordStore.addMoneyRecord(result)
-
router.back()
}
else {
diff --git a/code/allapp/allapp-rn/src/app/system/share/components/SpaceInvite.tsx b/code/allapp/allapp-rn/src/app/system/share/components/SpaceInvite.tsx
index 1eb226ca..5c26acda 100644
--- a/code/allapp/allapp-rn/src/app/system/share/components/SpaceInvite.tsx
+++ b/code/allapp/allapp-rn/src/app/system/share/components/SpaceInvite.tsx
@@ -1,4 +1,4 @@
-import type { SpaceUser } from '@/types/space/spaceUser'
+import type { SpaceUser } from '@/types/space/space'
import * as Clipboard from 'expo-clipboard'
import { useState } from 'react'
import { FlatList, TouchableHighlight, TouchableOpacity, View } from 'react-native'
@@ -10,7 +10,7 @@ import {
renderers,
} from 'react-native-popup-menu'
import QRCode from 'react-native-qrcode-svg'
-import { AButton, ADivider, LucideIcon } from '@/components/common/ao'
+import { AAvatar, AButton, ADivider, LucideIcon } from '@/components/common/ao'
import { AModal } from '@/components/common/ao/index'
import {
Accordion,
@@ -21,19 +21,14 @@ import {
AccordionTitleText,
AccordionTrigger,
} from '@/components/ui/accordion'
-import {
- Avatar,
- AvatarBadge,
- AvatarFallbackText,
-} from '@/components/ui/avatar'
+
import { Badge, BadgeText } from '@/components/ui/badge'
import { Heading } from '@/components/ui/heading'
import { HStack } from '@/components/ui/hstack'
import { ChevronDownIcon, ChevronUpIcon } from '@/components/ui/icon'
import { Text } from '@/components/ui/text'
import { VStack } from '@/components/ui/vstack'
-import { dissolveSpaceApi } from '@/request/api/space/space'
-import { exitSpaceApi, removeSpaceUserApi } from '@/request/api/space/spaceUser'
+import { dissolveSpaceApi, exitSpaceApi, removeSpaceUserApi } from '@/request/api/space/space'
import { useUserStore } from '@/store/user'
import { formatRelativeTime } from '@/utils/time'
import { toast } from '@/utils/toast'
@@ -86,7 +81,9 @@ export default function SpaceInvite({
}
if (modal.type === 'exit') {
// 退出
- exitSpaceApi({}).catch((err) => {
+ exitSpaceApi({
+ space_id: userSpace.id,
+ }).catch((err) => {
console.log(err)
})
}
@@ -96,6 +93,7 @@ export default function SpaceInvite({
}
// 移除
removeSpaceUserApi({
+ space_id: userSpace.id,
user_id: modal.userId,
}).catch((err) => {
console.log(err)
@@ -103,7 +101,9 @@ export default function SpaceInvite({
}
else {
// 解散
- dissolveSpaceApi({}).catch((err) => {
+ dissolveSpaceApi({
+ space_id: userSpace.id,
+ }).catch((err) => {
console.log(err)
})
}
@@ -177,7 +177,7 @@ export default function SpaceInvite({
@@ -198,26 +198,21 @@ export default function SpaceInvite({
item.user_id.toString()}
+ keyExtractor={item => item.id.toString()}
renderItem={({ item }) => (
-
-
- {item.username}
-
-
-
+
{item.username}
- {item.space_role === 0 && (
+ {item.role === 0 && (
创建者
)}
{
- userStore.userInfo?.id === item.user_id && (
+ userStore.userInfo?.id === item.id && (
我
@@ -226,7 +221,7 @@ export default function SpaceInvite({
)
}
- {formatRelativeTime(item.active_time)}
+ {formatRelativeTime(item.last_login_time)}
{userSpace?.role === 0 && (
@@ -253,7 +248,7 @@ export default function SpaceInvite({
},
}}
>
- {userSpace.role === 0 && userStore.userInfo?.id !== item.user_id && (
+ {userSpace.role === 0 && userStore.userInfo?.id !== item.id && (
diff --git a/code/allapp/allapp-rn/src/app/system/share/index.tsx b/code/allapp/allapp-rn/src/app/system/share/index.tsx
index 83b03466..b70d5dc3 100644
--- a/code/allapp/allapp-rn/src/app/system/share/index.tsx
+++ b/code/allapp/allapp-rn/src/app/system/share/index.tsx
@@ -1,10 +1,10 @@
-import type { SpaceUser } from '@/types/space/spaceUser'
+import type { SpaceUser } from '@/types/space/space'
import { useEffect, useState } from 'react'
import { View } from 'react-native'
import CustomHeader from '@/components/custom/Header'
-import { createSpaceApi } from '@/request/api/space/space'
-import { getUserSpaceApi, joinSpaceApi, listSpaceUsersApi } from '@/request/api/space/spaceUser'
+import { createSpaceApi, joinSpaceApi, listSpaceUsersApi } from '@/request/api/space/space'
import { useSpaceStore } from '@/store/space'
+import { useUserStore } from '@/store/user'
import JoinSpace from './components/JoinSpace'
import SpaceHome from './components/SpaceHome'
import SpaceInvite from './components/SpaceInvite'
@@ -12,71 +12,73 @@ import StepFade from './components/StepFade'
export default function PagerWithTab() {
const spaceStore = useSpaceStore()
+ const userStore = useUserStore()
+ const [headerTitle, setHeaderTitle] = useState('我的空间')
const [step, setStep] = useState<'join' | 'invite' | 'home'>('home')
const [spaceUsers, setSpaceUsers] = useState([])
- const fetchData = async () => {
- await Promise.all([
- getUserSpaceApi()
- .then((res) => {
- if (res.isSuccess) {
- if (res.data === null) {
- spaceStore.setUserSpace(null)
- setStep('home')
- }
- else {
- spaceStore.setUserSpace({
- space_id: res.data.space_id,
- space_name: res.data.space_name,
- role: res.data.role,
- invite_code: res.data.invite_code,
- })
- setStep('invite')
- }
- }
- else {
- // 提示
- }
- })
- .catch(err => console.error('getUserSpaceApi error:', err)),
-
- listSpaceUsersApi({})
- .then((res) => {
- if (res.isSuccess) {
- setSpaceUsers(res.data.users)
- }
- else {
- // 提示
- }
- })
- .catch(err => console.error('listSpaceUsersApi error:', err)),
- ])
+ // 封装获取空间用户列表并直接更新状态
+ const fetchSpaceUsers = async (spaceId: number) => {
+ try {
+ const res = await listSpaceUsersApi({ space_id: spaceId })
+ if (res.isSuccess) {
+ setSpaceUsers(res.data.users)
+ console.log(res.data.users)
+ }
+ else {
+ console.warn('获取空间用户失败')
+ setSpaceUsers([])
+ }
+ }
+ catch (err) {
+ console.error('listSpaceUsersApi error:', err)
+ setSpaceUsers([])
+ }
}
+ // 页面加载时判断并拉取用户列表
useEffect(() => {
- fetchData()
+ const loadSpaceUsers = () => {
+ if (spaceStore.userSpace !== null) {
+ setStep('invite')
+
+ fetchSpaceUsers(spaceStore.userSpace.id)
+ }
+ else {
+ setStep('home')
+ }
+ }
+
+ loadSpaceUsers()
}, [])
+ useEffect(() => {
+ if (spaceStore.userSpace) {
+ setHeaderTitle(spaceStore.userSpace.name || '我的空间')
+ }
+ else {
+ setHeaderTitle('我的空间')
+ }
+ }, [spaceStore.userSpace])
+
+ function getSpaceName() {
+ const username = userStore.userInfo?.username
+ return username ? `${username}的空间` : '我的空间'
+ }
+
function createSpace() {
- createSpaceApi({}).then((res) => {
+ createSpaceApi({
+ name: getSpaceName(),
+ }).then((res) => {
if (res.isSuccess) {
spaceStore.setUserSpace({
- space_id: res.data.id,
- space_name: '',
+ id: res.data.space_id,
+ name: getSpaceName(),
role: 0,
invite_code: res.data.invite_code,
})
- listSpaceUsersApi({})
- .then((res) => {
- if (res.isSuccess) {
- setSpaceUsers(res.data.users)
- }
- else {
- // 提示
- }
- })
- .catch(err => console.error('listSpaceUsersApi error:', err))
+ fetchSpaceUsers(res.data.space_id)
setStep('invite')
}
}).catch((err) => {
@@ -89,7 +91,14 @@ export default function PagerWithTab() {
invite_code: code,
}).then((res) => {
if (res.isSuccess) {
- fetchData()
+ spaceStore.setUserSpace({
+ id: res.data.space_id,
+ name: res.data.space_name,
+ invite_code: code,
+ role: 0,
+ })
+ setStep('invite')
+ fetchSpaceUsers(res.data.space_id)
}
}).catch((err) => {
console.log(err)
@@ -98,7 +107,7 @@ export default function PagerWithTab() {
return (
-
+
{
if (data.type === 'remove' && data.userId !== undefined) {
setSpaceUsers(prevUsers =>
- prevUsers.filter(user => user.user_id !== data.userId),
+ prevUsers.filter(user => user.id !== data.userId),
)
return
}
+
setStep('home')
- spaceStore.setUserSpace(null)
+ spaceStore.clear()
setSpaceUsers([])
}}
/>
diff --git a/code/allapp/allapp-rn/src/components/common/ao/Avatar.tsx b/code/allapp/allapp-rn/src/components/common/ao/Avatar.tsx
new file mode 100644
index 00000000..54cf134b
--- /dev/null
+++ b/code/allapp/allapp-rn/src/components/common/ao/Avatar.tsx
@@ -0,0 +1,52 @@
+import type { StyleProp, ViewStyle } from 'react-native'
+import React from 'react'
+import {
+ AvatarBadge,
+ AvatarFallbackText,
+ AvatarImage,
+ Avatar as NativeAvatar,
+} from '@/components/ui/avatar'
+
+interface AvatarProps {
+ username?: string
+ avatar?: string
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'
+ showBadge?: boolean
+ className?: string
+ style?: StyleProp
+ badgeClassName?: string
+ badgeStyle?: StyleProp
+}
+
+export const Avatar: React.FC = ({
+ username = '',
+ avatar,
+ size,
+ showBadge,
+ className = '',
+ style,
+ badgeClassName,
+ badgeStyle,
+}) => {
+ return (
+
+ {avatar
+ ? (
+
+ )
+ : (
+
+ {username[0] ?? ''}
+
+ )}
+
+ {showBadge && (
+
+ )}
+
+ )
+}
diff --git a/code/allapp/allapp-rn/src/components/common/ao/Drawer.tsx b/code/allapp/allapp-rn/src/components/common/ao/Drawer.tsx
index ddbea8c2..557d839e 100644
--- a/code/allapp/allapp-rn/src/components/common/ao/Drawer.tsx
+++ b/code/allapp/allapp-rn/src/components/common/ao/Drawer.tsx
@@ -2,7 +2,6 @@ import type { ReactNode } from 'react'
import type { DimensionValue, ViewStyle } from 'react-native'
import React, { useEffect, useMemo, useState } from 'react'
import { Dimensions, StyleSheet, Text, View } from 'react-native'
-import { Gesture, GestureDetector } from 'react-native-gesture-handler'
import Animated, {
interpolate,
runOnJS,
@@ -103,24 +102,6 @@ export default function Drawer({
opacity: interpolate(progress.value, [0, 1], [0, 0.45], 'clamp'),
}))
- /* ================= 手势(只给 bottom) ================= */
- const pan = Gesture.Pan()
- .onUpdate((e) => {
- if (menuPosition === 'bottom' && e.translationY > 0) {
- drag.value = e.translationY
- }
- })
- .onEnd(() => {
- if (menuPosition === 'bottom' && drag.value > 120) {
- progress.value = withTiming(0, { duration }, () => {
- drag.value = 0
- runOnJS(hideModal)()
- })
- }
- else {
- drag.value = withTiming(0)
- }
- })
if (!innerVisible)
return null
@@ -135,34 +116,32 @@ export default function Drawer({
{/* Drawer */}
-
-
- {showHeader && (
- header ?? (
-
- {title}
-
-
- )
- )}
+
+ {showHeader && (
+ header ?? (
+
+ {title}
+
+
+ )
+ )}
- {children}
-
-
+ {children}
+
)
diff --git a/code/allapp/allapp-rn/src/components/common/ao/index.ts b/code/allapp/allapp-rn/src/components/common/ao/index.ts
index 6f173337..78485e67 100644
--- a/code/allapp/allapp-rn/src/components/common/ao/index.ts
+++ b/code/allapp/allapp-rn/src/components/common/ao/index.ts
@@ -1,9 +1,10 @@
+import { Avatar } from './Avatar'
import Button from './Button'
import { Cell, CellGroup } from './Cell'
import Checkbox from './Checkbox'
import DatePicker from './DatePicker'
-import Divider from './Divider'
+import Divider from './Divider'
import Drawer from './Drawer'
import Form, { FormRef } from './Form'
import FormItem from './FormItem'
@@ -12,9 +13,11 @@ import ListItem from './ListItem'
import LucideIcon from './LucideIcon'
import Modal from './Modal'
import SegmentedTabs from './SegmentedTabs'
+
import Tab from './Tab'
export {
+ Avatar as AAvatar,
Button as AButton,
Cell as ACell,
CellGroup as ACellGroup,
diff --git a/code/allapp/allapp-rn/src/request/api/money/record.ts b/code/allapp/allapp-rn/src/request/api/money/record.ts
index a7812ab9..31261dcd 100644
--- a/code/allapp/allapp-rn/src/request/api/money/record.ts
+++ b/code/allapp/allapp-rn/src/request/api/money/record.ts
@@ -2,27 +2,27 @@ import type {
DeleteMoneyRecordParams,
InsertMoneyRecordParams,
InsertMoneyRecordResult,
- QueryMoneyRecordsParams,
- QueryMoneyRecordsResult,
+ ListMoneyRecordsParams,
+ ListMoneyRecordsResult,
UpdateMoneyRecordParams,
} from '@/types/money/record'
import alovaInstance from '../../index'
-const API_PREFIX = '/money/record'
+const API_PREFIX = '/money'
-export function queryMoneyRecordsApi(params: QueryMoneyRecordsParams) {
- return alovaInstance.Post>(`${API_PREFIX}/query`, params)
+export function listMoneyRecordsApi(params: ListMoneyRecordsParams) {
+ return alovaInstance.Post>(`${API_PREFIX}/records`, params)
}
export function insertMoneyRecordApi(params: InsertMoneyRecordParams) {
- return alovaInstance.Post>(`${API_PREFIX}/insert`, params)
+ return alovaInstance.Post>(`${API_PREFIX}/record/insert`, params)
}
export function updateMoneyRecordApi(params: UpdateMoneyRecordParams) {
- return alovaInstance.Post>(`${API_PREFIX}/update`, params)
+ return alovaInstance.Post>(`${API_PREFIX}/record/update`, params)
}
export function deleteMoneyRecordApi(params: DeleteMoneyRecordParams) {
- return alovaInstance.Post>(`${API_PREFIX}/delete`, params)
+ return alovaInstance.Post>(`${API_PREFIX}/record/delete`, params)
}
diff --git a/code/allapp/allapp-rn/src/request/api/user.ts b/code/allapp/allapp-rn/src/request/api/user.ts
index 90d8be6d..d2d90d06 100644
--- a/code/allapp/allapp-rn/src/request/api/user.ts
+++ b/code/allapp/allapp-rn/src/request/api/user.ts
@@ -4,5 +4,5 @@ import alovaInstance from '../index'
const API_PREFIX = '/user'
export function getUserSpaceApi() {
- return alovaInstance.Post>(`${API_PREFIX}/space`)
+ return alovaInstance.Get>(`${API_PREFIX}/space`)
}
diff --git a/code/allapp/allapp-rn/src/request/index.ts b/code/allapp/allapp-rn/src/request/index.ts
index e88b956b..1288fff7 100644
--- a/code/allapp/allapp-rn/src/request/index.ts
+++ b/code/allapp/allapp-rn/src/request/index.ts
@@ -1,10 +1,8 @@
import type { Method } from 'alova'
import type { AxiosError } from 'axios'
-import type { ListUserSpacesResult } from '@/types/user'
import { axiosRequestAdapter } from '@alova/adapter-axios'
import { createAlova } from 'alova'
import { useNavStore } from '@/store/navigation'
-import { useSpaceStore } from '@/store/space'
import { useUserStore } from '@/store/user'
import { toast } from '@/utils/toast'
@@ -12,8 +10,6 @@ enum HttpCode {
Success = 200,
Unauthorized = 401,
Fail = 500,
- ErrSpaceRequired = 501,
- ErrSpaceNoPermission = 502,
}
// 仅保留「无需登录」接口
@@ -52,29 +48,15 @@ const alovaInstance = createAlova({
useNavStore.getState().navigateToAuth()
return Promise.reject(new Error('登录已失效'))
}
- else if (resData.code === HttpCode.ErrSpaceRequired || resData.code === HttpCode.ErrSpaceNoPermission) {
- if (method.meta?.spaceRetried)
- return Promise.reject(new Error('space retry failed'))
-
- method.meta = { ...method.meta, spaceRetried: true }
-
- const res = await alovaInstance.Post>('/user/spaces').send()
- if (!res.isSuccess || res.data.spaces.length === 0)
- return Promise.reject(new Error('没有可用空间,请刷新后再试'))
-
- const defaultSpace = res.data.spaces[0]
-
- useSpaceStore.getState().setUserSpace(defaultSpace)
-
- method.config.headers['X-Space-Id'] = defaultSpace.id
- return method.send()
- }
return result
},
onError: (error: AxiosError) => {
const status = error.status
+ const config = error.config
+
+ console.warn(`[HTTP ${status}] ${config?.method?.toUpperCase()} ${config?.url}`)
switch (status) {
case 400:
@@ -125,12 +107,6 @@ const alovaInstance = createAlova({
// 注入 JWT
method.config.headers.Token = userStore.userInfo!.token
-
- // 注入 space 信息(如果存在)
- const userSpace = useSpaceStore.getState().userSpace
- if (userSpace) {
- method.config.headers['X-Space-Id'] = userSpace.id
- }
},
})
diff --git a/code/allapp/allapp-rn/src/store/app.ts b/code/allapp/allapp-rn/src/store/app.ts
index d1fa27a6..57ea034f 100644
--- a/code/allapp/allapp-rn/src/store/app.ts
+++ b/code/allapp/allapp-rn/src/store/app.ts
@@ -26,18 +26,20 @@ export const useAppStore = create((set, get) => ({
const moneyCategoryStore = useMoneyCategoryStore.getState()
const spaceStore = useSpaceStore.getState()
+ // 如果没登录,跳转到登录页,但不退出初始化
if (!userStore.isLoggedIn()) {
navStore.navigateToAuth()
- set({ ready: true })
return
}
try {
- // 分类初始化
+ // 初始化分类
await moneyCategoryStore.init()
// 获取空间信息
const res = await getUserSpaceApi()
+ console.log(res.data)
+
spaceStore.setUserSpace(res.data)
}
catch (err) {
@@ -47,6 +49,7 @@ export const useAppStore = create((set, get) => ({
// 初始化完成
set({ ready: true })
},
+
reset: () => {
set({ ready: false })
diff --git a/code/allapp/allapp-rn/src/store/moneyRecord.ts b/code/allapp/allapp-rn/src/store/moneyRecord.ts
index a6de6ca3..eff437d8 100644
--- a/code/allapp/allapp-rn/src/store/moneyRecord.ts
+++ b/code/allapp/allapp-rn/src/store/moneyRecord.ts
@@ -1,6 +1,5 @@
import type { MoneyRecord, MoneyRecordGroup } from '@/types/money/record'
import { create } from 'zustand'
-import { deleteMoneyRecordApi } from '@/request/api/money/record'
import { MoneyCategoryEnum } from '@/types/money/category'
import { add, sub } from '@/utils/math'
import { isInMonth } from '@/utils/time'
@@ -18,10 +17,6 @@ interface MoneyRecordStore {
setRecords: (records: MoneyRecord[], month: string) => void
setCurrentMonth: (month: string) => void
- addMoneyRecord: (data: MoneyRecord) => void
- updateMoneyRecord: (updated: MoneyRecord) => void
- deleteMoneyRecord: (id: number) => void
-
getMoneyRecordById: (id: number) => MoneyRecord | null
}
@@ -86,33 +81,6 @@ export const useMoneyRecordStore = create((set, get) => ({
setCurrentMonth: month => set({ currentMonth: month }),
- /* ---------------- actions ---------------- */
- addMoneyRecord: (data) => {
- if (!isInMonth(data.record_time, get().currentMonth))
- return
- const flatRecords = [...get().records.flatMap(g => g.records), data]
- const newGroups = recomputeGroups(flatRecords)
- set({ records: newGroups })
- },
-
- updateMoneyRecord: (updated) => {
- const flatRecords = get().records.flatMap(g =>
- g.records.map(r => r.id === updated.id ? updated : r),
- )
- // 如果更新后的记录不在当前月,则直接删除
- const filteredRecords = flatRecords.filter(r => isInMonth(r.record_time, get().currentMonth))
- const newGroups = recomputeGroups(filteredRecords)
- set({ records: newGroups })
- },
-
- deleteMoneyRecord: (id) => {
- const flatRecords = get().records.flatMap(g => g.records).filter(r => r.id !== id)
- const newGroups = recomputeGroups(flatRecords)
- set({ records: newGroups })
-
- deleteMoneyRecordApi({ id }).catch(console.error)
- },
-
getMoneyRecordById: (id) => {
for (const group of get().records) {
const record = group.records.find(r => r.id === id)
diff --git a/code/allapp/allapp-rn/src/store/space.ts b/code/allapp/allapp-rn/src/store/space.ts
index 128e5e1f..2d5540cf 100644
--- a/code/allapp/allapp-rn/src/store/space.ts
+++ b/code/allapp/allapp-rn/src/store/space.ts
@@ -6,7 +6,7 @@ interface SpaceState {
clear: () => void
}
-export const useSpaceStore = create(set => ({
+export const useSpaceStore = create((set, get) => ({
userSpace: null,
setUserSpace: space => set({ userSpace: space }),
clear: () => {
diff --git a/code/allapp/allapp-rn/src/types/money/record.ts b/code/allapp/allapp-rn/src/types/money/record.ts
index a9fab3aa..2ec85232 100644
--- a/code/allapp/allapp-rn/src/types/money/record.ts
+++ b/code/allapp/allapp-rn/src/types/money/record.ts
@@ -14,7 +14,7 @@ export interface MoneyRecord {
}
// 查询条件(请求参数)
-export interface QueryMoneyRecordsParams {
+export interface ListMoneyRecordsParams {
record_time: string
}
@@ -26,7 +26,7 @@ export interface MoneyRecordGroup {
records: MoneyRecord[]
}
-export interface QueryMoneyRecordsResult {
+export interface ListMoneyRecordsResult {
records: MoneyRecord[]
}
@@ -38,7 +38,7 @@ export interface InsertMoneyRecordParams {
record_time: string
}
-export interface InsertMoneyRecordResult extends MoneyRecord {}
+export interface InsertMoneyRecordResult {}
// 更新
export interface UpdateMoneyRecordParams {
diff --git a/code/allapp/allapp-rn/src/types/space/space.ts b/code/allapp/allapp-rn/src/types/space/space.ts
index 8aff7c68..48bb02ad 100644
--- a/code/allapp/allapp-rn/src/types/space/space.ts
+++ b/code/allapp/allapp-rn/src/types/space/space.ts
@@ -51,7 +51,7 @@ export interface UpdateSpaceUserRoleResult {
// 空间用户列表
export interface SpaceUser {
id: number
- name: number
+ username: string
avatar: string
role: number
last_login_time: number