From 03f1ab1a2f1e1de5866587080a8184a0d5c04d91 Mon Sep 17 00:00:00 2001 From: archer <545436317@qq.com> Date: Sun, 16 Apr 2023 23:26:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=82=80=E8=AF=B7=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/user.ts | 5 ++++- src/pages/api/user/register.ts | 5 +++-- src/pages/login/components/RegisterForm.tsx | 7 +++++-- src/service/models/user.ts | 21 +++++++++++++++++++++ src/types/mongoSchema.d.ts | 2 ++ 5 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/api/user.ts b/src/api/user.ts index bd78ddf68..f8a94a4f9 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -20,15 +20,18 @@ export const getTokenLogin = () => GET('/user/tokenLogin'); export const postRegister = ({ phone, password, - code + code, + inviterId }: { phone: string; code: string; password: string; + inviterId: string; }) => POST('/user/register', { phone, code, + inviterId, password: createHashPassword(password) }); diff --git a/src/pages/api/user/register.ts b/src/pages/api/user/register.ts index c7034c028..d3c35dd0e 100644 --- a/src/pages/api/user/register.ts +++ b/src/pages/api/user/register.ts @@ -9,7 +9,7 @@ import { UserAuthTypeEnum } from '@/constants/common'; export default async function handler(req: NextApiRequest, res: NextApiResponse) { try { - const { phone, code, password } = req.body; + const { phone, code, password, inviterId } = req.body; if (!phone || !code || !password) { throw new Error('缺少参数'); @@ -46,7 +46,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< const response = await User.create({ username: phone, - password + password, + inviterId }); // 根据 id 获取用户信息 diff --git a/src/pages/login/components/RegisterForm.tsx b/src/pages/login/components/RegisterForm.tsx index e98aa185c..4c6e2dc95 100644 --- a/src/pages/login/components/RegisterForm.tsx +++ b/src/pages/login/components/RegisterForm.tsx @@ -7,6 +7,7 @@ import { useSendCode } from '@/hooks/useSendCode'; import type { ResLogin } from '@/api/response/user'; import { useScreen } from '@/hooks/useScreen'; import { useToast } from '@/hooks/useToast'; +import { useRouter } from 'next/router'; interface Props { loginSuccess: (e: ResLogin) => void; @@ -21,6 +22,7 @@ interface RegisterType { } const RegisterForm = ({ setPageType, loginSuccess }: Props) => { + const { inviterId = '' } = useRouter().query as { inviterId: string }; const { toast } = useToast(); const { mediaLgMd } = useScreen(); const { @@ -54,7 +56,8 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => { await postRegister({ phone, code, - password + password, + inviterId }) ); toast({ @@ -69,7 +72,7 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => { } setRequesting(false); }, - [loginSuccess, toast] + [inviterId, loginSuccess, toast] ); return ( diff --git a/src/service/models/user.ts b/src/service/models/user.ts index f0b345ec8..25dde41c6 100644 --- a/src/service/models/user.ts +++ b/src/service/models/user.ts @@ -3,6 +3,9 @@ import { hashPassword } from '@/service/utils/tools'; import { PRICE_SCALE } from '@/constants/common'; import { UserModelSchema } from '@/types/mongoSchema'; const UserSchema = new Schema({ + email: { + type: String + }, username: { // 可以是手机/邮箱,新的验证都只用手机 type: String, @@ -17,9 +20,27 @@ const UserSchema = new Schema({ select: false }, balance: { + // 平台余额,不可提现 type: Number, default: 0.5 * PRICE_SCALE }, + inviterId: { + // 谁邀请注册的 + type: Schema.Types.ObjectId, + ref: 'user' + }, + promotion: { + rate: { + // 返现比例 + type: Number, + default: 15 + }, + amount: { + // 推广金额 + type: Number, + default: 0 + } + }, openaiKey: { type: String, default: '' diff --git a/src/types/mongoSchema.d.ts b/src/types/mongoSchema.d.ts index 6c049a7ff..bd44c84b7 100644 --- a/src/types/mongoSchema.d.ts +++ b/src/types/mongoSchema.d.ts @@ -14,6 +14,8 @@ export interface UserModelSchema { username: string; password: string; balance: number; + inviterId?: string; + promotionAmount: number; openaiKey: string; createTime: number; }