public static function combinePackage($tableName, $plateform_arr, $carrierIds, $id_array, $storeId = 1) { self::initDB(); $list = self::selectList($tableName, $plateform_arr, $carrierIds, $id_array); //var_dump($list); exit; if (!$list) { self::$errCode = 301; self::$errMsg = "没有需要合并的订单!"; return false; } /*foreach($list as $key=>$value){ $key = $value['id']; } var_dump($key); exit;*/ BaseModel::begin(); $combineNum = 0; foreach ($list as $key => $value) { $where = "b.userName = '******'userName']}' \n\t\t\t\t\tAND b.countryName = '{$value['countryName']}' \n\t\t\t\t\tAND a.accountId = {$value['accountId']} \n\t\t\t\t\tAND a.transportId = {$value['transportId']} \n\t\t\t\t\tAND b.state='{$value['state']}' \n\t\t\t\t\tAND b.city='{$value['city']}' \n\t\t\t\t\tAND b.street='{$value['street']}' \n\t\t\t\t\tAND a.orderType={$value['orderType']}\n\t\t\t\t\tAND a.calcWeight<=2 \n\t\t\t\t\tAND a.isLock=0 \n\t\t\t\t\tAND a.is_delete=0 \n\t\t\t\t\tAND a.combinePackage=0 \n\t\t\t\t\tAND a.orderStatus={$value['orderStatus']}\n\t\t\t\t\tAND a.orderType={$value['orderType']}\n\t\t\t\t\tAND is_delete = 0 AND storeId = " . $storeId; $records = combinePackageModel::selectRecord($tableName, $where, $id_array); //var_dump($records); exit; if (!$records) { continue; } else { $weightlists = array(); $orderinfo = array(); $countryName = $records[0]['countryName']; $transportId = $records[0]['transportId']; foreach ($records as $record) { $omOrderId = $record['id']; $omOrderId = $record['id']; $orderinfo[$record['id']] = $record; $arrinfo = CommonModel::calcNowOrderWeight($omOrderId); //var_dump($arrinfo); exit; $realweight = $arrinfo[0]; $realcosts = $arrinfo[2]; $itemprices = $arrinfo[3]; $weightlists[$omOrderId] = $realweight; } //var_dump($weightlists); exit; $keyarray = array(); $keyarrays = array(); $checkweight = 0; foreach ($weightlists as $wk => $weightlist) { $checkweight += $weightlist; if ($checkweight > 1.85) { $keyarrays[] = $keyarray; $keyarray = array(); $checkweight = $weightlist; $keyarray[] = $wk; } else { $keyarray[] = $wk; } } if (!empty($keyarray)) { $keyarrays[] = $keyarray; } //var_dump($keyarrays); echo "<br>"; foreach ($keyarrays as $orderlist) { if (count($orderlist) < 2) { continue; } $ordervalueweight = array(); $ordervalueactualTotal = array(); foreach ($orderlist as $orderid) { $ordervalueweight[$orderid] = $weightlists[$orderid]; $ordervalueactualTotal[$orderid] = $orderinfo[$orderid]['actualTotal']; } //var_dump($ordervalueactualTotal); exit; //var_dump($ordervalueweight); exit; $firstorder = array_shift($orderlist); //第一个订单编号信息 //var_dump($firstorder); $combineInfo = CommonModel::calcshippingfee(array_sum($ordervalueweight), $countryName, array_sum($ordervalueactualTotal), $transportId); //邮寄方式计算 //var_dump($combineInfo); exit; $weight2fee = calceveryweight($ordervalueweight, $combineInfo['fee']['fee']); //var_dump($weight2fee); exit; $firstweightfee = array_shift($weight2fee); //第一个订单重量运费信息 $data = array(); $data['combinePackage'] = 1; $data['orderStatus'] = C('STATEPENDING'); $data['orderType'] = C('STATEPENDING_CONPACK'); $where = ' WHERE id = ' . $firstorder; if (!OrderindexModel::updateOrder($tableName, $data, $where)) { self::$errCode = 303; self::$errMsg = "更新主订单失败!"; BaseModel::rollback(); return false; } foreach ($orderlist as $sonorder) { $data['combinePackage'] = 2; $data['orderStatus'] = C('STATEPENDING'); $data['orderType'] = C('STATEPENDING_CONPACK'); $where = ' WHERE id = ' . $sonorder; if (!OrderindexModel::updateOrder($tableName, $data, $where)) { self::$errCode = 304; self::$errMsg = "更新子订单失败!"; BaseModel::rollback(); return false; } if (!OrderRecordModel::insertCombineRecord($firstorder, $sonorder)) { self::$errCode = 305; self::$errMsg = "插入订单合并记录失败!"; BaseModel::rollback(); return false; } } $combineNum++; } } } self::$errCode = 200; self::$errMsg = "合并包裹操作成功!"; BaseModel::commit(); BaseModel::autoCommit(); return $combineNum; }
/** * 搜索真实料号信息列表 * @para $data as array * return true */ public static function getRealskulist($omOrderId, $tableName, $where, $storeId = 1) { !self::$dbConn ? self::initDB() : null; $sql = "SELECT id,combinePackage FROM {$tableName} WHERE is_delete = 0 AND storeId = " . $storeId . " AND id = " . $omOrderId . " " . $where; $query = self::$dbConn->query($sql); if ($query) { $skuinfos = array(); while ($orderData = self::$dbConn->fetch_array($query)) { //var_dump($orderData); exit; $omOrderId = $orderData['id']; $combinePackage = $orderData['combinePackage']; $orderdetails = self::showOnlyOrderDetailList($tableName, 'where omOrderId = ' . $omOrderId); //var_dump($orderdetails); echo "<br>"; foreach ($orderdetails as $_k => $odlist) { $sku = trim($odlist['sku']); $amount = $odlist['amount']; $sku_arr = GoodsModel::get_realskuinfo($sku); //var_dump($sku_arr); exit; foreach ($sku_arr as $or_sku => $or_nums) { if (isset($skuinfos[$or_sku])) { $skuinfos[$or_sku] += $or_nums * $amount; } else { $skuinfos[$or_sku] = $or_nums * $amount; } } } if ($combinePackage == 1) { $_omOrderids = combinePackageModel::selectRecordByOrderId($omOrderId); if ($_omOrderids) { foreach ($_omOrderids as $_omOrderId) { $_skuinfos = self::getRealskulist($_omOrderId, $tableName, $where, $storeId); foreach ($_skuinfos as $_sku => $_nums) { if (isset($_skuinfos[$_sku])) { $skuinfos[$_sku] += $_nums; } else { $skuinfos[$_sku] = $_nums; } } } } } } return $skuinfos; } else { self::$errCode = "003"; self::$errMsg = "error"; return false; } }