public function re_choice_ads($attr, $old_invoice)
 {
     $DB = $this->get_read_pdo();
     $invoice_service = new Invoice();
     $invoice_adids = $invoice_service->get_invoice_adids_by_invoiceid($this->id);
     if (is_array($attr['ids'])) {
         $del_adids = array_diff($invoice_adids, $attr['ids']);
         $ins_adids = array_diff($attr['ids'], $invoice_adids);
     } else {
         $adids = array();
         array_push($adids, $attr['ids']);
         $del_adids = array_diff($invoice_adids, $adids);
         $ins_adids = array_diff($adids, $invoice_adids);
     }
     if (count($del_adids) > 0) {
         $del_rows = $invoice_service->delete_invoice_ad_by_invoiceid_adid($this->id, implode("','", $del_adids));
     }
     $ad_service = new AD();
     $start = $old_invoice['start'];
     $end = $old_invoice['end'];
     if (count($ins_adids) > 0) {
         $quote_res = $ad_service->get_quote_by_ads($start, $end, implode("','", $ins_adids));
         $invoice_arr = $this->construct_invoice_ads($quote_res, $this->id);
         $this->save_invoice_ad_info($DB, $invoice_arr);
     }
     $res = $invoice_service->get_invoice_ad_by_invoiceid($this->id);
     $invoice_attr = $this->get_params_by_income($res, $old_invoice['comment']);
     $check = SQLHelper::update($DB, self::$T_INVOICE, $invoice_attr, $this->id);
     if (!$check && $check != 0) {
         throw new Exception('更新发票信息失败。', 21);
     }
     $attr = array_merge(array('id' => $this->id, 'products' => $res));
     return $attr;
 }