From 1dca74e01f5b3c191295f2e905335d3cf3176c03 Mon Sep 17 00:00:00 2001 From: ping <1017253325@qq.com> Date: Wed, 5 Nov 2025 15:31:47 +0800 Subject: [PATCH] update mailcode --- b/user/mobilecode.dspy | 74 ++++++++++++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 18 deletions(-) diff --git a/b/user/mobilecode.dspy b/b/user/mobilecode.dspy index 783802e..d309f9f 100644 --- a/b/user/mobilecode.dspy +++ b/b/user/mobilecode.dspy @@ -1,26 +1,64 @@ async def mobilecode(ns): - """登录发送短信验证码""" + """发送短信验证码,支持注册和登录筛选""" db = DBPools() async with db.sqlorContext('kboss') as sor: - type = 0 - ns['del_flg'] = '0' - userreacs = await sor.R('users', ns) - if len(userreacs) >= 1: - type += 1 - else: - userreacs = await sor.R('users', {'mobile': ns['username'], 'del_flg': '0'}) - if len(userreacs) >= 1: - type += 1 - if type >= 1: - code = await generate_vcode() - nss = await send_vcode(userreacs[0]['mobile'], '用户注册登录验证', {'SMSvCode': code.get('vcode')}) - # return {'1':nss} - if nss: - return {'status': True, 'msg': '发送成功', 'codeid': code.get('id')} + # 获取操作类型:register 或 login + action_type = ns.get('action_type') # register 或 login + + # 通过手机号查找用户 + mobile = ns.get('mobile') + if not mobile: + return {'status': False, 'msg': '手机号不能为空'} + + userreacs = await sor.R('users', {'mobile': mobile, 'del_flg': '0'}) + + # 注册逻辑:检查手机号是否已存在 + if action_type == 'register': + if len(userreacs) >= 1: + return {'status': False, 'msg': '手机号已注册,请直接登录'} else: - return {'status': False, 'msg': '发送失败'} + # 注册时手机号不存在,可以发送验证码 + code = await generate_vcode() + nss = await send_vcode(mobile, '用户注册验证', {'SMSvCode': code.get('vcode')}) + if nss: + return {'status': True, 'msg': '注册验证码发送成功', 'codeid': code.get('id')} + else: + return {'status': False, 'msg': '发送失败'} + + # 登录逻辑:检查手机号是否存在 + elif action_type == 'login': + if len(userreacs) >= 1: + # 登录时手机号存在,可以发送验证码 + code = await generate_vcode() + nss = await send_vcode(userreacs[0]['mobile'], '用户登录验证', {'SMSvCode': code.get('vcode')}) + if nss: + return {'status': True, 'msg': '登录验证码发送成功', 'codeid': code.get('id')} + else: + return {'status': False, 'msg': '发送失败'} + else: + return {'status': False, 'action': 'redirect', 'msg': '用户未注册, 请到注册页面注册'} + + # 原有逻辑:如果没有指定action_type,保持原有逻辑 else: - return {'status': False, 'action': 'redirect', 'msg': '用户未注册, 请到注册页面注册'} + type = 0 + ns['del_flg'] = '0' + userreacs = await sor.R('users', ns) + if len(userreacs) >= 1: + type += 1 + else: + userreacs = await sor.R('users', {'mobile': ns['username'], 'del_flg': '0'}) + if len(userreacs) >= 1: + type += 1 + if type >= 1: + code = await generate_vcode() + nss = await send_vcode(userreacs[0]['mobile'], '用户注册登录验证', {'SMSvCode': code.get('vcode')}) + # return {'1':nss} + if nss: + return {'status': True, 'msg': '发送成功', 'codeid': code.get('id')} + else: + return {'status': False, 'msg': '发送失败'} + else: + return {'status': False, 'action': 'redirect', 'msg': '用户未注册, 请到注册页面注册'} ret = await mobilecode(params_kw)