|
@@ -69,7 +69,7 @@ class WholeController extends Curd
|
|
|
{
|
|
|
$model = $this->model->with([
|
|
|
'sheet' => function ($query) {
|
|
|
- $query->select('join_sheet_order_id', 'join_sheet_goods_id');
|
|
|
+ $query->select('join_sheet_order_id', 'order_sheet_id', 'join_sheet_goods_id');
|
|
|
},
|
|
|
'member' => function ($query) {
|
|
|
$query->select('member_id', 'member_mobile');
|
|
@@ -140,7 +140,11 @@ class WholeController extends Curd
|
|
|
$query->select('goods_id', 'goods_name', 'goods_cover', 'goods_market_price', 'goods_sales_price', 'goods_classify');
|
|
|
},
|
|
|
'memberInfo',
|
|
|
- 'cert'
|
|
|
+ 'cert',
|
|
|
+ 'skus' => function($query){
|
|
|
+ $query->where('goods_sku_status','ON')
|
|
|
+ ->select('goods_sku_id','join_sku_goods_id','goods_sku_specs_json','goods_sku_sales_price');
|
|
|
+ }
|
|
|
])->where('join_sheet_order_id', $orderId)
|
|
|
->get()
|
|
|
->toArray();
|
|
@@ -169,33 +173,104 @@ class WholeController extends Curd
|
|
|
|
|
|
$item['goods']['components'] = $goodsArr;
|
|
|
}
|
|
|
+ if (!empty($item['skus'])){
|
|
|
+ foreach($item['skus'] as $k => $sku){
|
|
|
+ if(!empty($sku['goods_sku_specs_json'])){
|
|
|
+ $specsJson = json_decode($sku['goods_sku_specs_json'],true);
|
|
|
+ $skuName = '';
|
|
|
+ foreach ($specsJson as $specsKey => $skuSpecs) {
|
|
|
+ if (is_array($skuSpecs)) {
|
|
|
+ $skuName = $skuName . ' ' . implode(' ', $skuSpecs) . ';';
|
|
|
+ } else {
|
|
|
+ $skuName = $skuName . ' ' . $skuSpecs . ';';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $item['skus'][$k]['goods_sku_title'] = rtrim($skuName,';');
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
$order = Order::where('order_id', $orderId)->first();
|
|
|
+ $payDetail = PayDetail::where('join_pay_order_id',$order->order_groupby)
|
|
|
+ ->select('pay_id','pay_category')
|
|
|
+ ->first();
|
|
|
$express = OrderExpress::where('join_express_order_id', $orderId)->first();
|
|
|
$data = [
|
|
|
'order' => $order,
|
|
|
'sheet' => $orderSheet,
|
|
|
- 'express' => $express
|
|
|
+ 'express' => $express,
|
|
|
+ 'payDetail' => $payDetail
|
|
|
];
|
|
|
|
|
|
return json_success('', $data);
|
|
|
}
|
|
|
|
|
|
-// protected function updateInput(Request $request): array
|
|
|
-// {
|
|
|
-// $primary_key = $this->model->getKeyName();
|
|
|
-// $id = $request->post($primary_key);
|
|
|
-// $data = $this->inputFilter($request->post());
|
|
|
-// $data['coupon_begindate'] = strtotime($data['coupon_begindate']);
|
|
|
-// $data['coupon_enddate'] = strtotime($data['coupon_enddate']);
|
|
|
-// $model = $this->model->find($id);
|
|
|
-// if (!$model) {
|
|
|
-// throw new BusinessException('记录不存在', 2);
|
|
|
-// }
|
|
|
-// unset($data[$primary_key]);
|
|
|
-// return [$id, $data];
|
|
|
-// }
|
|
|
+ public function update(Request $request): Response
|
|
|
+ {
|
|
|
+ $params = $request->post();
|
|
|
+
|
|
|
+ try{
|
|
|
+ Db::beginTransaction();
|
|
|
+
|
|
|
+ // 修改主订单
|
|
|
+ $this->updateMain($params);
|
|
|
+
|
|
|
+ Db::commit();
|
|
|
+
|
|
|
+ return json_success('修改订单成功');
|
|
|
+ }catch(\Exception $e){
|
|
|
+ Db::rollBack();
|
|
|
+ return json_fail('修改订单失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function delete(Request $request): Response
|
|
|
+ {
|
|
|
+ $params = $request->post();
|
|
|
+
|
|
|
+ try {
|
|
|
+ Db::beginTransaction();
|
|
|
+
|
|
|
+ $order = Order::where('order_id',$params['order_id'])
|
|
|
+ ->where('order_category','SYSTEM')
|
|
|
+ ->whereIn('order_status_system',['WAITING','SENDING'])
|
|
|
+ ->first();
|
|
|
+ if(!$order){
|
|
|
+ return json_fail('订单异常');
|
|
|
+ }
|
|
|
+
|
|
|
+ $payDetail = PayDetail::where('join_pay_order_id',$order->order_groupby)->first();
|
|
|
+ dump($payDetail);
|
|
|
+ if($payDetail->pay_category == 'CASH'){
|
|
|
+ $memberAccount = MemberAccount::where('join_account_member_id',$payDetail->join_pay_member_id)
|
|
|
+ ->where('member_account_classify','CASH')
|
|
|
+ ->first();
|
|
|
+ $memberAccount->member_account_expend = $memberAccount->member_account_expend - $payDetail->pay_amount;
|
|
|
+ $memberAccount->member_account_surplus = $memberAccount->member_account_surplus + $payDetail->pay_amount;
|
|
|
+ $memberAccount->save();
|
|
|
+ }
|
|
|
+ // 删支付记录
|
|
|
+ $payDetail->delete();
|
|
|
+ // 删收货信息
|
|
|
+ OrderExpress::where('join_express_order_id',$params['order_id'])->delete();
|
|
|
+ // 删订单详情
|
|
|
+ OrderSheet::where('join_sheet_order_id',$params['order_id'])->delete();
|
|
|
+ // 删主订单
|
|
|
+ $order->delete();
|
|
|
+
|
|
|
+ Db::commit();
|
|
|
+
|
|
|
+ return json_success('删除订单成功');
|
|
|
+ }catch(\Exception $e){
|
|
|
+ dump($e->getMessage());
|
|
|
+ Db::rollBack();
|
|
|
+
|
|
|
+ return json_fail('删除订单失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
public function insert(Request $request): Response
|
|
|
{
|
|
@@ -254,17 +329,21 @@ class WholeController extends Curd
|
|
|
$params['order_express_json'] = json_encode([
|
|
|
'express'=>'Y',
|
|
|
]);
|
|
|
- $this->saveExpress($params);
|
|
|
}
|
|
|
|
|
|
// 写入主订单
|
|
|
$this->insertMain($params);
|
|
|
// 订单详情
|
|
|
- $this->insertSheet($params);
|
|
|
+ $sheetId = $this->insertSheet($params);
|
|
|
// 支付记录
|
|
|
$this->insertPayDetail($params);
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+ $params['order_express_goods'] = json_encode(['sheet'=>[$sheetId]]);
|
|
|
+ if($params['delivery'] == 'LOGISTICS'){
|
|
|
+ // 入配送
|
|
|
+ $this->saveExpress($params);
|
|
|
+ }
|
|
|
// 买的单个服务
|
|
|
if ($goods['goods_classify'] == 'SERVICE') {
|
|
|
// 预约表
|
|
@@ -338,11 +417,12 @@ class WholeController extends Curd
|
|
|
'order_name' => date('Y-m-d H:i:s') . '-订单',
|
|
|
'order_amount_total' => $params['order_sheet_amount'],
|
|
|
'order_amount_pay' => $params['order_sheet_pay'],
|
|
|
- 'order_category' => 'NORMAL',
|
|
|
+ 'order_category' => 'SYSTEM',
|
|
|
'order_status_system' => $params['order_status_system'],
|
|
|
'order_status_payment' => $params['order_status_payment'],
|
|
|
'order_status_storage' => $params['order_status_storage'],
|
|
|
'order_remark' => $params['order_remark'] ?? '',
|
|
|
+ 'order_express_json' => $params['order_express_json'],
|
|
|
'order_addtimes' => time()
|
|
|
];
|
|
|
|
|
@@ -379,7 +459,7 @@ class WholeController extends Curd
|
|
|
'order_sheet_remark'=>$params['order_remark'] ?? '',
|
|
|
'order_sheet_addtimes' => time()
|
|
|
];
|
|
|
- OrderSheet::insert($data);
|
|
|
+ return OrderSheet::insertGetId($data);
|
|
|
} catch (\Exception $e) {
|
|
|
throw new BusinessException('订单创建失败');
|
|
|
}
|
|
@@ -484,52 +564,111 @@ class WholeController extends Curd
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 修改主订单
|
|
|
+ */
|
|
|
+ public function updateMain($params)
|
|
|
+ {
|
|
|
+ $params['order_express_goods'] = json_encode(['sheet'=>[$params['sheet_id']]]);
|
|
|
+ if($params['delivery'] == 'PICKUP'){ // 自提
|
|
|
+ $params['order_express_json'] = json_encode([
|
|
|
+ 'express'=>'S',
|
|
|
+ 'premises'=>$params['dept_premises_id']
|
|
|
+ ]);
|
|
|
+ }else if($params['delivery'] == 'LOGISTICS'){
|
|
|
+ $params['order_express_json'] = json_encode([
|
|
|
+ 'express'=>'Y',
|
|
|
+ ]);
|
|
|
+ $params['orderId'] = $params['order_id'];
|
|
|
+
|
|
|
+ $this->saveExpress($params);
|
|
|
+ }
|
|
|
+
|
|
|
+ try{
|
|
|
+ Order::where('order_id',$params['order_id'])->update(['order_express_json'=>$params['order_express_json']]);
|
|
|
+ }catch(\Exception $e){
|
|
|
+ throw new BusinessException('修改订单失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public function delivery(Request $request)
|
|
|
{
|
|
|
if (!Order::where('order_id', $request->post('order_id'))->where('order_status_system', 'SENDING')->exists()) {
|
|
|
return json_fail('订单状态异常');
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 验证
|
|
|
$validate = new OrderExpressValidate();
|
|
|
if (!$validate->scene('delivery')->check($request->post())) {
|
|
|
return json_fail($validate->getError());
|
|
|
}
|
|
|
+
|
|
|
+ $params = $request->post();
|
|
|
+
|
|
|
try {
|
|
|
Db::beginTransaction();
|
|
|
- // 该订单状态
|
|
|
- Order::where('order_id', $request->post('order_id'))->update(['order_status_system' => 'RECVING', 'order_status_storage' => 'EXPRESSING']);
|
|
|
// 订单包含的产品
|
|
|
- $sheet = OrderSheet::where('join_sheet_order_id', $request->post('order_id'))
|
|
|
- ->select('join_sheet_goods_id')
|
|
|
- ->get();
|
|
|
- // 入配送记录表
|
|
|
- $params = $request->post();
|
|
|
- $model = OrderExpress::where('join_express_order_id',$params['order_id'])->first();
|
|
|
+ // $sheet = OrderSheet::where('join_sheet_order_id', $request->post('order_id'))
|
|
|
+ // ->select('join_sheet_goods_id')
|
|
|
+ // ->get();
|
|
|
+ if($params['express_type'] == 'S'){
|
|
|
+ $premises = SysDept::where('dept_name',$params['order_express_premises'])->first();
|
|
|
+ if(!$premises){
|
|
|
+ return json_fail("门店不存在,请重新填写");
|
|
|
+ }
|
|
|
+ $params['order_express_city'] = str_replace(',',' ',$premises->dept_city);
|
|
|
+ $params['order_express_address'] = $premises->dept_address;
|
|
|
+ $params['order_express_code'] = '';
|
|
|
+ $params['order_express_addtimes'] = strtotime($params['order_express_addtimes']);
|
|
|
+
|
|
|
+ $orderData = [
|
|
|
+ 'order_status_system'=>'CONFIRM',
|
|
|
+ 'order_status_storage'=>'EXPRESSING'
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 7天后自动完成
|
|
|
+ $redis = Redis::connection();
|
|
|
+ $key = Order::AUTOMATIC_COMPLETE_PREFIX . date('Ymd', strtotime("+7 days"));
|
|
|
+ $redis->sadd($key, $params['order_id']);
|
|
|
+
|
|
|
+ $model = new OrderExpress();
|
|
|
+ }else{
|
|
|
+ $orderData = [
|
|
|
+ 'order_status_system'=>'RECVING',
|
|
|
+ 'order_status_storage'=>'EXPRESSING'
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 15天后自动确认收货
|
|
|
+ $redis = Redis::connection();
|
|
|
+ $key = Order::AUTOMATIC_RECEIPT_PREFIX . date('Ymd', strtotime("+15 days"));
|
|
|
+ $redis->sadd($key, $params['order_id']);
|
|
|
+
|
|
|
+ $model = OrderExpress::where('join_express_order_id',$params['order_id'])->first();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 该订单状态
|
|
|
+ Order::where('order_id', $request->post('order_id'))->update($orderData);
|
|
|
+
|
|
|
+ // 入配送记录表
|
|
|
$model->join_express_order_id = $params['order_id'];
|
|
|
- $model->order_express_goods = $sheet;
|
|
|
+ $model->order_express_goods = $params['order_express_goods'];
|
|
|
$model->order_express_type = $params['order_express_type'];
|
|
|
$model->order_express_code = $params['order_express_code'];
|
|
|
$model->order_express_city = $params['order_express_city'];
|
|
|
$model->order_express_address = $params['order_express_address'];
|
|
|
- $model->order_express_mobile = $params['order_express_mobile'];
|
|
|
+ $model->order_express_mobile = $params['order_express_mobile'] ?? '';
|
|
|
$model->order_express_telephone = $params['order_express_telephone'] ?? null;
|
|
|
$model->order_express_person = $params['order_express_person'] ?? null;
|
|
|
$model->order_express_remark = $params['order_express_remark'] ?? null;
|
|
|
- $model->order_express_addtimes = time();
|
|
|
+ $model->order_express_addtimes = $params['order_express_addtimes'] ?? time();
|
|
|
$model->save();
|
|
|
|
|
|
- // 15天后自动确认收货
|
|
|
- $redis = Redis::connection();
|
|
|
- $key = Order::AUTOMATIC_RECEIPT_PREFIX . date('Ymd', strtotime("+15 days"));
|
|
|
- $redis->sadd($key, $params['order_id']);
|
|
|
-
|
|
|
Db::commit();
|
|
|
|
|
|
return json_success('发货成功');
|
|
|
} catch (\Exception $e) {
|
|
|
Db::rollBack();
|
|
|
-
|
|
|
+ dump($e->getMessage());
|
|
|
return json_fail('发货失败');
|
|
|
}
|
|
|
}
|
|
@@ -673,7 +812,7 @@ class WholeController extends Curd
|
|
|
try{
|
|
|
$express = new OrderExpress();
|
|
|
$express->join_express_order_id = $params['orderId'];
|
|
|
- $express->order_express_goods = json_encode(['sheet'=>'']);
|
|
|
+ $express->order_express_goods = $params['order_express_goods'];
|
|
|
$express->order_express_city = $params['order_express_city'];
|
|
|
$express->order_express_address = $params['order_express_address'];
|
|
|
$express->order_express_mobile = $params['order_express_mobile'];
|