* Date: 2018-4-3
*/
namespace app\home\model;
use think\Db;
use think\Model;
/**
* 下载文件
*/
class DownloadFile extends Model
{
//初始化
protected function initialize()
{
// 需要调用`Model`的`initialize`方法
parent::initialize();
}
/**
* 获取指定下载文章的所有文件
* @author 小虎哥 by 2018-4-3
*/
public function getDownFile($aids = [], $field = '*')
{
$where = [];
!empty($aids) && $where['aid'] = ['IN', $aids];
$result = Db::name('DownloadFile')->field($field)
->where($where)
->order('sort_order asc')
->select();
if (!empty($result)) {
$hidden = '';
$n = 1;
foreach ($result as $key => $val) {
$downurl = ROOT_DIR."/index.php?m=home&c=View&a=downfile&id={$val['file_id']}&uhash={$val['uhash']}";
$result[$key]['title'] = $val['file_name'];
if (!empty($val['extract_code'])) {
$result[$key]['title'] = '提取码:'.$val['extract_code'];
}
if (is_http_url($val['file_url'])) {
$result[$key]['server_name'] = !empty($val['server_name']) ? $val['server_name'] : "远程服务器({$n})";
} else {
$result[$key]['server_name'] = !empty($val['server_name']) ? $val['server_name'] : "本地服务器({$n})";
}
$n++;
$result[$key]['softlinks'] = $downurl;
$result[$key]['downurl'] = "javascript:ey_1563185380({$val['file_id']});";
$result[$key]['ey_1563185380'] = "
";
$result[$key]['ey_1563185376'] = $this->handleDownJs($hidden);
}
$result = group_same_key($result, 'aid');
}
return $result;
}
private function handleDownJs(&$hidden = '')
{
if (empty($hidden)) {
$hidden = <<
function ey_1563185380(file_id) {
var downurl = document.htm.getElementById("ey_file_list_"+file_id).value + "&_ajax=1";
//创建异步对象
var ajaxObj = new XMLHttpRequest();
ajaxObj.open("get", downurl, true);
ajaxObj.setRequestHeader("X-Requested-With","XMLHttpRequest");
ajaxObj.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//发送请求
ajaxObj.send();
ajaxObj.onreadystatechange = function () {
// 这步为判断服务器是否正确响应
if (ajaxObj.readyState == 4 && ajaxObj.status == 200) {
var json = ajaxObj.responseText;
var res = JSON.parse(json);
if (0 == res.code) {
// 没有登录
if (undefined != res.data.is_login && 0 == res.data.is_login) {
if (document.htm.getElementById('ey_login_id_v665117')) {
$('#ey_login_id_v665117').trigger('click');
} else {
window.location.href = res.data.url;
}
} else {
if (res.data.need_buy == 1){
DownloadBuyNow(res.data.url,res.data.aid);
return false;
}
if (!window.layer) {
alert(res.msg);
if (undefined != res.data.url && res.data.url) {
window.location.href = res.data.url;
}
} else {
if (undefined != res.data.url && '' != res.data.url) {
layer.confirm(res.msg, {
title: false
, icon: 5
, closeBtn: false
}, function (index) {
layer.close(index);
window.location.href = res.data.url;
});
} else {
layer.alert(res.msg, {icon: 5, title: false, closeBtn: false});
}
}
}
return false;
}else{
// document.htm.getElementById('form_file_list_'+file_id).submit();
window.location.href = res.url;
// window.open(res.url);
}
}
};
};
// 立即购买
function DownloadBuyNow(url,aid){
// 步骤一:创建异步对象
var ajax = new XMLHttpRequest();
//步骤二:设置请求的url参数,参数一是请求的类型,参数二是请求的url,可以带参数,动态的传递参数starName到服务端
ajax.open("post", url, true);
// 给头部添加ajax信息
ajax.setRequestHeader("X-Requested-With","XMLHttpRequest");
// 如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:
ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//步骤三:发送请求+数据
ajax.send('_ajax=1&aid=' + aid+'&return_url='+encodeURIComponent(window.location.href));
//步骤四:注册事件 onreadystatechange 状态改变就会调用
ajax.onreadystatechange = function () {
//步骤五 请求成功,处理逻辑
if (ajax.readyState==4 && ajax.status==200) {
var json = ajax.responseText;
var res = JSON.parse(json);
if (1 == res.code) {
layer.open({
type: 2,
title: '选择支付方式',
shadeClose: false,
maxmin: false, //开启最大化最小化按钮
skin: 'WeChatScanCode_20191120',
area: ['500px', '202px'],
content: res.url
});
} else {
if (res.data.url){
//登录
if (document.htm.getElementById('ey_login_id_v665117')) {
$('#ey_login_id_v665117').trigger('click');
} else {
if (-1 == res.data.url.indexOf('?')) {
window.location.href = res.data.url+'?referurl='+encodeURIComponent(window.location.href);
}else{
window.location.href = res.data.url+'&referurl='+encodeURIComponent(window.location.href);
}
}
}else{
if (!window.layer) {
alert(res.msg);
} else {
layer.alert(res.msg, {icon: 5, title: false, closeBtn: false});
}
}
}
}
};
}
EOF;
}
return $hidden;
}
}