|
@@ -2,6 +2,7 @@
|
|
|
|
|
|
namespace app\admin\controller\order;
|
|
|
|
|
|
+use app\admin\service\coupon\CardService;
|
|
|
use app\admin\service\coupon\CouponDetailService;
|
|
|
use app\admin\service\coupon\CouponService;
|
|
|
use app\admin\service\member\MemberService;
|
|
@@ -1069,6 +1070,36 @@ class WholeController extends Curd
|
|
|
if (!$account) {
|
|
|
throw new BusinessException('账户异常');
|
|
|
}
|
|
|
+ // 检测专用卡
|
|
|
+ $cardModel = Card::with([
|
|
|
+ 'main' => function ($query) {
|
|
|
+ $query->select('card_main_id', 'card_main_json');
|
|
|
+ }
|
|
|
+ ])->where('card_id', $cardNbr)
|
|
|
+ ->first();
|
|
|
+ if (!empty($cardModel->main)) {
|
|
|
+ $cardMainJson = json_decode($cardModel->main->card_main_json, true);
|
|
|
+ // 限制商品
|
|
|
+ if (!empty($cardMainJson['goods_ary']) || !empty($cardMainJson['goods_category_ary'])) {
|
|
|
+ $goodsIds = array_column($params['goodsContentList'], 'goods_id');
|
|
|
+ $cardGoodsIds = CardService::getCardGoods($cardMainJson['goods_ary'], $cardMainJson['goods_category_ary']);
|
|
|
+ $diff = array_diff($goodsIds, $cardGoodsIds);
|
|
|
+ if (!empty($diff)) {
|
|
|
+ $goodsNameArr = Goods::whereIn('goods_id', $diff)->pluck('goods_name')->toArray();
|
|
|
+ throw new BusinessException("产品:【" . implode('】【', $goodsNameArr) . "】不在储值卡结算范围内,请更换支付方式");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 限制门店
|
|
|
+ if (!empty($cardMainJson['premises_ary'])) {
|
|
|
+ if (empty($premises)){
|
|
|
+ throw new BusinessException("当前订单没有指定门店");
|
|
|
+ }
|
|
|
+ $dept = SysDept::where('dept_id', $premises->dept_super_id)->first();
|
|
|
+ if (!empty($dept) && !in_array($dept->dept_id, $cardMainJson['premises_ary'])) {
|
|
|
+ throw new BusinessException("门店:【" . $dept->dept_name . "】不在储值卡结算范围内,请更换支付方式");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
$amount = $account->member_account_surplus + $account->member_account_added;
|
|
|
if ($params['order_amount_pay'] > $amount) {
|
|
|
throw new BusinessException('账户余额不足');
|
|
@@ -1593,6 +1624,36 @@ class WholeController extends Curd
|
|
|
Db::rollBack();
|
|
|
return json_fail('账户异常');
|
|
|
}
|
|
|
+ // 检测专用卡
|
|
|
+ $cardModel = Card::with([
|
|
|
+ 'main' => function ($query) {
|
|
|
+ $query->select('card_main_id', 'card_main_json');
|
|
|
+ }
|
|
|
+ ])->where('card_id', $cardNbr)
|
|
|
+ ->first();
|
|
|
+ if (!empty($cardModel->main)) {
|
|
|
+ $cardMainJson = json_decode($cardModel->main->card_main_json, true);
|
|
|
+ // 限制商品
|
|
|
+ if (!empty($cardMainJson['goods_ary']) || !empty($cardMainJson['goods_category_ary'])) {
|
|
|
+ $goodsIds = array_column($params['goodsContentList'], 'goods_id');
|
|
|
+ $cardGoodsIds = CardService::getCardGoods($cardMainJson['goods_ary'], $cardMainJson['goods_category_ary']);
|
|
|
+ $diff = array_diff($goodsIds, $cardGoodsIds);
|
|
|
+ if (!empty($diff)) {
|
|
|
+ $goodsNameArr = Goods::whereIn('goods_id', $diff)->pluck('goods_name')->toArray();
|
|
|
+ throw new BusinessException("产品:【" . implode('】【', $goodsNameArr) . "】不在储值卡【".$cardNbr."】结算范围内,请更换支付方式");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 限制门店
|
|
|
+ if (!empty($cardMainJson['premises_ary'])) {
|
|
|
+ if (empty($premises)){
|
|
|
+ throw new BusinessException("当前订单没有指定门店");
|
|
|
+ }
|
|
|
+ $dept = SysDept::where('dept_id', $premises->dept_super_id)->first();
|
|
|
+ if (!empty($dept) && !in_array($dept->dept_id, $cardMainJson['premises_ary'])) {
|
|
|
+ throw new BusinessException("门店:【" . $dept->dept_name . "】不在储值卡【".$cardNbr."】结算范围内,请更换支付方式");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
// 储值卡账户支付金额
|
|
|
if (isset($constituteList2['amount'])) {
|
|
|
$params['order_amount_pay'] = $constituteList2['amount'];
|
|
@@ -1835,6 +1896,11 @@ class WholeController extends Curd
|
|
|
}
|
|
|
_syslog("订单", "订单支付成功");
|
|
|
return json_success('支付成功');
|
|
|
+ } catch (BusinessException $e) {
|
|
|
+ Db::rollBack();
|
|
|
+ _syslog("订单", "订单支付失败:".$e->getMessage());
|
|
|
+
|
|
|
+ return json_fail('支付失败:'.$e->getMessage());
|
|
|
} catch (\Exception $e) {
|
|
|
Db::rollBack();
|
|
|
_syslog("订单", "订单支付失败");
|
|
@@ -1996,6 +2062,9 @@ class WholeController extends Curd
|
|
|
if (!empty($params['dept_premises_id'])) {
|
|
|
$premises = SysDept::where('dept_name', $params['dept_premises_id'])->first();
|
|
|
}
|
|
|
+ if (empty($premises)) {
|
|
|
+ return json_fail('请选择餐厅');
|
|
|
+ }
|
|
|
|
|
|
$params['goods_classify'] = $goodsClassifys[0];
|
|
|
Db::beginTransaction();
|
|
@@ -2253,6 +2322,33 @@ class WholeController extends Curd
|
|
|
if (!$account) {
|
|
|
throw new BusinessException('账户异常');
|
|
|
}
|
|
|
+ // 检测专用卡
|
|
|
+ $cardModel = Card::with([
|
|
|
+ 'main' => function ($query) {
|
|
|
+ $query->select('card_main_id', 'card_main_json');
|
|
|
+ }
|
|
|
+ ])->where('card_id', $cardNbr)
|
|
|
+ ->first();
|
|
|
+ if (!empty($cardModel->main)) {
|
|
|
+ $cardMainJson = json_decode($cardModel->main->card_main_json, true);
|
|
|
+ // 限制商品
|
|
|
+ if (!empty($cardMainJson['goods_ary']) || !empty($cardMainJson['goods_category_ary'])) {
|
|
|
+ $goodsIds = array_column($params['goodsContentList'], 'goods_id');
|
|
|
+ $cardGoodsIds = CardService::getCardGoods($cardMainJson['goods_ary'], $cardMainJson['goods_category_ary']);
|
|
|
+ $diff = array_diff($goodsIds, $cardGoodsIds);
|
|
|
+ if (!empty($diff)) {
|
|
|
+ $goodsNameArr = Goods::whereIn('goods_id', $diff)->pluck('goods_name')->toArray();
|
|
|
+ throw new BusinessException("产品:【" . implode('】【', $goodsNameArr) . "】不在储值卡结算范围内,请更换支付方式");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 限制门店
|
|
|
+ if (!empty($cardMainJson['premises_ary'])) {
|
|
|
+ $dept = SysDept::where('dept_id', $premises->dept_super_id)->first();
|
|
|
+ if (!empty($dept) && !in_array($dept->dept_id, $cardMainJson['premises_ary'])) {
|
|
|
+ throw new BusinessException("门店:【" . $dept->dept_name . "】不在储值卡结算范围内,请更换支付方式");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
$amount = $account->member_account_surplus + $account->member_account_added;
|
|
|
if ($params['order_amount_pay'] > $amount) {
|
|
|
throw new BusinessException('账户余额不足');
|
|
@@ -2510,7 +2606,6 @@ class WholeController extends Curd
|
|
|
|
|
|
// 打小票
|
|
|
if (!empty($premises) && isset($params['submit_goods_classify']) && $params['submit_goods_classify'] == 'MEALS') {
|
|
|
- dump("insert 打小票");
|
|
|
if ($premises->dept_category != '餐厅') {
|
|
|
$restaurant = SysDept::where('dept_super_id', $premises->dept_id)->where('dept_category', '餐厅')->first();
|
|
|
} else {
|
|
@@ -2576,14 +2671,10 @@ class WholeController extends Curd
|
|
|
return json_success('创建订单成功');
|
|
|
} catch (BusinessException $e) {
|
|
|
Db::rollBack();
|
|
|
- dump($e->getMessage());
|
|
|
- dump($e->getTrace());
|
|
|
_syslog("订单", $e->getMessage());
|
|
|
return json_fail($e->getMessage());
|
|
|
} catch (\Exception $e) {
|
|
|
Db::rollBack();
|
|
|
- dump($e->getMessage());
|
|
|
- dump($e->getTrace());
|
|
|
_syslog("订单", "创建订单失败");
|
|
|
return json_fail('创建订单失败');
|
|
|
}
|
|
@@ -2671,6 +2762,9 @@ class WholeController extends Curd
|
|
|
if (!empty($params['dept_premises_id'])) {
|
|
|
$premises = SysDept::where('dept_name', $params['dept_premises_id'])->first();
|
|
|
}
|
|
|
+ if (empty($premises)) {
|
|
|
+ return json_fail('请选择餐厅');
|
|
|
+ }
|
|
|
|
|
|
Db::beginTransaction();
|
|
|
try {
|
|
@@ -2829,6 +2923,34 @@ class WholeController extends Curd
|
|
|
Db::rollBack();
|
|
|
return json_fail('账户异常');
|
|
|
}
|
|
|
+ // 检测专用卡
|
|
|
+ $cardModel = Card::with([
|
|
|
+ 'main' => function ($query) {
|
|
|
+ $query->select('card_main_id', 'card_main_json');
|
|
|
+ }
|
|
|
+ ])->where('card_id', $cardNbr)
|
|
|
+ ->first();
|
|
|
+ if (!empty($cardModel->main)) {
|
|
|
+ $cardMainJson = json_decode($cardModel->main->card_main_json, true);
|
|
|
+ // 限制商品
|
|
|
+ if (!empty($cardMainJson['goods_ary']) || !empty($cardMainJson['goods_category_ary'])) {
|
|
|
+ $goodsIds = array_column($params['goodsContentList'], 'goods_id');
|
|
|
+ $cardGoodsIds = CardService::getCardGoods($cardMainJson['goods_ary'], $cardMainJson['goods_category_ary']);
|
|
|
+ $diff = array_diff($goodsIds, $cardGoodsIds);
|
|
|
+ if (!empty($diff)) {
|
|
|
+ $goodsNameArr = Goods::whereIn('goods_id', $diff)->pluck('goods_name')->toArray();
|
|
|
+ throw new BusinessException("产品:【" . implode('】【', $goodsNameArr) . "】不在储值卡【".$cardNbr."】结算范围内,请更换支付方式");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 限制门店
|
|
|
+ if (!empty($cardMainJson['premises_ary'])) {
|
|
|
+ $dept = SysDept::where('dept_id', $premises->dept_super_id)->first();
|
|
|
+ if (!empty($dept) && !in_array($dept->dept_id, $cardMainJson['premises_ary'])) {
|
|
|
+ throw new BusinessException("门店:【" . $dept->dept_name . "】不在储值卡【".$cardNbr."】结算范围内,请更换支付方式");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 储值卡账户支付金额
|
|
|
if (isset($constituteList2['amount'])) {
|
|
|
$params['order_amount_pay'] = $constituteList2['amount'];
|