This commit is contained in:
oneao committed 2026-02-25 17:31:09 +08:00
1 parent 835958886e
commit d04d22723b
155 files changed
+543 -9793

No files matched your search

@@ -0,0 +1,110 @@
-- name: ListMoneyRecords :many
SELECT
mr.*,
u.username AS username
FROM money_record mr
LEFT JOIN space_member 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 :exec
INSERT INTO money_record (
id,
category_id,
user_id,
amount,
remark,
record_time,
create_time,
update_time
) VALUES (
$1, $2, $3, $4, $5,$6,NOW(),NOW()
);
-- name: GetMoneyRecordById :one
SELECT * FROM money_record WHERE id = $1;
-- name: UpdateMoneyRecord :exec
UPDATE money_record
SET
category_id = $2,
amount = $3,
remark = $4,
record_time = $5,
update_time = NOW()
WHERE id = $1
RETURNING *;
-- name: DeleteMoneyRecord :exec
DELETE FROM money_record WHERE id = $1;
-- name: DeleteMoneyRecordByCategoryId :exec
DELETE FROM money_record WHERE user_id = $1 AND category_id = $2;
-- 折线图:按天、月、年汇总金额
-- name: ListMoneyRecordsByLineAnalysis :many
SELECT
CASE
WHEN $1 = 0 THEN to_char(mr.record_time, 'DD') -- 日分析,转换为文本
WHEN $1 = 1 THEN to_char(mr.record_time, 'MM') -- 月分析,转换为文本
WHEN $1 = 2 THEN to_char(mr.record_time, 'YYYY') -- 年分析,转换为文本
END AS period,
SUM(mr.amount)::DECIMAL AS total_amount
FROM
money_record mr
LEFT JOIN
money_user_category muc ON mr.category_id = muc.id -- 连接 money_user_category 获取 type
LEFT JOIN
space_member su ON su.user_id = $2 -- 连接 space_member 表,查找该用户在空间中的信息
LEFT JOIN
space s ON s.id = su.space_id -- 连接 space 表,获取空间信息
WHERE
(
(su.user_id IS NOT NULL) -- 用户在空间,查询该空间内所有人的数据
OR (mr.user_id = $1) -- 用户不在空间,查询该用户个人的账本数据
)
AND mr.record_time BETWEEN $3 AND $4 -- 时间范围
AND muc.type = $5 -- 收入或支出类型
GROUP BY
period
ORDER BY
period;
-- 饼图:按类别汇总金额
-- name: ListMoneyRecordsByPieAnalysis :many
SELECT
muc.name,
SUM(mr.amount)::DECIMAL AS total_amount
FROM
money_record mr
LEFT JOIN
money_user_category muc ON mr.category_id = muc.id
LEFT JOIN
space_member su ON su.user_id = $1 -- 连接 space_member 表,查找该用户在空间中的信息
LEFT JOIN
space s ON s.id = su.space_id -- 连接 space 表,获取空间信息
WHERE
(
(su.user_id IS NOT NULL) -- 用户在空间,查询该空间内所有人的数据
OR (mr.user_id = $1) -- 用户不在空间,查询该用户个人的账本数据
)
AND mr.record_time BETWEEN $2 AND $3 -- 时间范围
AND muc.type = $4 -- 收入或支出类型
GROUP BY
muc.name
ORDER BY
total_amount DESC;
@@ -0,0 +1,2 @@
-- name: ListMoneySysCategory :many
SELECT * FROM money_sys_category;
@@ -0,0 +1,30 @@
-- name: BatchInsertMoneyUserCategories :copyfrom
INSERT INTO money_user_category (id, user_id, name, icon, type, sort_number)
VALUES ($1, $2, $3, $4, $5, $6);
-- name: FindUserMoneyCategoriesByUserID :many
SELECT *
FROM money_user_category
WHERE user_id = $1;
-- name: DeleteMoneyCategoryById :exec
DELETE FROM money_user_category
WHERE id = $1;
-- name: BatchUpdateMoneyCategorySort :batchexec
UPDATE money_user_category
SET sort_number = $2
WHERE id = $1;
-- name: DeleteMoneyCategoryByUserId :exec
DELETE FROM money_user_category
WHERE user_id = $1;
-- name: InsertMoneyUserCategory :exec
INSERT INTO money_user_category (id, user_id, name, icon, type, sort_number,create_time,update_time)
VALUES ($1, $2, $3, $4, $5, $6,NOW(),NOW());
-- name: UpdateMoneyCategory :exec
UPDATE money_user_category
SET icon = $2,name = $3,update_time = NOW()
WHERE id = $1;
@@ -0,0 +1,26 @@
-- 新增分享空间
-- name: InsertSpace :exec
INSERT INTO space (
id,name,invite_code,create_time,update_time
) VALUES ($1,$2,$3,NOW(),NOW());
-- 删除分享空间
-- name: DeleteSpace :exec
DELETE FROM space WHERE id = $1;
-- 根据id获取分享空间信息
-- name: GetSpaceById :one
SELECT * FROM space WHERE id = $1;
-- 查询用户所在的空间信息
-- name: GetSpaceByUserId :one
SELECT s.*, m.role
FROM space s
JOIN space_member m
ON s.id = m.space_id
WHERE m.user_id = $1;
-- 根据邀请码查询空间
-- name: FindSpaceByInviteCode :one
SELECT * FROM space WHERE invite_code = $1;
@@ -0,0 +1,44 @@
-- 插入空间用户
-- name: InsertSpaceMember :exec
INSERT INTO space_member(id,space_id,user_id,role,join_time)
VALUES ($1,$2,$3,$4,NOW());
-- name: ListSpaceMembers :many
SELECT
u.id AS user_id,
u.username AS user_name,
u.avatar AS user_avatar,
u.last_login_time AS last_login_time,
su.role
FROM space_member su
INNER JOIN "user" u ON su.user_id = u.id
WHERE su.space_id = $1
ORDER BY su.role DESC, u.username ASC;
-- 获取空间用户
-- name: GetSpaceMember :one
SELECT *
FROM space_member
WHERE user_id = $1;
-- 删除某个用户在所有空间的关系
-- name: DeleteSpaceMemberByUserID :exec
DELETE FROM space_member
WHERE user_id = $1;
-- 删除某个用户在指定空间中的关系
-- name: DeleteSpaceMemberBySpaceIDAndUserID :exec
DELETE FROM space_member
WHERE space_id = $1
AND user_id = $2;
-- 删除某个空间下的所有用户
-- name: DeleteSpaceMembersBySpaceID :exec
DELETE FROM space_member
WHERE space_id = $1;
-- 修改角色
-- name: UpdateSpaceMemberRole :exec
UPDATE space_member
SET role = $1
WHERE user_id = $2 AND space_id = $3;
@@ -0,0 +1,32 @@
-- name: FindUserByOpenID :one
SELECT
u.id AS user_id,
u.username,
u.avatar,
u.status,
o.type AS login_type,
o.openid
FROM user_oauth o
JOIN "user" u ON u.id = o.user_id
WHERE o.openid = $1
AND o.type = $2
LIMIT 1;
-- name: InsertUser :exec
INSERT INTO "user" (
id,
username,
avatar,
status,
create_time,
update_time,
last_login_time
) VALUES (
$1, $2, $3,$4, NOW(), NOW(),now()
)
RETURNING id;
-- name: UpdateUserLastLoginTime :exec
UPDATE "user"
SET last_login_time = NOW()
WHERE id = $1;
@@ -0,0 +1,13 @@
-- name: InsertUserOAuth :exec
INSERT INTO user_oauth (
id,
user_id,
type,
openid,
create_time,
update_time
) VALUES (
$1, $2, $3, $4, NOW(), NOW()
);