* 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 .= '';
$hidden .= '';
$hidden .= '';
$lang = Request::instance()->param('lang/s');
!empty($lang) && $hidden .= '';
}
// 搜索的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.lang'] = $this->home_lang;
// $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['order_status'] = 0;
$mediaOrder = Db::name('media_order')->where($where)->order('order_id desc')->find();
// 查询视频文档内容
$where = [
'is_del' => 0,
'status' => 1,
'aid' => $post['aid'],
'arcrank' => ['>', -1]
];
$list = Db::name('archives')->where($where)->find();
if (empty($list)) $this->error('操作异常,请刷新重试');
$list['users_price'] = get_discount_price($this->users['level_discount'], $list['users_price']);
// 订单生成规则
$time = getTime();
$orderCode = date('Y') . $time . rand(10, 100);
if (!empty($mediaOrder)) {
$OrderID = $mediaOrder['order_id'];
// 更新订单信息
$OrderData = [
'order_code' => $orderCode,
'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 {
// 生成订单并保存到数据库
$OrderData = [
'order_code' => $orderCode,
'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
$return_url = input('param.return_url/s', url('user/Media/index'));
$ReturnUrl = !empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : $return_url;
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);
// 跳转链接
$this->success('订单已生成!', urldecode(url('user/Pay/pay_recharge_detail', ['paystr' => $Paystr])));
}
} else {
to_index("404");
}
}
}