Ignore:
Timestamp:
2011/02/11 18:57:37 (15 years ago)
Author:
kimoto
Message:

LC_Page_Mypage_History リファクタリング
*lfGetShippingDataをSC_Helper_DBへ移動
*lfGetOrderDetailもSC_Helper_DBへ移動して管理側とsqlを統一すべき

Location:
branches/version-2_5-dev/data/class
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php

    r20116 r20144  
    455455        return array($point, $rollback_point); 
    456456    } 
    457      
     457 
    458458 
    459459 
     
    869869    /** 
    870870     * カテゴリ数の登録を行う. 
    871      *  
     871     * 
    872872     * 
    873873     * @param SC_Query $objQuery SC_Query インスタンス 
     
    877877    function sfCountCategory($objQuery = NULL, $is_force_all_count = false){ 
    878878        $objProduct = new SC_Product(); 
    879          
     879 
    880880        if($objQuery == NULL) { 
    881881            $objQuery =& SC_Query::getSingletonInstance(); 
    882882        } 
    883          
     883 
    884884        $is_out_trans = false; 
    885885        if(!$objQuery->inTransaction()){ 
     
    887887            $is_out_trans = true; 
    888888        } 
    889          
     889 
    890890        //共通のfrom/where文の構築 
    891891        $sql_where = 'alldtl.del_flg = 0 AND alldtl.status = 1'; 
     
    897897            $from = " dtb_products as alldtl "; 
    898898        } 
    899          
     899 
    900900        //dtb_category_countの構成 
    901901        // 各カテゴリに所属する商品の数を集計。集計対象には子カテゴリを含まない。 
    902902        // 2.5で消える予定だったが復活させます。DELETE処理は無くしました。 
    903          
     903 
    904904        //まずテーブル内容の元を取得 
    905905        if(!$is_force_all_count) { 
     
    922922 
    923923        $arrCategoryCountNew = $objQuery->getAll($sql); 
    924         // 各カテゴリに所属する商品の数を集計。集計対象には子カテゴリを「含む」。         
     924        // 各カテゴリに所属する商品の数を集計。集計対象には子カテゴリを「含む」。 
    925925        //差分を取得して、更新対象カテゴリだけを確認する。 
    926926 
    927         //各カテゴリ毎のデータ値において以前との差を見る         
     927        //各カテゴリ毎のデータ値において以前との差を見る 
    928928        //古いデータの構造入れ替え 
    929929        $arrOld = array(); 
     
    950950            } 
    951951        } 
    952          
     952 
    953953        //対象IDが無ければ終了 
    954954        if(count($arrDiffCategory_id) == 0){ 
     
    961961        //差分対象カテゴリIDの重複を除去 
    962962        $arrDiffCategory_id = array_unique($arrDiffCategory_id); 
    963          
     963 
    964964        //dtb_category_countの更新 差分のあったカテゴリだけ更新する。 
    965965        foreach($arrDiffCategory_id as $cid) { 
     
    977977            } 
    978978        } 
    979          
     979 
    980980        //差分があったIDとその親カテゴリIDのリストを取得する 
    981981        $arrTgtCategory_id = array(); 
     
    987987            } 
    988988        } 
    989          
     989 
    990990        //重複を取り除く 
    991991        $arrTgtCategory_id = array_unique($arrTgtCategory_id); 
     
    20772077        $this->sfRegistTempOrder($uniqid, $sqlval); 
    20782078    } 
     2079 
     2080 
     2081    /** 
     2082     * 配送情報の取得. 
     2083     * TODO リファクタリング 
     2084     */ 
     2085    function sfGetShippingData($orderId) { 
     2086        $objQuery =& SC_Query::getSingletonInstance(); 
     2087        $objProduct = new SC_Product(); 
     2088        $objQuery->setOrder('shipping_id'); 
     2089        $arrRet = $objQuery->select("*", "dtb_shipping", "order_id = ?", array($orderId)); 
     2090 
     2091        foreach (array_keys($arrRet) as $key) { 
     2092            $objQuery->setOrder('shipping_id'); 
     2093            $arrItems = $objQuery->select("*", "dtb_shipment_item", "order_id = ? AND shipping_id = ?", 
     2094                                       array($orderId, $arrRet[$key]['shipping_id'])); 
     2095            foreach ($arrItems as $itemKey => $arrDetail) { 
     2096                foreach ($arrDetail as $detailKey => $detailVal) { 
     2097                    $arrRet[$key]['shipment_item'][$arrDetail['product_class_id']][$detailKey] = $detailVal; 
     2098                } 
     2099 
     2100                $arrRet[$key]['shipment_item'][$arrDetail['product_class_id']]['productsClass'] =& $objProduct->getDetailAndProductsClass($arrDetail['product_class_id']); 
     2101            } 
     2102        } 
     2103        return $arrRet; 
     2104    } 
     2105 
    20792106} 
    20802107?> 
  • branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_History.php

    r20116 r20144  
    2323 
    2424// {{{ requires 
    25 require_once(CLASS_REALDIR . "pages/LC_Page.php"); 
     25require_once(CLASS_REALDIR . "pages/mypage/LC_Page_AbstractMypage.php"); 
    2626 
    2727/** 
     
    3232 * @version $Id$ 
    3333 */ 
    34 class LC_Page_Mypage_History extends LC_Page { 
     34class LC_Page_Mypage_History extends LC_Page_AbstractMypage { 
    3535 
    3636    // }}} 
     
    4444    function init() { 
    4545        parent::init(); 
    46         $this->tpl_navi = TEMPLATE_REALDIR . 'mypage/navi.tpl'; 
    47         $this->tpl_mainno = 'mypage'; 
    48         $this->tpl_mypageno = 'index'; 
    49         $this->tpl_subtitle = '購入履歴詳細'; 
     46        $this->tpl_mypageno     = 'index'; 
     47        $this->tpl_subtitle     = '購入履歴詳細'; 
    5048        $this->httpCacheControl('nocache'); 
    51         $masterData = new SC_DB_MasterData_Ex(); 
    52         $this->arrMAILTEMPLATE = $masterData->getMasterData("mtb_mail_template"); 
    53         $this->arrPref = $masterData->getMasterData('mtb_pref'); 
     49 
     50        $masterData             = new SC_DB_MasterData_Ex(); 
     51        $this->arrMAILTEMPLATE  = $masterData->getMasterData("mtb_mail_template"); 
     52        $this->arrPref          = $masterData->getMasterData('mtb_pref'); 
    5453   } 
    5554 
     
    6160    function process() { 
    6261        parent::process(); 
    63         $this->action(); 
    64         $this->sendResponse(); 
    6562    } 
    6663 
     
    7168     */ 
    7269    function action() { 
    73         $objQuery = new SC_Query(); 
    74         $objCustomer = new SC_Customer(); 
    75         $objDb = new SC_Helper_DB_Ex(); 
     70        $objQuery       = new SC_Query(); 
     71        $objCustomer    = new SC_Customer(); 
     72        $objDb          = new SC_Helper_DB_Ex(); 
    7673 
    77         // FIXME 他の画面と同様のバリデーションを行なう 
    7874        if (!SC_Utils_Ex::sfIsInt($_GET['order_id'])) { 
    79             SC_Utils_Ex::sfDispException(); 
     75            SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR); 
    8076        } 
    8177 
    82         $orderId = $_GET['order_id']; 
     78        $order_id        = $_GET['order_id']; 
     79        $arrOrderData   = $this->lfGetOrderData($objCustomer->getValue('customer_id'), $order_id); 
    8380 
    84         //不正アクセス判定 
    85         $from = "dtb_order"; 
    86         $where = "del_flg = 0 AND customer_id = ? AND order_id = ? "; 
    87         $arrval = array($objCustomer->getValue('customer_id'), $orderId); 
    88         //DBに情報があるか判定 
    89         $cnt = $objQuery->count($from, $where, $arrval); 
    90         //ログインしていない、またはDBに情報が無い場合 
    91         if (!$objCustomer->isLoginSuccess(true) || $cnt == 0){ 
     81        if (empty($arrOrderData)){ 
    9282            SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR); 
    9383        } 
    9484 
    9585        //受注詳細データの取得 
    96         $this->arrDisp = $this->lfGetOrderData($orderId); 
    97         $this->arrShipping = $this->lfGetShippingData($orderId); 
    98         $this->isMultiple = count($this->arrShipping) > 1; 
     86        $this->tpl_arrOrderData = $arrOrderData[0]; 
     87 
     88        $this->arrShipping      = $objDb->sfGetShippingData($order_id); 
     89        $this->isMultiple       = count($this->arrShipping) > 1; 
    9990        // 支払い方法の取得 
    100         $this->arrPayment = $objDb->sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 
     91        $this->arrPayment       = $objDb->sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 
    10192        // お届け時間の取得 
    102         $arrRet = $objDb->sfGetDelivTime($this->arrDisp['payment_id']); 
    103         $this->arrDelivTime = SC_Utils_Ex::sfArrKeyValue($arrRet, 'time_id', 'deliv_time'); 
    104  
    105         //マイページトップ顧客情報表示用 
    106         $this->tpl_login = true; 
    107         $this->CustomerName1 = $objCustomer->getvalue('name01'); 
    108         $this->CustomerName2 = $objCustomer->getvalue('name02'); 
    109         $this->CustomerPoint = $objCustomer->getvalue('point'); 
    110  
     93        $this->arrDelivTime     = SC_Utils_Ex::sfArrKeyValue($objDb->sfGetDelivTime($this->tpl_arrOrderData['payment_id']), 
     94                                                            'time_id', 
     95                                                            'deliv_time'); 
    11196        // 受注商品明細の取得 
    112         $this->tpl_arrOrderDetail = $this->lfGetOrderDetail($orderId); 
    113  
     97        $this->tpl_arrOrderDetail = $this->lfGetOrderDetail($order_id); 
    11498        // 受注メール送信履歴の取得 
    115         $this->tpl_arrMailHistory = $this->lfGetMailHistory($orderId); 
     99        $this->tpl_arrMailHistory = $this->lfGetMailHistory($order_id); 
    116100 
    117101    } 
     
    132116     * @return array 受注の内容 
    133117     */ 
    134     function lfGetOrderData($orderId) { 
     118    function lfGetOrderData($customer_id, $order_id) { 
    135119        // DBから受注情報を読み込む 
    136         $objQuery = new SC_Query(); 
    137         /* 
    138         $col = "order_id, create_date, payment_id, subtotal, tax, use_point, add_point, discount, "; 
    139         $col .= "deliv_fee, charge, payment_total, deliv_name01, deliv_name02, deliv_kana01, deliv_kana02, "; 
    140         $col .= "deliv_zip01, deliv_zip02, deliv_pref, deliv_addr01, deliv_addr02, deliv_tel01, deliv_tel02, deliv_tel03, deliv_time_id, deliv_date "; 
    141         */ 
    142         $from = "dtb_order"; 
    143         $where = "order_id = ?"; 
    144         $arrRet = $objQuery->select("*", $from, $where, array($orderId)); 
    145         return $arrRet[0]; 
    146     } 
    147  
    148     /** 
    149      * 配送情報の取得. 
    150      * TODO リファクタリング 
    151      */ 
    152     function lfGetShippingData($orderId) { 
    153         $objQuery =& SC_Query::getSingletonInstance(); 
    154         $objProduct = new SC_Product(); 
    155         $objQuery->setOrder('shipping_id'); 
    156         $arrRet = $objQuery->select("*", "dtb_shipping", "order_id = ?", array($orderId)); 
    157         foreach (array_keys($arrRet) as $key) { 
    158             $objQuery->setOrder('shipping_id'); 
    159             $arrItems = $objQuery->select("*", "dtb_shipment_item", "order_id = ? AND shipping_id = ?", 
    160                                        array($orderId, $arrRet[$key]['shipping_id'])); 
    161             foreach ($arrItems as $itemKey => $arrDetail) { 
    162                 foreach ($arrDetail as $detailKey => $detailVal) { 
    163                     $arrRet[$key]['shipment_item'][$arrDetail['product_class_id']][$detailKey] = $detailVal; 
    164                 } 
    165  
    166                 $arrRet[$key]['shipment_item'][$arrDetail['product_class_id']]['productsClass'] =& $objProduct->getDetailAndProductsClass($arrDetail['product_class_id']); 
    167             } 
    168         } 
    169         return $arrRet; 
     120        $objQuery   =& SC_Query::getSingletonInstance(); 
     121        $from       = "dtb_order"; 
     122        $where      = "del_flg = 0 AND customer_id = ? AND order_id = ?"; 
     123        return $objQuery->select("*", $from, $where, array($customer_id, $order_id)); 
    170124    } 
    171125 
     
    176130     * @return array 受注商品明細の内容 
    177131     */ 
    178     function lfGetOrderDetail($orderId) { 
    179         $objQuery = new SC_Query(); 
    180         $dbFactory = SC_DB_DBFactory_Ex::getInstance(); 
     132    function lfGetOrderDetail($order_id) { 
     133        $objQuery   =& SC_Query::getSingletonInstance(); 
     134        $dbFactory  = SC_DB_DBFactory_Ex::getInstance(); 
    181135 
    182         $col = "od.product_id AS product_id, od.product_code AS product_code, od.product_name AS product_name, od.classcategory_name1 AS classcategory_name1,"; 
    183         $col .= "od.classcategory_name2 AS classcategory_name2, od.price AS price, od.quantity AS quantity, od.point_rate AS point_rate"; 
    184         $col .= ",CASE WHEN EXISTS(SELECT * FROM dtb_products WHERE product_id = od.product_id AND del_flg = 0 AND status = 1) THEN '1' ELSE '0' END AS enable"; 
    185         $col .= ",o.status AS status, pc.product_type_id AS product_type_id, o.payment_date AS payment_date, od.product_class_id as product_class_id, "; 
    186         $col .= $dbFactory->getDownloadableDaysWhereSql(); 
    187         $col .= " AS effective"; 
    188         $where = "p.product_id = od.product_id AND pc.product_id = od.product_id AND pc.product_class_id = od.product_class_id AND od.order_id = o.order_id AND od.order_id = ?"; 
    189         $arrRet = $objQuery->select($col, "dtb_products p, dtb_products_class pc, dtb_order_detail od, dtb_order o", $where,array($orderId)); 
    190         return $arrRet; 
     136        $col    = " 
     137            od.product_id AS product_id, 
     138            od.product_code AS product_code, 
     139            od.product_name AS product_name, 
     140            od.classcategory_name1 AS classcategory_name1, 
     141            od.classcategory_name2 AS classcategory_name2, 
     142            od.price AS price, 
     143            od.quantity AS quantity, 
     144            od.point_rate AS point_rate 
     145            ,CASE WHEN EXISTS(SELECT * FROM dtb_products WHERE product_id = od.product_id AND del_flg = 0 AND status = 1) THEN '1' ELSE '0' END AS enable 
     146            ,o.status AS status, 
     147            pc.product_type_id AS product_type_id, 
     148            o.payment_date AS payment_date, 
     149            od.product_class_id as product_class_id, 
     150            ".$dbFactory->getDownloadableDaysWhereSql()." 
     151            AS effective"; 
     152 
     153        $from   = "dtb_products p, dtb_products_class pc, dtb_order_detail od, dtb_order o"; 
     154        $where  = "p.product_id = od.product_id AND pc.product_id = od.product_id AND pc.product_class_id = od.product_class_id AND od.order_id = o.order_id AND od.order_id = ?"; 
     155 
     156        return $objQuery->select($col, $from, $where, array($order_id)); 
    191157    } 
    192158 
     
    194160     * 受注メール送信履歴の取得 
    195161     * 
    196      * @param integer $orderId 注文番号 
     162     * @param integer $order_id 注文番号 
    197163     * @return array 受注メール送信履歴の内容 
    198164     */ 
    199     function lfGetMailHistory($orderId) { 
    200         $objQuery = new SC_Query(); 
    201         $col = 'send_date, subject, template_id, send_id'; 
    202         $where = 'order_id = ?'; 
     165    function lfGetMailHistory($order_id) { 
     166        $objQuery   =& SC_Query::getSingletonInstance(); 
     167        $col        = 'send_date, subject, template_id, send_id'; 
     168        $where      = 'order_id = ?'; 
    203169        $objQuery->setOrder('send_date DESC'); 
    204         $this->arrMailHistory = $objQuery->select($col, 'dtb_mail_history', $where, array($orderId)); 
     170        return $objQuery->select($col, 'dtb_mail_history', $where, array($order_id)); 
    205171    } 
    206172} 
Note: See TracChangeset for help on using the changeset viewer.