data) ? $form->data : Json::decode($form->data, true); if (empty($data['open_group_id'])) { $commander_id = $form->user_id; $is_commander = 1; } else { $group_order = DepositPresaleOrder::findOne(['id' => $data['open_group_id']]); if ($group_order->commander_id == $form->user_id) throw new \Exception('团长和团员不能是同一个人'); $commander_id = $group_order->commander_id; $is_commander = 0; } // 产品按照商户重新归类组别 $mall_id_arr = array_column($order_goods, 'mall_id'); $mall_list = Mall::lists(['where' => [['id' => $mall_id_arr]], 'select' => 'id,name'], true); $mall_arr = array_column($mall_list, 'name', 'id'); $sku = $form['sku']; foreach ($order_goods as $item) { if (!isset($group_order_goods[$item['mch_id']])) { $group_order_goods[$item['mch_id']]['mch_order_info']['mch_id'] = $item['mch_id']; if ($item['mch_id'] == 0) { // 平台 if (empty($mall_arr[$item['mall_id']])) throw new Exception('商城不存在'); $group_order_goods[$item['mch_id']]['mch_order_info']['mch_name'] = $mall_arr[$item['mall_id']]; } else { // 查询商户信息 } // 主订单信息 $group_order_goods[$item['mch_id']]['mch_order_info']['commander_id'] = $commander_id; $group_order_goods[$item['mch_id']]['mch_order_info']['is_commander'] = $is_commander; $group_order_goods[$item['mch_id']]['mch_order_info']['deposit_presale_active_id'] = $data['active_id']; $group_order_goods[$item['mch_id']]['mch_order_info']['goods_id'] = $item['goods_id']; $group_order_goods[$item['mch_id']]['mch_order_info']['goods_attr_id'] = $item['goods_attr_id']; $group_order_goods[$item['mch_id']]['mch_order_info']['open_group_id'] = $data['open_group_id'] ?? 0; $group_order_goods[$item['mch_id']]['mch_order_info']['user_id'] = $item['user_id']; $group_order_goods[$item['mch_id']]['mch_order_info']['mall_id'] = $item['mall_id']; $group_order_goods[$item['mch_id']]['mch_order_info']['price'] = $item['price']; // $group_order_goods[$item['mch_id']]['mch_order_info']['deposit_presale_price'] = $item['goods_price']; $single_deposit_presale_price = isset($sku[$item['goods_id']]) ? $sku[$item['goods_id']]['deposit_presale_price'] : 0; $single_deposit_price = isset($sku[$item['goods_id']]) ? $sku[$item['goods_id']]['deposit_price'] : 0; $group_order_goods[$item['mch_id']]['mch_order_info']['deposit_presale_price'] = bcmul($single_deposit_presale_price, $item['num'], 2); $group_order_goods[$item['mch_id']]['mch_order_info']['deposit_price'] = bcmul($single_deposit_price, $item['num'], 2); $group_order_goods[$item['mch_id']]['mch_order_info']['final_payment'] = bcsub($group_order_goods[$item['mch_id']]['mch_order_info']['deposit_presale_price'], $group_order_goods[$item['mch_id']]['mch_order_info']['deposit_price'], 2); $group_order_goods[$item['mch_id']]['mch_order_info']['deposit_start_at'] = isset($sku[$item['goods_id']]) ? date('Y-m-d', $sku[$item['goods_id']]['depositPresaleActive']['deposit_start_at']) : ''; $group_order_goods[$item['mch_id']]['mch_order_info']['final_payment_start_at'] = isset($sku[$item['goods_id']]) ? date('Y-m-d', $sku[$item['goods_id']]['depositPresaleActive']['final_payment_start_at']) : ''; $group_order_goods[$item['mch_id']]['mch_order_info']['address_id'] = 0; $group_order_goods[$item['mch_id']]['mch_order_info']['remark'] = $data['remark'][$item['mch_id']] ?? ''; $group_order_goods[$item['mch_id']]['mch_order_info']['original_goods_price'] = $item['original_goods_price'] ?? 0; $group_order_goods[$item['mch_id']]['mch_order_info']['goods_price'] = $item['goods_price']; // $group_order_goods[$item['mch_id']]['mch_order_info']['pay_money'] = $item['goods_price']; $group_order_goods[$item['mch_id']]['mch_order_info']['pay_money'] = bcmul($single_deposit_price, $item['num'], 2); $group_order_goods[$item['mch_id']]['mch_order_info']['total_price'] = bcmul($item['goods_price'], $item['num'], 2); $group_order_goods[$item['mch_id']]['mch_order_info']['total_pay_price'] = bcmul($item['goods_price'], $item['num'], 2); $group_order_goods[$item['mch_id']]['mch_order_info']['num'] = $item['num']; $group_order_goods[$item['mch_id']]['mch_order_info']['goods_name'] = $item['goods_name']; $group_order_goods[$item['mch_id']]['mch_order_info']['goods_attr_name'] = $item['goods_attr_name']; $group_order_goods[$item['mch_id']]['mch_order_info']['pic_url'] = $item['pic_url']; } if (!isset($group_order_goods[$item['mch_id']]['goods'][$item['goods_id']])) { $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_id'] = $item['goods_id']; $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_price'] = 0; $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['num'] = 0; $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_name'] = $item['goods_name']; $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_details'] = []; } $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_price'] += $item['goods_price']; // $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['original_goods_price'] += ($item['original_goods_price'] ?? 0); $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['num'] += $item['num']; $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_details'][] = $item; } // 写入组别 $form['group_order_goods'] = $group_order_goods; $form['address_id'] = $data['address_id']; return $form; } catch (Exception $e) { $this->setError($e->getMessage()); return false; } } }