添加找回支付密码

This commit is contained in:
wangxiaowei 2024-08-29 15:43:32 +08:00
parent 7a21820688
commit 2687f8ae40
3 changed files with 129 additions and 1 deletions

@ -0,0 +1,24 @@
<?php
namespace app\api\controller;
use app\api\logic\UserLogic;
use app\api\validate\PayPasswordValidate;
use app\common\basics\Api;
use app\common\enum\NoticeEnum;
use app\common\server\JsonServer;
class PayPassword extends Api
{
public function forget()
{
$post = $this->request->post();
$post['message_key'] = NoticeEnum::GET_BACK_MOBILE_NOTICE;
(new PayPasswordValidate())->goCheck('', $post);
$result = UserLogic::resetPayPassword($post);
if (false === $result) {
return JsonServer::error(UserLogic::getError());
}
return JsonServer::success('修改成功', $result);
}
}

@ -22,7 +22,6 @@ use app\common\server\WeChatServer;
use EasyWeChat\Factory;
use EasyWeChat\Kernel\Exceptions\Exception;
use think\facade\Db;
use app\api\logic\BillionsLogic;
class UserLogic extends Logic
{
@ -613,4 +612,31 @@ class UserLogic extends Logic
return count($valid_array);
}
public static function resetPayPassword($post)
{
try {
$account = User::where(['mobile' => $post['mobile'], 'del' => 0])
->find();
if (!$account) {
throw new \Exception('账号不存在');
}
//更新密码
$pay_password = create_password($post['pay_password'], $account['salt']);//生成密码
if ($account['pay_password'] == $pay_password) {
throw new \Exception('密码未改动');
}
$data = [
'pay_password' => $pay_password,
'update_time' => time(),
];
User::where(['id' => $account['id'], 'del' => 0])
->update($data);
return ['flag' => true];
} catch (\Exception $e) {
self::$error = $e->getMessage();
return false;
}
}
}

@ -0,0 +1,78 @@
<?php
// +----------------------------------------------------------------------
// | likeshop开源商城系统
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | gitee下载:https://gitee.com/likeshop_gitee
// | github下载:https://github.com/likeshop-github
// | 访问官网:https://www.likeshop.cn
// | 访问社区:https://home.likeshop.cn
// | 访问手册:http://doc.likeshop.cn
// | 微信公众号:likeshop技术社区
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
// | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
// | 禁止对系统程序代码以任何目的,任何形式的再发布
// | likeshop团队版权所有并拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeshop.cn.team
// +----------------------------------------------------------------------
namespace app\api\validate;
use app\common\basics\Validate;
use app\common\logic\SmsLogic;
use Closure;
/**
* Class LoginPasswordValidate
* @package app\api\validate
*/
class PayPasswordValidate extends Validate
{
protected $rule = [
'mobile' => 'require|mobile',
'password' => 'require|confirm:password|checkPassword',
'repassword' => 'require|confirm:password|checkPassword',
'code' => 'require|checkCode',
];
protected $message = [
'mobile.require' => '请输入手机号',
'password.require' => '请输入密码',
'repassword.require' => '请再次输入密码',
'repassword.confirm' => '两次密码输入不一致',
'code.require' => '请输入验证码',
'mobile.mobile' => '非有效手机号码'
];
/**
* @notes 验证码
* @param $value
* @param $rule
* @param $data
* @return array|bool|string
* @author suny
* @date 2021/7/13 6:29 下午
*/
public static function checkCode($value, $rule, $data)
{
$res = SmsLogic::check($data['message_key'], $data['mobile'], $value);
if (false === $res) {
return SmsLogic::getError();
}
return true;
}
public static function checkPassword($value, $rule, $data)
{
if (!is_numeric($value)) {
return '密码类型错误';
}
if (strlen($value) != 6) {
return '密码长度需要满足6位';
}
}
}