Files
zzp-server/app/api/validate/UserValidate.php
2026-01-19 14:19:22 +08:00

203 lines
4.9 KiB
PHP

<?php
namespace app\api\validate;
use app\common\validate\BaseValidate;
use app\common\model\user\{User,UserInfo,UserSigninRecord};
/**
* 用户验证器
* Class UserValidate
* @package app\shopapi\validate
*/
class UserValidate extends BaseValidate
{
protected $rule = [
'code' => 'require',
'card_name' => 'require|length:2,20',
'card_num' => 'require|length:6,32|checkCardNum',
'signin' => 'checkSignin',
'start' => 'checkMineStart',
'receive' => 'checkMineReceive',
];
protected $message = [
'code.require' => 'network.parameterAbnormality',//参数缺失
'card_name.require' => 'network.parameterAbnormality',//参数缺失
'card_name.length' => 'auth.realNameError',//请输入正确的姓名
'card_num.require' => 'network.parameterAbnormality',//参数缺失
'card_num.length' => 'auth.realNumError',//请输入正确的证件号
];
/**
* @notes 绑定/变更 手机号
* @return UserValidate
* @author BD
* @date 2023/9/21 19:15
*/
public function sceneBindMobile()
{
return $this->only(['mobile', 'code']);
}
/**
* @notes Google Authenticator校验
* @return UserValidate
* @author BD
* @date 2023/9/21 19:15
*/
public function sceneVerifyGoogle()
{
return $this->only(['code']);
}
/**
* @notes 邮箱校验
* @return UserValidate
* @author BD
* @date 2023/9/21 19:15
*/
public function sceneVerifyEmail()
{
return $this->only(['code']);
}
/**
* @notes 实名认证
* @return UserValidate
* @author BD
* @date 2023/9/21 19:15
*/
public function sceneVerifyRealname()
{
return $this->only(['card_name','card_num']);
}
/**
* @notes 签到
* @return UserValidate
* @author BD
* @date 2024/9/21 19:15
*/
public function sceneSignin()
{
return $this->only(['signin']);
}
/**
* @notes 矿机 启动
* @return UserValidate
* @author BD
* @date 2024/9/21 19:15
*/
public function sceneMineStart()
{
return $this->only(['start']);
}
/**
* @notes 矿机 收益
* @return UserValidate
* @author BD
* @date 2024/9/21 19:15
*/
public function sceneMineReceive()
{
return $this->only(['receive']);
}
/**
* @notes 校验卡号
* @param $num
* @param $rule
* @param $data
* @return bool|string
* @author BD
* @date 2023/9/21 19:15
*/
protected function checkCardNum($num, $rule, $data)
{
$userInfo = UserInfo::where(['user_id' => $data['user_id']])->findOrEmpty();
if($userInfo->isEmpty()) {
return 'network.parameterAbnormality';
}
if($userInfo['auth_card'] != 0 && $userInfo['auth_card'] != 3) {
return 'network.parameterAbnormality';
}
//查询证件照
if (!isset($data['card_img1'])||!isset($data['card_img2'])||!isset($data['card_img3'])) {
return 'network.parameterAbnormality';
}
//判断是否绑定过
$info_t = UserInfo::where(['card_num' => $data['card_num']])->findOrEmpty();
if(!$info_t->isEmpty()) {
return 'auth.realNumExited';//该证件已使用过
}
return true;
}
/**
* @notes 校验签到
* @param $signin
* @param $rule
* @param $data
* @return bool|string
* @author BD
* @date 2024/9/21 19:15
*/
protected function checkSignin($signin, $rule, $data)
{
//判断是否签到
$todayStart = strtotime("today midnight");
$sign_count = UserSigninRecord::where(['user_id' => $data['user_id']])->where("create_time > $todayStart")->count();
if($sign_count > 0) {
return 'network.parameterAbnormality';
}
return true;
}
/**
* @notes 校验矿机 启动
* @param $start
* @param $rule
* @param $data
* @return bool|string
* @author BD
* @date 2024/9/21 19:15
*/
protected function checkMineStart($start, $rule, $data)
{
$user = User::where(['id' => $data['user_id']])->findOrEmpty();
if($user['mine_status'] != 0) {
return 'network.parameterAbnormality';
}
return true;
}
/**
* @notes 校验矿机 收益
* @param $receive
* @param $rule
* @param $data
* @return bool|string
* @author BD
* @date 2024/9/21 19:15
*/
protected function checkMineReceive($receive, $rule, $data)
{
$user = User::where(['id' => $data['user_id']])->findOrEmpty();
if($user['mine_status'] != 2) {
return 'network.parameterAbnormality';
}
return true;
}
}