129 lines
4.5 KiB
PHP
129 lines
4.5 KiB
PHP
<?php
|
|
|
|
namespace app\common\model;
|
|
use think\facade\Db;
|
|
|
|
/**
|
|
* ============================================================================
|
|
* 联课教育商城系统
|
|
* ============================================================================
|
|
* 版权所有 2022 刻羽互动科技有限公司,并保留所有权利。
|
|
* 网站地址: http://www.o1h.cn
|
|
* ----------------------------------------------------------------------------
|
|
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
|
|
* 不允许对程序代码以任何形式任何目的的再发布。
|
|
* ============================================================================
|
|
* 数据层模型
|
|
*/
|
|
class VerifyCode extends BaseModel {
|
|
|
|
public $page_info;
|
|
|
|
/**
|
|
* 获取验证码列表
|
|
* @access public
|
|
* @author o1h.cn
|
|
* @param type $condition
|
|
* @param type $pagesize
|
|
* @param type $order
|
|
* @return type
|
|
*/
|
|
public function getVerifyCodeList($condition, $pagesize = '', $order = 'verify_code_id desc') {
|
|
if ($pagesize) {
|
|
$result = Db::name('VerifyCode')->where($condition)->order($order)->paginate(['list_rows'=>$pagesize,'query' => request()->param()],false);
|
|
$this->page_info = $result;
|
|
return $result->items();
|
|
} else {
|
|
return Db::name('VerifyCode')->where($condition)->order($order)->limit(10)->select()->toArray();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 取得验证码信息
|
|
* @access public
|
|
* @author o1h.cn
|
|
* @param array $condition 检索条件
|
|
* @param string $fields 字段
|
|
* @param string $order 排序
|
|
* @return array
|
|
*/
|
|
public function getVerifyCodeInfo($condition = array(), $fields = '*') {
|
|
return Db::name('VerifyCode')->where($condition)->field($fields)->order('verify_code_id desc')->find();
|
|
}
|
|
|
|
/**
|
|
* 添加验证码信息
|
|
* @access public
|
|
* @author o1h.cn
|
|
* @param array $data 参数数据
|
|
* @return type
|
|
*/
|
|
public function addVerifyCode($data) {
|
|
return Db::name('VerifyCode')->insertGetId($data);
|
|
}
|
|
|
|
/**
|
|
* 编辑验证码信息
|
|
* @access public
|
|
* @author o1h.cn
|
|
* @param array $data 更新数据
|
|
* @param array $condition 条件
|
|
* @return bool
|
|
*/
|
|
public function editVerifyCode($data, $condition = array()) {
|
|
return Db::name('VerifyCode')->where($condition)->update($data);
|
|
}
|
|
|
|
/**
|
|
* 获取验证码数量
|
|
* @access public
|
|
* @author o1h.cn
|
|
* @param array $condition 条件
|
|
* @return bool
|
|
*/
|
|
public function getVerifyCodeCount($condition = array()) {
|
|
return Db::name('VerifyCode')->where($condition)->count();
|
|
}
|
|
|
|
/*
|
|
* 发送频率
|
|
* @param int $verify_code_type 验证码类型
|
|
* @param int $verify_code_user_type 用户类型
|
|
* @return array
|
|
*/
|
|
|
|
public function isVerifyCodeFrequant($verify_code_type, $verify_code_user_type) {
|
|
$ip = request()->ip();
|
|
if ($this->getVerifyCodeCount(array(array('verify_code_ip' ,'=', $ip), array('verify_code_type' ,'=', $verify_code_type), array('verify_code_user_type' ,'=', $verify_code_user_type), array('verify_code_add_time','>', TIMESTAMP - 60)))) {
|
|
return ds_callback(false, 'Resend in 60 s');
|
|
}
|
|
if ($this->getVerifyCodeCount(array(array('verify_code_ip' ,'=', $ip), array('verify_code_type' ,'=', $verify_code_type), array('verify_code_user_type' ,'=', $verify_code_user_type), array('verify_code_add_time','>', strtotime(date('Y-m-d 0:0:0'))))) > 15) {
|
|
return ds_callback(false, 'There are more than 15 verification codes today');
|
|
}
|
|
return ds_callback(true);
|
|
}
|
|
|
|
/*
|
|
* 生成验证码
|
|
* @param int $verify_code_type 验证码类型
|
|
* @param int $verify_code_user_type 用户类型
|
|
* @return array
|
|
*/
|
|
|
|
public function genVerifyCode($verify_code_type, $verify_code_user_type) {
|
|
$verify_code = str_pad(strval(rand(0, 999999)), 6, '0', STR_PAD_LEFT);
|
|
$i = 0;
|
|
while ($i < 100 && $this->getVerifyCodeCount(array(array('verify_code' ,'=', $verify_code), array('verify_code_type' ,'=', $verify_code_type), array('verify_code_user_type' ,'=', $verify_code_user_type), array('verify_code_add_time','>', TIMESTAMP - VERIFY_CODE_INVALIDE_MINUTE * 60)))) {
|
|
$verify_code = str_pad(strval(rand(0, 999999)), 6, '0', STR_PAD_LEFT);
|
|
$i++;
|
|
}
|
|
if ($i < 100) {
|
|
return $verify_code;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
?>
|