123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- <?php
- namespace Shop\Lib;
- use Dever;
- class Coupon
- {
- # 获取分享活动的优惠券列表
- public function getData($shop_id)
- {
- $data = Dever::db('shop/coupon')->getData(array('shop_id' => $shop_id));
- if ($data) {
- foreach ($data as $k => $v) {
- $coupon = Dever::db('goods/coupon')->find($v['coupon_id']);
- $data[$k]['name'] = $coupon['name'];
- }
- }
- return $data;
- }
- # 获取分享活动的优惠券列表
- public function getAll($shop_id, $act_id)
- {
- $data = Dever::db('shop/coupon_act')->getData(array('shop_id' => $shop_id, 'act_id' => $act_id));
- $result = array();
- if ($data) {
- foreach ($data as $k => $v) {
- $shop_coupon = Dever::db('shop/coupon')->getOne($v['shop_coupon_id']);
- if ($shop_coupon && $shop_coupon['total'] > 0) {
- $info = Dever::db('goods/coupon')->one($shop_coupon['coupon_id']);
- if (!$info) {
- continue;
- }
- $data[$k]['cash'] = $info['cash'];
- $data[$k]['total_cash'] = $info['total_cash'];
- $data[$k]['total'] = $shop_coupon['total'];
- $data[$k]['shop_coupon_id'] = $v['shop_coupon_id'];
- $data[$k]['name'] = $info['name'];
- $result[] = $data[$k];
- } else {
- continue;
- }
- }
- }
- return $result;
- }
- # 验证是否可以领取
- public function getOne($uid, $shop, $shop_coupon_id, $act_id = 1, $num = 1, $act = true)
- {
- if (!$shop_coupon_id) {
- return false;
- }
- $data = Dever::db('shop/coupon')->getOne($shop_coupon_id);
- if (!$data) {
- Dever::alert('优惠券不存在');
- return false;
- }
- $coupon = Dever::db('goods/coupon')->find($data['coupon_id']);
- if (!$coupon) {
- Dever::alert('优惠券不存在');
- return false;
- }
- if ($data['total'] <= 0) {
- Dever::alert('优惠券已无可用数量');
- return false;
- }
- if ($num > $data['total']) {
- $num = $data['total'];
- }
- if ($act) {
- $act = Dever::db('shop/coupon_act')->getOne(array('shop_id' => $shop['id'], 'act_id' => $act_id, 'shop_coupon_id' => $shop_coupon_id));
- if (!$act) {
- Dever::alert('优惠券不存在');
- return false;
- }
- # 验证是否已经领取,一周内不能再次领取
- if ($coupon['method'] == 3) {
- $user = Dever::db('shop/user_coupon')->getOne(array('uid' => $uid, 'shop_coupon_id' => $shop_coupon_id));
- } else {
- $user = Dever::db('shop/user_coupon')->getOne(array('uid' => $uid, 'coupon_id' => $coupon['id']));
- }
- if ($user && time() - $user['cdate'] < 86400*7) {
- Dever::alert('您已领取过该优惠劵');
- return false;
- }
- }
- $state = Dever::load('shop/lib/coupon.take', $uid, $shop, $data, $num);
- if ($state) {
- return true;
- }
- return false;
- }
- # 领取
- public function take($uid, $shop, $shop_coupon, $num = 1)
- {
- $id = false;
- $add_num = 0;
- for ($i = 0; $i < $num; $i++) {
- $data['uid'] = $uid;
- $data['shop_id'] = $shop['id'];
- $data['city'] = $shop['city'];
- $data['coupon_id'] = $shop_coupon['coupon_id'];
- $data['shop_coupon_id'] = $shop_coupon['id'];
- $data['edate'] = time() + ($shop_coupon['day'] * 86400);
- //$data['cash'] = $cash;
- $data['t'] = $i;
- $id = Dever::db('shop/user_coupon')->insert($data);
- if ($id) {
- $add_num += 1;
- }
- }
- if ($add_num > 0) {
- Dever::db('shop/coupon')->updateNum(array('where_id' => $shop_coupon['id'], 'act_num' => $add_num));
- }
- return $id;
- }
- # 获取能用的优惠券的店铺名称
- public function getShop($data, $shop = false, $shop_list = false)
- {
- $data['shop_name'] = '门店专属';
- if ($shop) {
- $data['shop_name'] = $shop['name'];
- } elseif (isset($data['shop_id'])) {
- $shop = Dever::db('shop/info')->getOne($data['shop_id']);
- $data['shop_name'] = $shop['name'];
- }
- if ($data['method'] == 1) {
- $data['shop_name'] = '全国门店通用';
- } elseif ($data['method'] == 2) {
- $where = array('coupon_id' => $data['coupon_id'], 'city' => $data['city']);
- if ($shop_list) {
- $shop_coupon = Dever::db('shop/coupon')->select($where);
- $data['shop'] = array();
- foreach ($shop_coupon as $k1 => $v1) {
- //$shop = Dever::db('shop/info')->getOne(array('id' => $v1['shop_id'], 'city' => $data['city']));
- $shop = Dever::load('shop/lib/info')->fetch($v1['shop_id'], $data['city'], Dever::input('lng'), Dever::input('lat'));
- if ($shop) {
- $data['shop'][] = $shop;
- }
- }
- $shop_coupon = count($data['shop']);
- } else {
- $shop_coupon = Dever::db('shop/coupon')->total($where);
- }
- if ($shop_coupon > 1) {
- $city = Dever::db('area/city')->find($data['city']);
- $data['shop_name'] = $city['name'] . '多店通用';
- }
- }
- return $data;
- }
- }
|