data) ? $form->data : Json::decode($form->data, true); $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'); if($data['marketing_type']!=AddonsEnum::ADDONS_NAME_LUCKY_GROUP)$data['marketing_type'] = AddonsEnum::ADDONS_NAME_LUCKY_GROUP; if ($this->checkMarketingType($data) == false) throw new Exception('营销类型有误'); // 产品按照商户重新归类组别 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']['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']['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']; $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']['marketing_type'] = $data['marketing_type'] ?? ''; $group_order_goods[$item['mch_id']]['mch_order_info']['marketing_id'] = $data['marketing_id'] ?? 0; } else { $group_order_goods[$item['mch_id']]['mch_order_info']['original_goods_price'] += $item['original_goods_price']; $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']['marketing_type'] = $data['marketing_type'] ?? ''; } 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']]['original_goods_price'] = 0; } $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']; $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'] = isset($data['address_id']) ? $data['address_id'] : 0; return $form; } catch (Exception $e) { $this->setError($e->getMessage()); return false; } } }