123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- <?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.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");
- }
- }
-
- }
|