|
Server : Apache System : Linux iZ6xhqomji47p1Z 5.10.134-15.al8.x86_64 #1 SMP Thu Jul 20 00:44:04 CST 2023 x86_64 User : www ( 1000) PHP Version : 8.1.30 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv Directory : /www/wwwroot/fsjlkj.cn/application/user/controller/ |
<?php
/**
* 易优CMS
* ============================================================================
* 版权所有 2016-2028 海南赞赞网络科技有限公司,并保留所有权利。
* 网站地址: http://www.eyoucms.com
* ----------------------------------------------------------------------------
* 如果商业用途务必到官方购买正版授权, 以免引起不必要的法律纠纷.
* ============================================================================
* Author: 陈风任 <491085389@qq.com>
* Date: 2019-1-25
*/
namespace app\user\controller;
use think\Page;
use think\Db;
use think\Config;
use think\Cookie;
use think\Request;
class Media extends Base
{
public function _initialize()
{
parent::_initialize();
$this->users_db = Db::name('users');
$this->media_order_db = Db::name('media_order');
$this->media_play_record_db = Db::name('media_play_record');
$functionLogic = new \app\common\logic\FunctionLogic;
$functionLogic->validate_authorfile(1.5);
}
// 视频订单列表页
/*
public function index()
{
// 定义数组
$list = [];
$condition = [
'a.lang' => $this->home_lang, // 多语言
'a.users_id' => $this->users_id
];
// 应用搜索条件
$order_code = input('order_code/s');
if (!empty($order_code)) $condition['a.order_code'] = ['LIKE', "%{$order_code}%"];
// 订单状态搜索
$order_status = input('order_status/s');
$this->assign('order_status', $order_status);
if (!empty($order_status)) {
if (-1 == $order_status) $order_status = 0;
$condition['a.order_status'] = $order_status;
}
// 支付类型
$PayMethod = Config::get('global.pay_method_arr');
// 分页
$count = $this->media_order_db->alias('a')->where($condition)->count();
$Page = new Page($count, config('paginate.list_rows'));
$show = $Page->show();
$this->assign('page', $show);
// 数据查询
$list = $this->media_order_db->where($condition)
->field('a.*, b.username')
->alias('a')
->join('__USERS__ b', 'a.users_id = b.users_id', 'LEFT')
->order('a.order_id desc')
->limit($Page->firstRow.','.$Page->listRows)
->select();
$array_new = get_archives_data($list, 'product_id');
// 订单处理
foreach ($list as $key => $value) {
if (!empty($value['order_status']) && 1 == $value['order_status']) {
$list[$key]['OrderStatusName'] = '已完成';
} else {
$list[$key]['OrderStatusName'] = '待付款';
// 支付结束后返回的URL
$ReturnUrl = !empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : url('user/Media/index');
cookie($this->users_id . '_' . $value['product_id'] . '_EyouMediaViewUrl', $ReturnUrl);
// 付款地址处理,对ID和订单号加密,拼装url路径
$Paydata = [
'type' => 8,
'order_id' => $value['order_id'],
'order_code' => $value['order_code']
];
// 先 json_encode 后 md5 加密信息
$Paystr = md5(json_encode($Paydata));
// 清除之前的 cookie
Cookie::delete($Paystr);
// 存入 cookie
cookie($Paystr, $Paydata);
// 跳转链接
$list[$key]['PaymentUrl'] = urldecode(url('user/Pay/pay_recharge_detail',['paystr'=>$Paystr]));
}
if (!empty($value['pay_name'])) {
$list[$key]['pay_name'] = !empty($PayMethod[$value['pay_name']]) ? $PayMethod[$value['pay_name']] : '第三方支付';
}
$arcurl = '';
$vars = !empty($array_new[$value['product_id']]) ? $array_new[$value['product_id']] : [];
if (!empty($vars)) {
$arcurl = urldecode(arcurl('home/Media/view', $vars));
}
$list[$key]['arcurl'] = $arcurl;
}
// 订单列表
$this->assign('list', $list);
// 订单数量查询
$Where = [
'users_id' => $this->users_id,
'lang' => $this->home_lang,
'order_status' => 0
];
$PendingPayment = $this->media_order_db->where($Where)->count();
// 待付款
$this->assign('PendingPayment', $PendingPayment);
$Where['order_status'] = 1;
$Completed = $this->media_order_db->where($Where)->count();
// 已付款
$this->assign('Completed', $Completed);
// 搜索处理
$hidden = '';
$ey_config = config('ey_config'); // URL模式
if (2 == $ey_config['seo_pseudo'] || (1 == $ey_config['seo_pseudo'] && 1 == $ey_config['seo_dynamic_format'])) {
$hidden .= '<input type="hidden" name="m" value="user" />';
$hidden .= '<input type="hidden" name="c" value="Media" />';
$hidden .= '<input type="hidden" name="a" value="index" />';
$lang = Request::instance()->param('lang/s');
!empty($lang) && $hidden .= '<input type="hidden" name="lang" value="'.$lang.'" />';
}
// 搜索的URL
$searchurl = url('user/Media/index');
$search = array(
'action' => $searchurl,
'hidden' => $hidden,
);
$this->assign('search', $search);
return $this->fetch('users/media_index');
}
*/
/**
* 播放记录
*/
public function play_index()
{
$condition['a.users_id'] = $this->users_id;
// $condition['b.users_price'] = ['>', 0];
// 分页
$count = $this->media_play_record_db
->alias('a')
->join('archives b', 'a.aid=b.aid', 'inner')
->where($condition)
->group('a.aid')->count();
$Page = $pager = new Page($count, 10);
$show = $Page->show();
$this->assign('page', $show);
$this->assign('pager', $pager);
$total_field = 'select sum(file_time) as total_time from ' . PREFIX . 'media_file where aid= a.aid';
// 数据查询
$list = $this->media_play_record_db
->where($condition)
->alias('a')
->field("a.id as play_id,a.file_id,a.aid,sum(a.play_time) as sum_play_time,max(a.update_time) as last_update_time,c.*,b.*,({$total_field}) as total_time,(sum(a.play_time)/({$total_field})) as process")
->join('archives b', 'a.aid=b.aid', 'inner')
->join('arctype c', 'b.typeid=c.id', 'left')
->group('a.aid')
->order('process desc')
->limit($Page->firstRow . ',' . $Page->listRows)
->select();
$total_time = 0;
// 订单处理
foreach ($list as $key => $val) {
$total_time += $val['sum_play_time'];
$val['process'] = (round($val['process'], 2) * 100) . "%";
$val['sum_play_time'] = gmSecondFormat($val['sum_play_time'], ':');
$val['sum_file_time'] = gmSecondFormat($val['total_time'], ':');
$val['last_update_time'] = date('Y-m-d H:i:s', $val['last_update_time']);
if (!empty($val['litpic'])) {
$val['litpic'] = handle_subdir_pic($val['litpic']);
} else {
$val['litpic'] = get_default_pic();
}
$val['arcurl'] = urldecode(arcurl('home/Media/view', $val));
$list[$key] = $val;
}
// 订单列表
$eyou['field']['list'] = $list;
$total_time = gmSecondFormat($total_time, ':');
$eyou['field']['total_time'] = $total_time;
$this->assign('eyou', $eyou);
$this->assign('delurl', url('user/Media/media_play_del'));
return $this->fetch('users/users_media_play_index');
}
public function media_play_del()
{
if (IS_AJAX_POST) {
$id_arr = input('del_id/a');
$id_arr = eyIntval($id_arr);
if (!empty($id_arr)) {
$where = [
'id' => ['IN', $id_arr],
'users_id' => $this->users_id,
];
$result = $this->media_play_record_db->where($where)->delete(true);
if (!empty($result)) $this->success('删除成功');
}
}
$this->error('删除失败');
}
// 视频产品购买接口
public function media_order_buy()
{
if (IS_AJAX_POST) {
// 提交的订单信息判断
$post = input('post.');
if (empty($post) || empty($post['aid'])) $this->error('操作异常,请刷新重试');
// 查询是否已购买
$where = [
'order_status' => 1,
'product_id' => intval($post['aid']),
'users_id' => $this->users_id
];
$MediaCount = Db::name('media_order')->where($where)->count();
if (!empty($MediaCount)) $this->error('你已购买过,请直接观看');
// 查询视频文档内容
$Where = [
'is_del' => 0,
'status' => 1,
'aid' => $post['aid'],
'arcrank' => ['>', -1]
];
$list = Db::name('archives')->where($Where)->find();
if (empty($list)) $this->error('操作异常,请刷新重试');
// 查看是否已生成过订单
$where['order_status'] = 0;
$MediaOrder = Db::name('media_order')->where($where)->order('order_id desc')->find();
$list['users_price'] = get_discount_price($this->users['level_discount'],$list['users_price']);
if (!empty($MediaOrder)) {
$OrderID = $MediaOrder['order_id'];
// 更新订单信息
$time = getTime();
$OrderData = [
'order_code' => date('Y') . $time . rand(10,100),
'users_id' => $this->users_id,
'mobile' => !empty($this->users['mobile']) ? $this->users['mobile'] : '',
'order_status' => 0,
'order_amount' => $list['users_price'],
'product_id' => $list['aid'],
'product_name' => $list['title'],
'product_litpic' => get_default_pic($list['litpic']),
'lang' => $this->home_lang,
'add_time' => $time,
'update_time' => $time
];
Db::name('media_order')->where('order_id', $OrderID)->update($OrderData);
} else {
// 生成订单并保存到数据库
$time = getTime();
$OrderData = [
'order_code' => date('Y') . $time . rand(10,100),
'users_id' => $this->users_id,
'mobile' => !empty($this->users['mobile']) ? $this->users['mobile'] : '',
'order_status' => 0,
'order_amount' => $list['users_price'],
'pay_time' => '',
'pay_name' => '',
'wechat_pay_type' => '',
'pay_details' => '',
'product_id' => $list['aid'],
'product_name' => $list['title'],
'product_litpic' => get_default_pic($list['litpic']),
'lang' => $this->home_lang,
'add_time' => $time,
'update_time' => $time
];
$OrderID = Db::name('media_order')->insertGetId($OrderData);
}
// 保存成功
if (!empty($OrderID)) {
// 支付结束后返回的URL
$ReturnUrl = !empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : url('user/Media/index');
cookie($this->users_id . '_' . $post['aid'] . '_EyouMediaViewUrl', $ReturnUrl);
// 对ID和订单号加密,拼装url路径
$Paydata = [
'type' => 8,
'order_id' => $OrderID,
'order_code' => $OrderData['order_code'],
];
// 先 json_encode 后 md5 加密信息
$Paystr = md5(json_encode($Paydata));
// 清除之前的 cookie
Cookie::delete($Paystr);
// 存入 cookie
cookie($Paystr, $Paydata);
// 跳转链接
$PaymentUrl = urldecode(url('user/Pay/pay_recharge_detail',['paystr'=>$Paystr]));
$this->success('订单已生成!', $PaymentUrl);
}
} else {
abort(404);
}
}
}