| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- <?php namespace Service\Src;
- use Dever;
- # 必须登录才能购买小刊
- class Buy extends Base
- {
- public function __construct()
- {
- parent::__construct();
- if (!$this->user) {
- return $this->location('home');
- }
- }
-
- # 列表页
- public function lists()
- {
- # 记录列表页渠道pv、uv数
- if (Dever::project('source')) {
- Dever::load('source/lib/core')->save($this->user['id'], 'list', $this->source);
- }
- $where['cate_id'] = $this->cate;
- $where['buy'] = 1;
- $data = Dever::db('journal/info')->getAll($where);
- if ($data) {
- foreach ($data as $k => $v) {
- if ($v['cash'] > 0) {
- $data[$k]['price'] = '¥' . number_format($v['cash'], 2);
- } else {
- $data[$k]['price'] = '免费';
- }
- $data[$k]['ding'] = '销量:' . $v['num_ding'];
- $data[$k]['pay_url'] = $this->url('pay', array('id' => $v['id']));
- }
- }
- return $data;
- }
- # 列表页 我已购买的兑换码
- public function lists_code()
- {
- $where['create_uid'] = $this->user['id'];
- $where['type'] = 3;
- $data = Dever::db('journal/order')->getAll($where);
- if ($data) {
- foreach ($data as $k => $v) {
- $info = Dever::db('journal/info')->one($v['product_id']);
- $data[$k]['code_string'] = '阅读码:' . $v['code'];
- $data[$k]['name'] = $info['name'];
- }
- }
- return $data;
- }
- # 详细信息
- public function info()
- {
- $id = Dever::input('id');
- # 记录购买页渠道pv、uv数
- if (Dever::project('source')) {
- Dever::load('source/lib/core')->save($this->user['id'], 'buy', $this->source, array('journal_id' => $id));
- }
- $info = Dever::db('journal/info')->one($id);
- $info['buy'] = '正在购买《' . $info['name'] . '》';
- $buy = Dever::db('journal/buy')->one(array('id' => $id));
- if ($buy) {
- $info['buy_desc'] = $buy['buy_content'];
- } else {
- $info['buy_desc'] = '';
- }
-
- return $info;
- }
- # 生成二维码
- public function code()
- {
- $id = Dever::input('id');
- $type = 4;
- $uid = $this->user['id'];
-
- $scene = $uid . ',' . $type . ',' . $id;
- $path = Dever::config('base')->applet_index;
- $send['project'] = Dever::input('project', 1);
- $send['send'] = $scene;
- $send['width'] = 152;
- $send['path'] = $path;
- $code = Dever::load('wechat_applet/code.get', $send);
- return $code;
- }
- # 小刊购买成功
- public function success()
- {
- $config = Dever::db('main/config')->one(1);
- $id = Dever::input('id');
- $config['list'] = $this->url('list');
- $config['buy'] = $this->url('pay', array('id' => $id));
- return $config;
- }
- # 小刊购买
- public function buy()
- {
- $id = Dever::input('id');
- $data = Dever::db('journal/buy_num')->getAll(array('info_id' => $id));
- $info = Dever::db('journal/info')->one($id);
- if ($data) {
- foreach ($data as $k => $v) {
- if ($v['price'] > 0) {
- $data[$k]['price'] = '¥' . number_format($v['price'], 2);
- } elseif ($info['cash'] > 0) {
- $data[$k]['price'] = '¥' . number_format($info['cash'] * $v['num'], 2);
- } else {
- $data[$k]['price'] = '免费';
- }
- if (!$v['name']) {
- $data[$k]['name'] = '购买' . $v['num'] . '本';
- }
- $data[$k]['cate'] = $info['cate_id'];
- $data[$k]['pay_url'] = $this->url('buy.pay', array('buy_id' => $v['id'], 'journal_id' => $v['info_id']));
- }
- }
- return $data;
- }
- # 小刊购买
- public function pay()
- {
- $uid = $this->user['id'];
- $buy_id = Dever::input('buy_id');
- $journal_id = Dever::input('journal_id');
- if (!$buy_id) {
- Dever::alert('请传入正确的支付ID');
- }
- if (!$journal_id) {
- Dever::alert('请传入正确的小刊ID');
- }
- $info = Dever::db('journal/info')->one($journal_id);
- $buy = Dever::db('journal/buy_num')->one($buy_id);
- if (!$buy || !$info) {
- Dever::alert('请传入正确的小刊ID');
- }
- if (!$buy['name']) {
- $buy['name'] = '购买' . $buy['num'] . '本';
- }
- $user = Dever::db('passport/user')->one($uid);
- $wechat = Dever::db('passport/wechat')->one(array('uid' => $uid, 'type' => 2));
- $order_id = $this->createOrder('JP');
- $order_data['order_id'] = $order_id;
- $order_data['product_id'] = $journal_id;
- $order_data['buy_id'] = $buy_id;
- $order_data['uid'] = $uid;
- $order_data['type'] = 1;
- $order_data['status'] = 1;
- $order_data['name'] = $info['name'] . '-' . $buy['name'];
- //$order_data['num'] = Dever::input('num', 1);
- $order_data['num'] = $buy['num'];
- if (isset($buy['price']) && $buy['price'] && $buy['price'] > 0) {
- $order_data['cash'] = $buy['price'];
- } else {
- $order_data['cash'] = $info['cash'] * $order_data['num'];
- }
- $order_data['system'] = 2;
- if ($this->source) {
- $order_data['source'] = $this->source;
- }
- if ($this->seller) {
- $order_data['seller_id'] = $this->seller;
- }
- if ($this->type == 2) {
- # 购买兑换码
- $order_data['type'] = 3;
- }
- $id = Dever::db('journal/order')->insert($order_data);
- if (!$id) {
- Dever::alert('支付失败');
- }
- //$param参数
- $refer = $this->url('success', array('id' => $journal_id, 'buy' => $buy_id));
- $param = array
- (
- 'account_id' => 2,
- 'project_id' => 1,
- 'uid' => $uid,
- 'username' => $user['username'],
- 'name' => $order_data['name'],
- 'cash' => $order_data['cash'],
- //'cash' => '0.01',
- 'openid' => $wechat['openid'],
- 'product_id' => $journal_id . '-' . $buy_id,
- 'order_id' => $order_id,
- 'refer' => $refer
- );
- return Dever::load('pay/api.page', $param);
- }
- }
|