u
This commit is contained in:
1 parent
34240d2e16
commit
bf350d8d35
21 files changed
+670
-304
No files matched your search
@@ -5,6 +5,7 @@ import (
|
||||
"allapp/api/types"
|
||||
"allapp/db"
|
||||
"allapp/db/repo"
|
||||
"allapp/utils/errorx"
|
||||
"allapp/utils/pgtypex"
|
||||
"allapp/utils/requestx"
|
||||
"allapp/utils/responsex"
|
||||
@@ -57,6 +58,7 @@ func ListFinanceRecords(c fiber.Ctx) error {
|
||||
RecordTime: pgtypex.TimePtrToPgDate(startTime),
|
||||
RecordTime_2: pgtypex.TimePtrToPgDate(endTime),
|
||||
Column4: categoryId,
|
||||
Column5: dto.CategoryType,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
@@ -131,7 +133,7 @@ func UpdateFinanceRecord(c fiber.Ctx) error {
|
||||
}
|
||||
|
||||
err = db.Queries.UpdateFinanceRecord(c.Context(), repo.UpdateFinanceRecordParams{
|
||||
ID: uniqueid.NextId(),
|
||||
ID: dto.Id,
|
||||
CategoryID: dto.CategoryId,
|
||||
Amount: pgtypex.StringToNumeric(dto.Amount),
|
||||
Remark: pgtypex.StringToText(dto.Remark),
|
||||
@@ -161,3 +163,38 @@ func DeleteFinanceRecord(c fiber.Ctx) error {
|
||||
|
||||
return responsex.OK(c, nil)
|
||||
}
|
||||
|
||||
// GetFinanceRecordDetail 删除记账记录
|
||||
func GetFinanceRecordDetail(c fiber.Ctx) error {
|
||||
dto := new(types.FinanceRecordDetailDTO)
|
||||
if err := requestx.BindAndValidate(c, dto); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
recordDetail, err := db.Queries.GetFinanceRecordDetail(c.Context(), dto.Id)
|
||||
|
||||
if err != nil {
|
||||
if errorx.IsNotFound(err) {
|
||||
return responsex.Error(c, "该条记录不存在")
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
vo := new(types.FinanceRecordDetailVO)
|
||||
|
||||
vo.Id = recordDetail.ID
|
||||
vo.CategoryId = recordDetail.CategoryID
|
||||
vo.Amount = pgtypex.NumericToString(recordDetail.Amount)
|
||||
vo.RecordTime = pgtypex.DateToString(recordDetail.RecordTime)
|
||||
vo.Remark = pgtypex.TextToString(recordDetail.Remark)
|
||||
|
||||
vo.CreateTime = pgtypex.TimestamptzToMillis(recordDetail.CreateTime)
|
||||
vo.CreateMemberId = recordDetail.CreateBy
|
||||
vo.CreateMemberName = pgtypex.TextToString(recordDetail.CreateMemberName)
|
||||
|
||||
vo.UpdateTime = pgtypex.TimestamptzToMillis(recordDetail.UpdateTime)
|
||||
vo.UpdateMemberId = recordDetail.UpdateBy
|
||||
vo.UpdateMemberName = pgtypex.TextToString(recordDetail.UpdateMemberName)
|
||||
|
||||
return responsex.OK(c, vo)
|
||||
}
|
||||
@@ -52,6 +52,7 @@ func SetupRouters(app *fiber.App) {
|
||||
financeRouter.Post("/record/create", finance.CreateFinanceRecord)
|
||||
financeRouter.Post("/record/update", finance.UpdateFinanceRecord)
|
||||
financeRouter.Post("/record/delete", finance.DeleteFinanceRecord)
|
||||
financeRouter.Post("/record/detail", finance.GetFinanceRecordDetail)
|
||||
|
||||
// authGroup.Get("/user/profile", user.GetProfile)
|
||||
// spaceGroup.Get("/space/info", space.GetInfo)
|
||||
|
||||
@@ -63,9 +63,10 @@ type FinanceRecord struct {
|
||||
}
|
||||
|
||||
type ListFinanceRecordsDTO struct {
|
||||
StartTime string `json:"start_time"`
|
||||
EndTime string `json:"end_time"`
|
||||
CategoryId int64 `json:"category_id"`
|
||||
StartTime string `json:"start_time"`
|
||||
EndTime string `json:"end_time"`
|
||||
CategoryId int64 `json:"category_id"`
|
||||
CategoryType int16 `json:"category_type"`
|
||||
}
|
||||
|
||||
type ListFinanceRecordsVO struct {
|
||||
@@ -93,3 +94,21 @@ type UpdateFinanceRecordDTO struct {
|
||||
type DeleteFinanceRecordDTO struct {
|
||||
Id int64 `json:"id" validate:"required"`
|
||||
}
|
||||
|
||||
type FinanceRecordDetailDTO struct {
|
||||
Id int64 `json:"id" validate:"required"`
|
||||
}
|
||||
|
||||
type FinanceRecordDetailVO struct {
|
||||
Id int64 `json:"id"`
|
||||
CategoryId int64 `json:"category_id"`
|
||||
Amount string `json:"amount"`
|
||||
RecordTime string `json:"record_time"`
|
||||
Remark string `json:"remark"`
|
||||
CreateTime int64 `json:"create_time"`
|
||||
CreateMemberId int64 `json:"create_member_id"`
|
||||
CreateMemberName string `json:"create_member_name"`
|
||||
UpdateTime int64 `json:"update_time"`
|
||||
UpdateMemberId int64 `json:"update_member_id"`
|
||||
UpdateMemberName string `json:"update_member_name"`
|
||||
}
|
||||
@@ -4,16 +4,14 @@ SELECT
|
||||
su.member_name
|
||||
FROM finance_record fr
|
||||
LEFT JOIN space_member su
|
||||
ON fr.space_id = su.space_id
|
||||
AND fr.update_by = su.user_id
|
||||
ON fr.space_id = su.space_id AND fr.update_by = su.user_id
|
||||
LEFT JOIN finance_category_space fcs ON fr.category_id = fcs.id
|
||||
WHERE
|
||||
fr.space_id = $1
|
||||
AND fr.record_time >= $2
|
||||
AND fr.record_time < $3
|
||||
AND (
|
||||
$4 = 0
|
||||
OR fr.category_id = $4
|
||||
)
|
||||
AND fr.category_id = COALESCE(NULLIF($4::bigint, 0), fr.category_id)
|
||||
AND fcs.type = COALESCE(NULLIF($5::smallint, 0), fcs.type)
|
||||
ORDER BY
|
||||
fr.record_time DESC,
|
||||
fr.create_time DESC;
|
||||
@@ -37,4 +35,23 @@ WHERE id = $1;
|
||||
DELETE FROM finance_record WHERE id = $1;
|
||||
|
||||
-- name: DeleteFinanceRecordByCategoryId :exec
|
||||
DELETE FROM finance_record WHERE category_id = $1;
|
||||
DELETE FROM finance_record WHERE category_id = $1;
|
||||
|
||||
-- name: GetFinanceRecordDetail :one
|
||||
SELECT
|
||||
fr.id,
|
||||
fr.category_id,
|
||||
fr.amount,
|
||||
fr.record_time,
|
||||
fr.remark,
|
||||
fr.create_by,
|
||||
fr.create_time,
|
||||
cm.nickname AS create_member_name,
|
||||
fr.update_by,
|
||||
fr.update_time,
|
||||
um.nickname AS update_member_name
|
||||
FROM finance_record fr
|
||||
LEFT JOIN "user" cm ON cm.id = fr.create_by
|
||||
LEFT JOIN "user" um ON um.id = fr.update_by
|
||||
WHERE fr.id = $1
|
||||
LIMIT 1;
|
||||
@@ -29,6 +29,59 @@ func (q *Queries) DeleteFinanceRecordByCategoryId(ctx context.Context, categoryI
|
||||
return err
|
||||
}
|
||||
|
||||
const getFinanceRecordDetail = `-- name: GetFinanceRecordDetail :one
|
||||
SELECT
|
||||
fr.id,
|
||||
fr.category_id,
|
||||
fr.amount,
|
||||
fr.record_time,
|
||||
fr.remark,
|
||||
fr.create_by,
|
||||
fr.create_time,
|
||||
cm.nickname AS create_member_name,
|
||||
fr.update_by,
|
||||
fr.update_time,
|
||||
um.nickname AS update_member_name
|
||||
FROM finance_record fr
|
||||
LEFT JOIN "user" cm ON cm.id = fr.create_by
|
||||
LEFT JOIN "user" um ON um.id = fr.update_by
|
||||
WHERE fr.id = $1
|
||||
LIMIT 1
|
||||
`
|
||||
|
||||
type GetFinanceRecordDetailRow struct {
|
||||
ID int64
|
||||
CategoryID int64
|
||||
Amount pgtype.Numeric
|
||||
RecordTime pgtype.Date
|
||||
Remark pgtype.Text
|
||||
CreateBy int64
|
||||
CreateTime pgtype.Timestamptz
|
||||
CreateMemberName pgtype.Text
|
||||
UpdateBy int64
|
||||
UpdateTime pgtype.Timestamptz
|
||||
UpdateMemberName pgtype.Text
|
||||
}
|
||||
|
||||
func (q *Queries) GetFinanceRecordDetail(ctx context.Context, id int64) (GetFinanceRecordDetailRow, error) {
|
||||
row := q.db.QueryRow(ctx, getFinanceRecordDetail, id)
|
||||
var i GetFinanceRecordDetailRow
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.CategoryID,
|
||||
&i.Amount,
|
||||
&i.RecordTime,
|
||||
&i.Remark,
|
||||
&i.CreateBy,
|
||||
&i.CreateTime,
|
||||
&i.CreateMemberName,
|
||||
&i.UpdateBy,
|
||||
&i.UpdateTime,
|
||||
&i.UpdateMemberName,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const insertFinanceRecord = `-- name: InsertFinanceRecord :exec
|
||||
INSERT INTO finance_record(id,category_id,space_id,amount,record_time,remark,create_by,update_by,create_time,update_time)
|
||||
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,NOW(),NOW())
|
||||
@@ -65,16 +118,14 @@ SELECT
|
||||
su.member_name
|
||||
FROM finance_record fr
|
||||
LEFT JOIN space_member su
|
||||
ON fr.space_id = su.space_id
|
||||
AND fr.update_by = su.user_id
|
||||
ON fr.space_id = su.space_id AND fr.update_by = su.user_id
|
||||
LEFT JOIN finance_category_space fcs ON fr.category_id = fcs.id
|
||||
WHERE
|
||||
fr.space_id = $1
|
||||
AND fr.record_time >= $2
|
||||
AND fr.record_time < $3
|
||||
AND (
|
||||
$4 = 0
|
||||
OR fr.category_id = $4
|
||||
)
|
||||
AND fr.category_id = COALESCE(NULLIF($4::bigint, 0), fr.category_id)
|
||||
AND fcs.type = COALESCE(NULLIF($5::smallint, 0), fcs.type)
|
||||
ORDER BY
|
||||
fr.record_time DESC,
|
||||
fr.create_time DESC
|
||||
@@ -84,7 +135,8 @@ type ListFinanceRecordsParams struct {
|
||||
SpaceID int64
|
||||
RecordTime pgtype.Date
|
||||
RecordTime_2 pgtype.Date
|
||||
Column4 interface{}
|
||||
Column4 int64
|
||||
Column5 int16
|
||||
}
|
||||
|
||||
type ListFinanceRecordsRow struct {
|
||||
@@ -107,6 +159,7 @@ func (q *Queries) ListFinanceRecords(ctx context.Context, arg ListFinanceRecords
|
||||
arg.RecordTime,
|
||||
arg.RecordTime_2,
|
||||
arg.Column4,
|
||||
arg.Column5,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -110,4 +110,3 @@ create table finance_record
|
||||
update_by bigint not null,
|
||||
update_time timestamp with time zone default now()
|
||||
);
|
||||
|
||||
Reference in new issue
Block a user