|
@@ -519,8 +519,8 @@ class Sell
|
|
|
# 验证这个礼品卡属于自己
|
|
|
$check = Dever::db('card/code')->find($card);
|
|
|
if ($check['dh_uid'] == $data['uid']) {
|
|
|
+ $card_info = Dever::db('card/info')->find($check['card_id']);
|
|
|
if (!$check['total_cash']) {
|
|
|
- $card_info = Dever::db('card/info')->find($check['card_id']);
|
|
|
$check['total_cash'] = $card_info['value'];
|
|
|
}
|
|
|
if (!$check['use_cash']) {
|
|
@@ -529,18 +529,53 @@ class Sell
|
|
|
$card_cash = $check['total_cash'] - $check['use_cash'];
|
|
|
|
|
|
if ($card_cash > 0) {
|
|
|
- $data['card'] = array();
|
|
|
- $data['card']['id'] = $check['id'];
|
|
|
- $data['card']['card'] = $check['card'];
|
|
|
- if ($card_cash >= $data['price']) {
|
|
|
- $data['card']['cash'] = $data['price'];
|
|
|
- $data['price'] = 0;
|
|
|
+ $card_goods = array();
|
|
|
+ $check = false;
|
|
|
+ $goods = Dever::db('card/info_goods')->getData(array('card_id' => $card_info['id']));
|
|
|
+ if ($goods || $card_info['category']) {
|
|
|
+ $check = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($check) {
|
|
|
+ $price = 0;
|
|
|
+ $card_info['category'] = explode(',', $card_info['category']);
|
|
|
+ if ($goods) {
|
|
|
+ $goods = array_keys($goods);
|
|
|
+ }
|
|
|
+ # 检测当前商品是否符合该卡的限制
|
|
|
+ foreach ($data['list'] as $k => $v) {
|
|
|
+ if ($goods) {
|
|
|
+ if (in_array($v['id'], $goods)) {
|
|
|
+ $price += ($v['price'] * $v['num']);
|
|
|
+ $card_goods[] = $v;
|
|
|
+ }
|
|
|
+ } elseif ($card_info['category']) {
|
|
|
+ if (in_array($v['top_category_id'], $card_info['category'])) {
|
|
|
+ $price += ($v['price'] * $v['num']);
|
|
|
+ $card_goods[] = $v;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
- $data['card']['cash'] = $card_cash;
|
|
|
- $data['price'] -= $data['card']['cash'];
|
|
|
+ $price = $data['price'];
|
|
|
}
|
|
|
|
|
|
- $data['card']['cash'] = round($data['card']['cash'], 2);
|
|
|
+ if ($card_info['min'] > 0 && $price < $card_info['min']) {
|
|
|
+ # 不满足限额
|
|
|
+ } else {
|
|
|
+ $data['card'] = array();
|
|
|
+ $data['card']['goods'] = $card_goods;
|
|
|
+ $data['card']['id'] = $check['id'];
|
|
|
+ $data['card']['card'] = $check['card'];
|
|
|
+ if ($card_cash >= $price) {
|
|
|
+ $data['card']['cash'] = $price;
|
|
|
+ $data['price'] = 0;
|
|
|
+ } else {
|
|
|
+ $data['card']['cash'] = $card_cash;
|
|
|
+ $data['price'] -= $data['card']['cash'];
|
|
|
+ }
|
|
|
+ $data['card']['cash'] = round($data['card']['cash'], 2);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
} elseif ($wallet && $wallet > 0) {
|
|
@@ -736,6 +771,9 @@ class Sell
|
|
|
if ($data['shop']['free_ps_cash'] && $data['shop']['free_ps_cash'] > 0 && $data['price'] >= $data['shop']['free_ps_cash']) {
|
|
|
$data['ps_cash'] = 0;
|
|
|
}
|
|
|
+ if (!$data['ps_cash']) {
|
|
|
+ $data['ps_cash'] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
$data['oprice'] = $data['price'];
|
|
@@ -766,6 +804,10 @@ class Sell
|
|
|
$ps_cash = 0;
|
|
|
}
|
|
|
|
|
|
+ if (!$ps_cash) {
|
|
|
+ $ps_cash = 0;
|
|
|
+ }
|
|
|
+
|
|
|
$order_data['ps_cash'] = $ps_cash;
|
|
|
$price += $order_data['ps_cash'];
|
|
|
}
|