* 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"); } } }