|
@@ -17,6 +17,8 @@ use app\model\Coupon;
|
|
|
use app\model\Device;
|
|
|
use app\model\Goods;
|
|
|
use app\model\GoodsComponent;
|
|
|
+use app\model\GoodsRunning;
|
|
|
+use app\model\GoodsSku;
|
|
|
use app\model\Member;
|
|
|
use app\model\MemberAccount;
|
|
|
use app\model\MemberBenefit;
|
|
@@ -498,11 +500,43 @@ class WholeController extends Curd
|
|
|
{
|
|
|
try{
|
|
|
foreach ($params['goodsContentList'] as $sheet){
|
|
|
+ // 先还原库存
|
|
|
+ $orderSheet = OrderSheet::where('order_sheet_id',$sheet['order_sheet_id'])->first();
|
|
|
+ $goodsSku = GoodsSku::where('goods_sku_id',$orderSheet->join_sheet_goods_sku_id)->first();
|
|
|
+ $skuStorageJson = json_decode($goodsSku->goods_sku_storage_json,true);
|
|
|
+ $skuStorageJson['storage'] = $skuStorageJson['storage'] + $orderSheet->order_sheet_num;
|
|
|
+ $goodsSku->goods_sku_storage_json = json_encode($skuStorageJson);
|
|
|
+ $goodsSku->save();
|
|
|
+
|
|
|
+ $goodsRunning = GoodsRunning::where('join_running_goods_id',$orderSheet->join_sheet_goods_id)->first();
|
|
|
+ $goodsRunning->goods_running_storage = $goodsRunning->goods_running_storage + $orderSheet->order_sheet_num;
|
|
|
+ $goodsRunning->goods_running_sale = $goodsRunning->goods_running_sale - $orderSheet->order_sheet_num;
|
|
|
+ $goodsRunning->save();
|
|
|
+
|
|
|
$data=[
|
|
|
'order_sheet_num'=>$sheet['nbr'],
|
|
|
'join_sheet_goods_sku_id'=>$sheet['sku_id']
|
|
|
];
|
|
|
OrderSheet::where('order_sheet_id',$sheet['order_sheet_id'])->update($data);
|
|
|
+
|
|
|
+ // 减库存
|
|
|
+ $goodsSku = GoodsSku::where('goods_sku_id',$sheet['sku_id'])->first();
|
|
|
+ $skuStorageJson = json_decode($goodsSku->goods_sku_storage_json,true);
|
|
|
+ $skuStorageJson['storage'] = $skuStorageJson['storage'] - $sheet['nbr'];
|
|
|
+ if ($skuStorageJson['storage'] < 0){
|
|
|
+ throw new BusinessException('库存不足');
|
|
|
+ }
|
|
|
+ $goodsSku->goods_sku_storage_json = json_encode($skuStorageJson);
|
|
|
+ $goodsSku->save();
|
|
|
+
|
|
|
+ $goodsRunning = GoodsRunning::where('join_running_goods_id',$orderSheet->join_sheet_goods_id)->first();
|
|
|
+ $goodsRunning->goods_running_storage = $goodsRunning->goods_running_storage - $sheet['nbr'];
|
|
|
+ if ($goodsRunning->goods_running_storage < 0){
|
|
|
+ throw new BusinessException('库存不足');
|
|
|
+ }
|
|
|
+ $goodsRunning->goods_running_sale = $goodsRunning->goods_running_sale + $sheet['nbr'];
|
|
|
+ $goodsRunning->save();
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}catch(\Exception $e){
|
|
@@ -648,6 +682,71 @@ class WholeController extends Curd
|
|
|
$order->order_status_system = $systemStatus;
|
|
|
$order->order_status_payment = 'SUCCESS';
|
|
|
}
|
|
|
+ // 福利账户 300 、 700
|
|
|
+ if(in_array($params['goods_classify'],['SERVICE','CHNMED','CHNNCD','MEALS'])){
|
|
|
+ $payDetails = PayDetail::where('join_pay_member_id',$params['join_order_member_id'])
|
|
|
+ ->where('pay_status','SUCCESS')
|
|
|
+ ->where('pay_prepayid',$params['join_order_member_id'].'-WELFARE')
|
|
|
+ ->whereIn('pay_category',['SERVICE','CHNMED','CHNNCD','MEALS','DESHES'])
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+
|
|
|
+ $payDetailArray = array_column($payDetails,'pay_amount','join_pay_order_id');
|
|
|
+
|
|
|
+ $refundPayDetails = PayDetail::where('join_pay_member_id',$params['join_order_member_id'])
|
|
|
+ ->where('pay_status','SUCCESS')
|
|
|
+ ->where('pay_prepayid',$params['join_order_member_id'].'-WELFARE')
|
|
|
+ ->where('pay_category','REFUND')
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+ $refundPayDetailArray = array_column($refundPayDetails,'pay_amount','join_pay_order_id');
|
|
|
+ $paySum = 0;
|
|
|
+ foreach ($payDetailArray as $key => $item){
|
|
|
+ if (isset($refundPayDetailArray[$key])){
|
|
|
+ $paySum = $paySum + ($item - $refundPayDetailArray[$key]);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ $paySum = $paySum + $item;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (700 - $paySum < $params['order_amount_pay']){
|
|
|
+ Db::rollBack();
|
|
|
+ return json_fail('超出福利限额');
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $payDetails = PayDetail::where('join_pay_member_id',$params['join_order_member_id'])
|
|
|
+ ->where('pay_status','SUCCESS')
|
|
|
+ ->where('pay_prepayid',$params['join_order_member_id'].'-WELFARE')
|
|
|
+ ->whereNotIn('pay_category',['SERVICE','CHNMED','CHNNCD','MEALS','DESHES','REFUND'])
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+
|
|
|
+ $payDetailArray = array_column($payDetails,'pay_amount','join_pay_order_id');
|
|
|
+
|
|
|
+ $refundPayDetails = PayDetail::where('join_pay_member_id',$params['join_order_member_id'])
|
|
|
+ ->where('pay_status','SUCCESS')
|
|
|
+ ->where('pay_prepayid',$params['join_order_member_id'].'-WELFARE')
|
|
|
+ ->where('pay_category','REFUND')
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+ $refundPayDetailArray = array_column($refundPayDetails,'pay_amount','join_pay_order_id');
|
|
|
+
|
|
|
+ $paySum = 0;
|
|
|
+ foreach ($payDetailArray as $key => $item){
|
|
|
+ if (isset($refundPayDetailArray[$key])){
|
|
|
+ $paySum = $paySum + ($item - $refundPayDetailArray[$key]);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ $paySum = $paySum + $item;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (300 - $paySum < $params['order_amount_pay']){
|
|
|
+ Db::rollBack();
|
|
|
+ return json_fail('超出福利限额');
|
|
|
+ }
|
|
|
+ }
|
|
|
$account->member_account_surplus = $account->member_account_surplus - $params['order_amount_pay'];
|
|
|
$account->member_account_expend = $account->member_account_expend + $params['order_amount_pay'];
|
|
|
$account->save();
|
|
@@ -1003,12 +1102,12 @@ class WholeController extends Curd
|
|
|
// 立即结算
|
|
|
if($params['settlement_now'] == 'Y'){
|
|
|
$params['order_is_complete'] = 'Y';
|
|
|
- if(in_array($params['goods_classify'],['SERVICE','CHNMED','CHNNCD'])){
|
|
|
+ if(in_array($params['goods_classify'],['SERVICE','CHNMED','CHNNCD','MEALS'])){
|
|
|
$systemStatus = 'DONE';
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if ($params['settlement_now'] == 'Y'){
|
|
|
+ if ($params['settlement_now'] == 'Y' && $params['pay_category'] == 'OFFLINE'){
|
|
|
$params['order_status_system'] = $systemStatus;
|
|
|
$params['order_status_payment'] = 'SUCCESS';
|
|
|
}else if ($params['settlement_now'] == 'Y' && $params['pay_category'] == 'CASH') { // 余额支付
|
|
@@ -1064,6 +1163,70 @@ class WholeController extends Curd
|
|
|
$params['order_status_system'] = $systemStatus;
|
|
|
$params['order_status_payment'] = 'SUCCESS';
|
|
|
}
|
|
|
+ // 福利账户 300 、 700
|
|
|
+ if(in_array($params['goods_classify'],['SERVICE','CHNMED','CHNNCD','MEALS'])){
|
|
|
+ $payDetails = PayDetail::where('join_pay_member_id',$params['join_order_member_id'])
|
|
|
+ ->where('pay_status','SUCCESS')
|
|
|
+ ->where('pay_prepayid',$params['join_order_member_id'].'-WELFARE')
|
|
|
+ ->whereIn('pay_category',['SERVICE','CHNMED','CHNNCD','MEALS','DESHES'])
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+
|
|
|
+ $payDetailArray = array_column($payDetails,'pay_amount','join_pay_order_id');
|
|
|
+
|
|
|
+ $refundPayDetails = PayDetail::where('join_pay_member_id',$params['join_order_member_id'])
|
|
|
+ ->where('pay_status','SUCCESS')
|
|
|
+ ->where('pay_prepayid',$params['join_order_member_id'].'-WELFARE')
|
|
|
+ ->where('pay_category','REFUND')
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+ $refundPayDetailArray = array_column($refundPayDetails,'pay_amount','join_pay_order_id');
|
|
|
+ $paySum = 0;
|
|
|
+ foreach ($payDetailArray as $key => $item){
|
|
|
+ if (isset($refundPayDetailArray[$key])){
|
|
|
+ $paySum = $paySum + ($item - $refundPayDetailArray[$key]);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ $paySum = $paySum + $item;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (700 - $paySum < $params['order_amount_pay']){
|
|
|
+ Db::rollBack();
|
|
|
+ return json_fail('超出福利限额');
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $payDetails = PayDetail::where('join_pay_member_id',$params['join_order_member_id'])
|
|
|
+ ->where('pay_status','SUCCESS')
|
|
|
+ ->where('pay_prepayid',$params['join_order_member_id'].'-WELFARE')
|
|
|
+ ->whereNotIn('pay_category',['SERVICE','CHNMED','CHNNCD','MEALS','DESHES','REFUND'])
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+
|
|
|
+ $payDetailArray = array_column($payDetails,'pay_amount','join_pay_order_id');
|
|
|
+
|
|
|
+ $refundPayDetails = PayDetail::where('join_pay_member_id',$params['join_order_member_id'])
|
|
|
+ ->where('pay_status','SUCCESS')
|
|
|
+ ->where('pay_prepayid',$params['join_order_member_id'].'-WELFARE')
|
|
|
+ ->where('pay_category','REFUND')
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+ $refundPayDetailArray = array_column($refundPayDetails,'pay_amount','join_pay_order_id');
|
|
|
+ $paySum = 0;
|
|
|
+ foreach ($payDetailArray as $key => $item){
|
|
|
+ if (isset($refundPayDetailArray[$key])){
|
|
|
+ $paySum = $paySum + ($item - $refundPayDetailArray[$key]);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ $paySum = $paySum + $item;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (300 - $paySum < $params['order_amount_pay']){
|
|
|
+ Db::rollBack();
|
|
|
+ return json_fail('超出福利限额');
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
$account->member_account_surplus = $account->member_account_surplus - $params['order_amount_pay'];
|
|
|
$account->member_account_expend = $account->member_account_expend + $params['order_amount_pay'];
|
|
@@ -1232,6 +1395,7 @@ class WholeController extends Curd
|
|
|
$params['order_express_city'] = $premises->dept_city;
|
|
|
$params['order_express_address'] = $premises->dept_address;
|
|
|
$params['order_express_telephone'] = $premises->dept_telephone;
|
|
|
+ $params['order_express_extend_json'] = json_encode(['pick_code'=>random_string(4,'number')]);
|
|
|
|
|
|
$this->saveExpress($params);
|
|
|
}
|
|
@@ -1301,6 +1465,29 @@ class WholeController extends Curd
|
|
|
// }
|
|
|
|
|
|
Db::commit();
|
|
|
+ // 打小票
|
|
|
+ // $sheet = OrderSheet::where('join_sheet_order_id',$params['order_id'])->first();
|
|
|
+ // if ($params['order_status_payment'] == 'SUCCESS' && !empty($sheet->order_sheet_extend_json)){
|
|
|
+ // $sheetExtendJson = json_decode($sheet->order_sheet_extend_json,true);
|
|
|
+ // if (isset($sheetExtendJson['premises'])){
|
|
|
+ // $voteData = [
|
|
|
+ // 'func'=>'procActionToPrinter',
|
|
|
+ // 'sign'=>'',
|
|
|
+ // 'data'=>[
|
|
|
+ // 'printer_premises'=>$sheetExtendJson['premises'],
|
|
|
+ // 'printer_device'=>[
|
|
|
+ // "东泉度假村餐厅前台"
|
|
|
+ // ],
|
|
|
+ // 'printer_action'=>'ExecPrintOrder',
|
|
|
+ // 'printer_data'=>[
|
|
|
+ // 'order_id'=>$params['order_id']
|
|
|
+ // ]
|
|
|
+ // ]
|
|
|
+ // ];
|
|
|
+ // http_post_json(getenv('VOTE_MENU_URL'),$voteData);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // }
|
|
|
|
|
|
_syslog("订单","创建订单成功");
|
|
|
return json_success('创建订单成功');
|
|
@@ -1396,8 +1583,28 @@ class WholeController extends Curd
|
|
|
];
|
|
|
|
|
|
OrderSheet::insertGetId($data);
|
|
|
+
|
|
|
+ // 减库存,规格和总库存
|
|
|
+ $goodsSku = GoodsSku::where('goods_sku_id',$goods['sku_id'])->first();
|
|
|
+ $skuStorageJson = json_decode($goodsSku->goods_sku_storage_json,true);
|
|
|
+ $skuStorageJson['storage'] = $skuStorageJson['storage'] - $goods['nbr'];
|
|
|
+ if ($skuStorageJson['storage'] < 0){
|
|
|
+ throw new BusinessException('库存不足');
|
|
|
+ }
|
|
|
+ $goodsSku->goods_sku_storage_json = json_encode($skuStorageJson);
|
|
|
+ $goodsSku->save();
|
|
|
+
|
|
|
+ $goodsRunning = GoodsRunning::where('join_running_goods_id',$goods['goods_id'])->first();
|
|
|
+ $goodsRunning->goods_running_storage = $goodsRunning->goods_running_storage - $goods['nbr'];
|
|
|
+ if ($goodsRunning->goods_running_storage < 0){
|
|
|
+ throw new BusinessException('库存不足');
|
|
|
+ }
|
|
|
+ $goodsRunning->goods_running_sale = $goodsRunning->goods_running_sale + $goods['nbr'];
|
|
|
+ $goodsRunning->save();
|
|
|
}
|
|
|
return true;
|
|
|
+ }catch(\support\exception\BusinessException $e){
|
|
|
+ throw new BusinessException($e->getMessage());
|
|
|
} catch (\Exception $e) {
|
|
|
throw new BusinessException('订单创建失败');
|
|
|
}
|
|
@@ -1590,7 +1797,22 @@ class WholeController extends Curd
|
|
|
|
|
|
Db::beginTransaction();
|
|
|
try {
|
|
|
+ $expressExtendJson = [];
|
|
|
if ($params['express_type'] == '自提') {
|
|
|
+ $model = OrderExpress::where('join_express_order_id', $params['order_id'])->first();
|
|
|
+ if (!$model) {
|
|
|
+ $model = new OrderExpress();
|
|
|
+ }
|
|
|
+ if (!empty($model->order_express_extend_json)){
|
|
|
+ $expressExtendJson = json_decode($model->order_express_extend_json,true);
|
|
|
+ // 如果有取件码
|
|
|
+ if (isset($expressExtendJson['pick_code'])){
|
|
|
+ if (empty($params['order_express_pick_code']) || $params['order_express_pick_code'] != $expressExtendJson['pick_code']){
|
|
|
+ Db::rollBack();
|
|
|
+ return json_fail("取件码错误");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
$premises = SysDept::where('dept_name', $params['order_express_premises'])->first();
|
|
|
if (!$premises) {
|
|
|
return json_fail("门店不存在,请重新填写");
|
|
@@ -1612,10 +1834,6 @@ class WholeController extends Curd
|
|
|
// $redis->sadd($key, $params['order_id']);
|
|
|
|
|
|
// $model = new OrderExpress();
|
|
|
- $model = OrderExpress::where('join_express_order_id', $params['order_id'])->first();
|
|
|
- if (!$model) {
|
|
|
- $model = new OrderExpress();
|
|
|
- }
|
|
|
} else {
|
|
|
$orderData = [
|
|
|
'order_status_system' => 'RECVING',
|
|
@@ -1673,6 +1891,8 @@ class WholeController extends Curd
|
|
|
}
|
|
|
$model->order_express_remark = $params['order_express_remark'] ?? null;
|
|
|
$model->order_express_addtimes = $params['order_express_addtimes'] ?? time();
|
|
|
+ $expressExtendJson['delivery_time'] = date('Y-m-d H:i:s');
|
|
|
+ $model->order_express_extend_json = json_encode($expressExtendJson);
|
|
|
$model->save();
|
|
|
|
|
|
// 事件通知
|
|
@@ -2006,6 +2226,7 @@ class WholeController extends Curd
|
|
|
$express->order_express_telephone = $params['order_express_telephone'] ?? '';
|
|
|
$express->order_express_person = $params['order_express_person'] ?? '';
|
|
|
$express->order_express_company = $params['dept_premises_id'] ?? '';
|
|
|
+ $express->order_express_extend_json = $params['order_express_extend_json'] ?? '[]';
|
|
|
$express->order_express_addtimes = time();
|
|
|
$express->save();
|
|
|
} catch (\Exception $e) {
|