<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                購物流程: 生成訂單 --> 支付訂單 --> 商家發貨 --> 確認收貨 --> 評價訂單 1.買家在生成訂單之后,支付訂單之前可以取消訂單 2.買家在支付訂單之后,商家發貨之前可以申請退款 3.買家在確認收貨之后可以申請退貨 #### 1.生成訂單 文件路徑:\shop\controllers\Buyer\OrderCtl.php 控制器:Buyer_OrderCtl 方法:addOrder() 判斷選項的支付方式是否合法 ~~~ /** * 如果不是選 在線支付 或 貨到付款 ,則提示錯誤 */ if(!in_array($pay_way_id, [1,2])){ $data = []; $status = 250; $msg = "操作錯誤,請刷新當前頁面!"; return $this->data->addBody(-140, $data, $msg, $status); } ~~~ 檢測是否存在加價購商品,若存在則檢測加價購商品信息是否正確。檢測加價購商品正確性后重組加價購商品的活動規則,查找出活動中所有規則下的加價購商品信息 ~~~ if($increase_arr) { //檢驗加價購商品信息是否正確 $increase_price_info = $this->checkIncreaseGoods($increase_arr, $cart_id); if(!$increase_price_info) { return $this->data->addBody(-140, array('code'=>1), 'failure1', 250); } $increase_goods_id = array_column($increase_arr, 'increase_goods_id'); } ~~~ 判斷訂單來源 ~~~ //wap端下單 $order_from = Order_StateModel::FROM_WAP; //pc端下單 $order_from = Order_StateModel::FROM_PC; ~~~ 判斷支付方式為在線支付還是貨到付款,如果是貨到付款則訂單狀態直接為待發貨狀態,如果是在線支付則訂單狀態為待付款 ~~~ if($pay_way_id == PaymentChannlModel::PAY_ONLINE) { $order_status = Order_StateModel::ORDER_WAIT_PAY; } if($pay_way_id == PaymentChannlModel::PAY_CONFIRM) { $order_status = Order_StateModel::ORDER_WAIT_PREPARE_GOODS; } ~~~ 獲取用戶的平臺折扣信息 ~~~ $user_info = $User_InfoModel->getOne($user_id); ~~~ 判斷是否使用了代金券,如果使用了代金券,則處理代金券的信息 ~~~ if ($voucher_id) { //查找代金券的信息 $Voucher_BaseModel = new Voucher_BaseModel(); $voucher_cond_row['voucher_id:IN'] = $voucher_id; $voucher_row = $Voucher_BaseModel->getByWhere($voucher_cond_row); $shop_voucher_row = array(); foreach ($voucher_row as $voukey => $vouval) { $shop_voucher_row[$vouval['voucher_shop_id']] = $vouval; } } ~~~ 根據cart_id查找出購物車中的商品信息 ~~~ $data = $CartModel->getCardList($cond_row, $order_row); ~~~ 計算購物車中每件商品的最后優惠的實際價格 1.店鋪商品總價 = 加價購商品總價 + 購物車商品總價(按照限時折扣和團購價計算) 2.判斷平臺是否開啟會員折扣只限自營店鋪使用。如果是平臺自營店鋪需要計算會員折扣,非平臺自營不需要計算折扣 3.計算每個商品訂單實際支付的金額,以及每件商品的實際支付單價為多少 4.平臺紅包的使用情況 查找收貨地址,計算運費 ~~~ $User_AddressModel = new User_AddressModel(); $city_id = 0; if($address_id) { $user_address = $User_AddressModel->getOne($address_id); $city_id = $user_address['user_address_city_id']; } $Transport_TemplateModel = new Transport_TemplateModel(); $transport_cost = $Transport_TemplateModel->cartTransportCost($city_id, $cart_id); ~~~ 生成訂單(order_base) ~~~ //生成訂單號 $prefix = sprintf('%s-%s-', Yf_Registry::get('shop_app_id'), date('YmdHis')); $order_number = $Number_SeqModel->createSeq($prefix); $order_id = sprintf('%s-%s-%s-%s', 'DD', $val['shop_user_id'], $key, $order_number); //生成訂單發票信息 $Order_InvoiceModel = new Order_InvoiceModel(); $order_invoice_id = $Order_InvoiceModel->getOrderInvoiceId($invoice_id,$invoice_title,$invoice_content,$order_id); //生成訂單 $flag1 = $this->tradeOrderModel->addBase($order_row); //修改用戶使用的紅包信息 if($rpacket_id) { if(isset($rpacket_id[$key])) { $redPacket_BaseModel = new RedPacket_BaseModel(); $field_row = array(); $field_row['redpacket_state'] = RedPacket_BaseModel::USED; $field_row['redpacket_order_id'] = $order_id; $flag5 = $redPacket_BaseModel->editRedPacket($rpacket_id[$key], $field_row); $flag = $flag && $flag5; } } //修改用戶使用的代金券信息 if($val['voucher_id']) { if(isset($shop_voucher_row[$key])) { $Voucher_BaseModel = new Voucher_BaseModel(); $flag6 = $Voucher_BaseModel->changeVoucherState($val['voucher_id'], $order_id); //代金券使用提醒 $message = new MessageModel(); $message->sendMessage('The use of vouchers to remind', Perm::$userId, Perm::$row['user_account'], NULL, $shop_name = NULL, 0, MessageModel::USER_MESSAGE); $flag = $flag && $flag6; } } //生成訂單商品信息(order_goods) $flag2 = $Order_GoodsModel->addGoods($order_goods_row); //生成交易快照 $Order_GoodsSnapshot->addSnapshot($order_goods_snapshot_add_row); //刪除商品庫存 $Goods_BaseModel->delStock($v['goods_id'], $v['goods_num']); //從購物車中刪除已生成訂單的商品 $CartModel->removeCart($v['cart_id']); ~~~ 加價購、滿即送等活動商品信息插入訂單商品表 將單個店鋪訂單信息同步到paycenter中,并將paycenter中生成的支付單號寫入訂單表中 ~~~ //支付中心生成訂單 $key = Yf_Registry::get('shop_api_key'); $url = Yf_Registry::get('paycenter_api_url'); $shop_app_id = Yf_Registry::get('shop_app_id'); $formvars = array(); $formvars['app_id'] = $shop_app_id; $formvars['from_app_id'] = Yf_Registry::get('shop_app_id'); $formvars['consume_trade_id'] = $order_row['order_id']; $formvars['order_id'] = $order_row['order_id']; $formvars['buy_id'] = Perm::$userId; $formvars['buyer_name'] = Perm::$row['user_account']; $formvars['seller_id'] = $order_row['seller_user_id']; $formvars['seller_name'] = $order_row['seller_user_name']; $formvars['order_state_id'] = $order_row['order_status']; $formvars['order_payment_amount'] = $order_row['order_payment_amount']; $formvars['order_commission_fee'] = $order_row['order_commission_fee']; $formvars['trade_remark'] = $order_row['order_message']; $formvars['trade_create_time'] = $order_row['order_create_time']; $formvars['trade_title'] = $trade_title; //商品名稱 - 標題 $rs = get_url_with_encrypt($key, sprintf('%s?ctl=Api_Pay_Pay&met=addConsumeTrade&typ=json',$url), $formvars); ~~~ 生成合并支付訂單 ~~~ //生成合并支付訂單 $key = Yf_Registry::get('shop_api_key'); $url = Yf_Registry::get('paycenter_api_url'); $shop_app_id = Yf_Registry::get('shop_app_id'); $formvars = array(); $formvars['inorder'] = $inorder; $formvars['uprice'] = $uprice; $formvars['buyer'] = Perm::$userId; $formvars['trade_title'] = $utrade_title; $formvars['buyer_name'] = Perm::$row['user_account']; $formvars['app_id'] = $shop_app_id; $formvars['from_app_id'] = Yf_Registry::get('shop_app_id'); $rs = get_url_with_encrypt($key, sprintf('%s?ctl=Api_Pay_Pay&met=addUnionOrder&typ=json', $url), $formvars); ~~~ 判斷訂單生成是否成功,如果成功則將信息推送到統計中心添加訂單統計,將下單成功信息通過IM推送給商家。訂單提交失敗,將paycenter中生成的訂單刪除。 #### 2.支付訂單 支付單與訂單說明: 用戶在店鋪A和店鋪B中購買了100元的商品a和50元的商品b。這兩件商品在結算時同時結算,生成訂單Oa和訂單Ob。Paycenter中生成150元的合并支付單Uab,100元的合并支付訂單Ua,50元的合并支付訂單Ub。 用戶在店鋪C中購買10元的商品c。結算生成訂單Oc。Paycenter中生成10元的合并支付訂單Uc1(相當于上個例子中的Uab),生成10元的合并支付訂單Uc2(相當于上個例子中的Ua或者Ub)。 頁面顯示 文件路徑:\paycenter\controllers\InfoCtl.php 控制器:InfoCtl 方法:pay() 視圖文件:\paycenter\views\default\InfoCtl\pay.php ~~~ //判斷用戶選擇哪種支付方式,如果選擇在線支付則調用相應的方法,如果選擇賬戶余額支付則調用money方法 if(online_payway) { window.location.href = SITE_URL + "?ctl=Pay&met=" + online_payway + "&trade_id=" + uorder_id; } else { $.post(SITE_URL + "?ctl=Pay&met=money&typ=json" ,{trade_id:uorder_id},function(data){ if(data.status == 200) { window.location.href = data.data.return_app_url + '?ctl=Buyer_Order&met=<?=$order_g_type?>'; } else { $(".loading-msg").html('支付失敗,請重新支付!'); window.location.reload(); } }) } ~~~ 文件路徑:\paycenter\controllers\PayCtl.php 控制器:PayCtl.php 方法:money() ~~~ //獲取合并訂單號的信息 $uorder = $Union_OrderModel->getOne($trade_id); //判斷訂單狀態是否為等待付款狀態 if($uorder['order_state_id'] == Order_StateModel::ORDER_WAIT_PAY) { $pay_flag = false; $pay_user_id = 0; //判斷當前用戶是否是下單者,并且訂單狀態是否是待付款狀態 if($uorder['buyer_id'] == Perm::$userId) { $pay_flag = true; $pay_user_id = $uorder['buyer_id']; } else { //判斷當前用戶是否是下單者的主管賬戶 $key = Yf_Registry::get('shop_api_key'); $url = Yf_Registry::get('shop_api_url'); $shop_app_id = Yf_Registry::get('shop_app_id'); $formvars = array(); $formvars['app_id'] = $shop_app_id; $formvars['user_id'] = Perm::$userId; $formvars['sub_user_id'] = $uorder['buyer_id']; $sub_user = get_url_with_encrypt($key, sprintf('%s?ctl=Api_User_Info&met=checkSubUser&typ=json',$url), $formvars); if(!empty($sub_user['data']) && $sub_user['status'] == 200) { $pay_flag = true; $pay_user_id = Perm::$userId; } } if($pay_flag) { //修改訂單表中的各種狀態 $flag = $Consume_DepositModel->notifyShop($trade_id,$pay_user_id); if ($flag['status'] == 200) { //查找回調地址 $User_AppModel = new User_AppModel(); $user_app = $User_AppModel->getOne($uorder['app_id']); $return_app_url = $user_app['app_url']; $data['return_app_url'] = $return_app_url; $msg = 'success'; $status = 200; } else { $msg = _('failure'); $status = 250; } } else { $msg = _('failure'); $status = 250; } } ~~~ 文件路徑:\paycenter\controllers\PayCtl.php 控制器:PayCtl.php 方法:alipay() ~~~ //判斷訂單狀態是否為等待付款狀態 if($trade_row['order_state_id'] == Order_StateModel::ORDER_WAIT_PAY) { $pay_flag = false; $pay_user_id = 0; //判斷當前用戶是否是下單者,并且訂單狀態是否是待付款狀態 if($trade_row['buyer_id'] == Perm::$userId) { $pay_flag = true; $pay_user_id = $trade_row['buyer_id']; } else { //判斷當前用戶是否是下單者的主管賬戶 $key = Yf_Registry::get('shop_api_key'); $url = Yf_Registry::get('shop_api_url'); $shop_app_id = Yf_Registry::get('shop_app_id'); $formvars = array(); $formvars['app_id'] = $shop_app_id; $formvars['user_id'] = Perm::$userId; $formvars['sub_user_id'] = $trade_row['buyer_id']; $sub_user = get_url_with_encrypt($key, sprintf('%s?ctl=Api_User_Info&met=checkSubUser&typ=json',$url), $formvars); if(!empty($sub_user['data']) && $sub_user['status'] == 200) { $pay_flag = true; $pay_user_id = Perm::$userId; } } //ignore 給webpos使用 if($pay_flag || $_GET['ignore']=='abc' ) { if ($trade_row) { $Payment = PaymentModel::create('alipay'); $Payment->pay($trade_row); } else { echo"<script>alert('支付失敗,請重新支付');history.go(-1);</script>"; } } else { echo"<script>alert('支付失敗,請重新支付');history.go(-1);</script>"; } } ~~~ 文件路徑:F:\www\paycenter\paycenter\models\Consume\DepositModel.php 方法:notifyShop($order_id = null,$user_id = null) 1.修改paycenter中訂單的信息 ~~~ //修改合并訂單中的訂單支付狀態 //獲取合并支付訂單信息 $union_order = $Union_OrderModel->getOne($order_id); //判斷該訂單是否是白條支付 $bt_flag = $this->checkBt(array('trade_payment_amount'=>$union_order['trade_payment_amount'],'payment_channel_id'=>$union_order['payment_channel_id'])); //檢測支付金額是否正確,判斷該訂單是否是白條支付 if (($union_order['trade_payment_amount'] == $union_order['union_online_pay_amount'] + $union_order['union_money_pay_amount'] + $union_order['union_cards_pay_amount']) || $bt_flag) { 略 } ~~~ 如果是合并支付的訂單,則需要將屬于它的單個合并支付單修改狀態 ~~~ if(count($order_id) > 1) { //修改單個合并訂單狀態 $uorder_row = $Union_OrderModel->getByWhere(array('inorder:IN' => $order_id)); $uorder_id_row = array_column($uorder_row,'union_order_id'); $edit_uorder_row = array(); $edit_uorder_row['order_state_id'] = Order_StateModel::ORDER_PAYED; $edit_uorder_row['pay_time'] = date('Y-m-d H:i:s'); check_rs($Union_OrderModel->editUnionOrder($uorder_id_row,$edit_uorder_row), $rs_row); } ~~~ 修改訂單表中的交易狀態 修改交易明細中的訂單狀態 根據支付情況修改用戶資金信息 ~~~ if($union_order['union_money_pay_amount'] > 0) { //修改用戶的資源狀態 $User_ResourceModel = new User_ResourceModel(); //1.用戶資源中訂單金額凍結(現金) $flag = $User_ResourceModel->frozenUserMoney($user_id,$union_order['union_money_pay_amount']); check_rs($flag, $rs_row); } if($union_order['union_cards_pay_amount'] > 0) { $User_ResourceModel = new User_ResourceModel(); //2.用戶資源中訂單金額凍結(卡) $flag = $User_ResourceModel->frozenUserCards($user_id,$union_order['union_cards_pay_amount']); check_rs($flag, $rs_row); } //修改白條余額 if($bt_flag) { $User_ResourceModel = new User_ResourceModel(); $user_credit_availability = $union_order['trade_payment_amount']*(-1); $flag = $User_ResourceModel->editResource($user_id,array('user_credit_availability'=>$user_credit_availability),true); check_rs($flag, $rs_row); } ~~~ 2.paycenter中訂單修改完成后,修改shop中的訂單信息 付款成功后對買家極光推送 訂單付款成功后對賣家進行極光推送 ~~~ //根據訂單來源,修改shop訂單狀態 $consume_record = $Consume_TradeModel->getOne($order_id); $app_id = $consume_record['app_id']; $User_AppModel = new User_AppModel(); $app_row = $User_AppModel->getOne($app_id); $key = $app_row['app_key']; $url = $app_row['app_url']; $shop_app_id = $app_id; $formvars = array(); $formvars = $_POST; $formvars['app_id'] = $shop_app_id; $formvars['order_id'] = $order_id; $formvars['uorder_id'] = $uorder_id; if($consume_record['payment_channel_id'] == Payment_ChannelModel::BAITIAO){ $formvars['payment_channel_code'] = 'baitiao'; }else{ $formvars['payment_channel_code'] = ''; } $rs = get_url_with_encrypt($key, sprintf('%s?ctl=Api_Trade_Order&met=editOrderRowSatus&typ=json', $url), $formvars); return $rs; ~~~ #### 3.商家發貨 地址鏈接:/index.php?ctl=Seller_Trade_Order&met=send&typ=e&order_id=訂單編號 文件路徑:\shop\controllers\Seller\Trade\OrderCtl.php 控制器:OrderCtl 方法:send() 視圖文件:\shop\views\default\Seller\Trade\OrderCtl\send.php 根據typ判斷該方法是用來顯示頁面,還是修改訂單狀態。 ~~~ if ($typ == 'e') { 顯示頁面 } else { 修改訂單狀態 } ~~~ 顯示頁面部分 ~~~ $condi['order_id'] = $order_id; $data = $Order_BaseModel->getOrderList($condi); $data = pos($data['items']); //默認物流公司 url $default_express_url = Yf_Registry::get('url') . '?ctl=Seller_Trade_Deliver&met=express&typ=e'; //打印運單URL $print_tpl_url = Yf_Registry::get('url') . '?ctl=Seller_Trade_Waybill&met=printTpl&typ=e&order_id=' . $order_id; //默認物流公司 $express_list = $Shop_ExpressModel->getDefaultShopExpress(); if(is_array($express_list) && $express_list){ $express_list = array_values($express_list); } include $this->view->getView(); ~~~ 修改訂單狀態部分 ~~~ //判斷該筆訂單是否是自己的單子 $order_base = $Order_BaseModel->getOne($order_id); //判斷賬號是否可以發貨 $check_send = $this->checkSend($order_base['seller_user_id'],$order_base['shop_id']); if($check_send && $order_base['order_status'] < Order_StateModel::ORDER_RECEIVED) { //將發貨信息添加到訂單表中 $edit_flag = $Order_BaseModel->editBase($order_id, $update_data); //修改訂單商品信息 $order_list = $Order_GoodsModel -> getByWhere(array('order_id' => $order_base['order_source_id'],'order_goods_source_id' => '')); if(!empty($order_list) && $order_base['order_source_id']){ foreach ($order_list as $key => $value) { $edit_flag1 = $Order_GoodsModel -> editGoods($key,array('order_goods_source_ship' => $update_data['order_shipping_code'].'-'.$update_data['order_shipping_express_id'])); check_rs($edit_flag1,$rs_row); } } //遠程修改paycenter中的訂單信息 $key = Yf_Registry::get('shop_api_key'); $url = Yf_Registry::get('paycenter_api_url'); $shop_app_id = Yf_Registry::get('shop_app_id'); $formvars = array(); $formvars['order_id'] = $order_id; $formvars['app_id'] = $shop_app_id; $rs = get_url_with_encrypt($key, sprintf('%s?ctl=Api_Pay_Pay&met=sendOrderGoods&typ=json', $url), $formvars); } ~~~ 如果訂單信息修改正確,發送站內信。 #### 4.確認收貨 地址路徑:index.php?ctl=Buyer_Order&met=confirmOrder&user=buyer 控制器文件路徑:\shop\controllers\Buyer\OrderCtl.php 控制器:Buyer_OrderCtl 方法:confirmOrder() 判斷下單者是否是當前用戶,訂單狀態是否為已發貨狀態 ~~~ $order_base['buyer_user_id'] == Perm::$userId && $order_base['order_status'] == Order_StateModel::ORDER_WAIT_CONFIRM_GOODS ~~~ 判斷是否是貨到付款訂單,如果是貨到付款訂單,則將支付時間改為確認收貨時間 ~~~ if($order_base['payment_id'] == PaymentChannlModel::PAY_CONFIRM) { $condition['payment_time'] = get_date_time(); } ~~~ 修改訂單商品表中的訂單狀態 ~~~ $edit_row['order_goods_status'] = Order_StateModel::ORDER_FINISH; $order_goods_id = $Order_GoodsModel->getKeyByWhere(array('order_id' => $order_id)); $edit_flag1 = $Order_GoodsModel->editGoods($order_goods_id, $edit_row); ~~~ 貨到付款修改商品銷量 修改paycenter中的訂單狀態 ~~~ $key = Yf_Registry::get('shop_api_key'); $url = Yf_Registry::get('paycenter_api_url'); $shop_app_id = Yf_Registry::get('shop_app_id'); $formvars = array(); $formvars['order_id'] = $order_id; $formvars['app_id'] = $shop_app_id; $formvars['from_app_id'] = Yf_Registry::get('shop_app_id'); //判斷訂單是否是貨到付款訂單,貨到付款訂單不需要修改賣家資金 if($order_base['payment_id'] == PaymentChannlModel::PAY_CONFIRM) { $formvars['payment'] = 0; } $rs = get_url_with_encrypt($key, sprintf('%s?ctl=Api_Pay_Pay&met=confirmOrder&typ=json', $url), $formvars); ~~~ 判斷用戶該筆訂單是否存在退款,如果有的話添加商家的退款流水 ~~~ $rs = get_url_with_encrypt($key, sprintf('%s?ctl=Api_Pay_Pay&met=refundShopTransfer&typ=json', $url), $formvars); ~~~ 計算本次確認收貨,用戶將獲取的積分與成長值 判斷用戶是否需要升級 ~~~ $res_flag = $User_GradeModel->upGrade(Perm::$userId, $resource_row['user_growth']); ~~~ 修改用戶積分與成長值之后添加記錄 ~~~ //積分 $points_row['user_id'] = Perm::$userId; $points_row['user_name'] = Perm::$row['user_account']; $points_row['class_id'] = Points_LogModel::ONBUY; $points_row['points_log_points'] = $user_points; $points_row['points_log_time'] = get_date_time(); $points_row['points_log_desc'] = '確認收貨'; $points_row['points_log_flag'] = 'confirmorder'; $Points_LogModel = new Points_LogModel(); $Points_LogModel->addLog($points_row); //成長值 $grade_row['user_id'] = Perm::$userId; $grade_row['user_name'] = Perm::$row['user_account']; $grade_row['class_id'] = Grade_LogModel::ONBUY; $grade_row['grade_log_grade'] = $user_grade; $grade_row['grade_log_time'] = get_date_time(); $grade_row['grade_log_desc'] = '確認收貨'; $grade_row['grade_log_flag'] = 'confirmorder'; $Grade_LogModel = new Grade_LogModel; $Grade_LogModel->addLog($grade_row); ~~~ 確認收貨成功之后,將信息添加到統計中心。 #### 5.評價訂單 頁面鏈接:/index.php?ctl=Buyer_Order&met=evaluation&act=add&order_id=訂單編號 控制器文件路徑:\shop\controllers\Buyer\OrderCtl.php 控制器:Buyer_OrderCtl 方法:evaluation() 根據傳遞的參數act,判斷是追加評價,初次評價還是顯示評價列表頁 ~~~ if ($act == 'again') { //追加評價 //獲取已評價信息 $data = $Goods_EvaluationModel->getOne($evaluation_goods_id); //商品信息 $data['goods_base'] = current($Order_GoodsModel->getByWhere(array('goods_id'=>$data['goods_id'],'order_id'=>$data['order_id']))); //訂單信息 $data['order_base'] = $Order_BaseModel->getOne($data['order_id']); //評價用戶的信息 $data['user_info'] = $User_InfoModel->getOne($data['order_base']['buyer_user_id']); if ('json' == $this->typ) { return $this->data->addBody(-140, $data); } else { $this->view->setMet('evalagain'); } } elseif ($act == 'add') { //初次評價 //訂單信息 $data['order_base'] = $Order_BaseModel->getOne($order_id); //評價用戶的信息 $data['user_info'] = $User_InfoModel->getOne($data['order_base']['buyer_user_id']); //店鋪信息 $data['shop_base'] = $Shop_BaseModel->getOne($data['order_base']['shop_id']); //查找出訂單中的商品 $order_goods_id_row = $Order_GoodsModel->getKeyByWhere(array('order_id' => $order_id)); //商品信息 foreach ($order_goods_id_row as $ogkey => $order_good_id) { $data['order_goods'][] = $Order_GoodsModel->getOne($order_good_id); } if ('json' == $this->typ) { return $this->data->addBody(-140, $data); } else { $this->view->setMet('evaladd'); } } else { //顯示評價列表頁面 //獲取買家的所有評論 $user_id = Perm::$userId; $goods_evaluation_row = array(); $goods_evaluation_row['user_id'] = $user_id; $data = $Goods_EvaluationModel->getEvaluationByUser($goods_evaluation_row, array(), $page, $rows); } ~~~ 1.初次評價 方法鏈接:index.php?ctl=Goods_Evaluation&met=addGoodsEvaluation&typ=json 控制器文件:\shop\controllers\Goods\EvaluationCtl.php 控制器:Goods_EvaluationCtl 方法:addGoodsEvaluation() 循環商品評價 ~~~ foreach($evaluation as $key => $val) { //訂單商品信息 $order_goods = $Order_GoodsModel->getOne($val[0]); //商品信息 $goods_base = $Goods_BaseModel->getOne($order_goods['goods_id']); //訂單信息 $order_base = $Order_BaseModel->getOne($order_goods['order_id']); //有違禁詞 if (Text_Filter::checkBanned($val[3], $matche_row)) { $data = array(); $msg = __('含有違禁詞'); $status = 250; $this->data->addBody(-140, array(), $msg, $status); return false; } //修改商品的評價 $evaluation_num = $this->goodsEvaluationModel->countGoodsEvaluation($order_goods['goods_id']); //星級好評數 $goods_evaluation_good_star = ceil(($evaluation_num * $goods_base['goods_evaluation_good_star'] + $val[1]) / ($evaluation_num * 1 + 1)); $goods_evaluation_count = $evaluation_num * 1 + 1; $edit_row = array(); $edit_row['goods_evaluation_good_star'] = $goods_evaluation_good_star; $edit_row['goods_evaluation_count'] = $goods_evaluation_count; $Goods_BaseModel->editBaseFalse($order_goods['goods_id'], $edit_row); //修改商品common表中的評論數量 $edit_common_row['common_evaluate'] = 1; $Goods_CommonModel->editCommonTrue($order_goods['common_id'],$edit_common_row); //插入商品評價表 $flag = $this->goodsEvaluationModel->addEvalution($add_row); if($flag) { /********************************************************/ //評價成功添加數據到統計中心 商品評分 $analytics_data = array( 'product_id'=>$goods_base['goods_id'], 'shop_id'=>$goods_base['shop_id'], 'score'=>$goods_evaluation_good_star, ); Yf_Plugin_Manager::getInstance()->trigger('analyticsScore',$analytics_data); /********************************************************/ } //修改訂單商品表 $edit_order_goods['order_goods_evaluation_status'] = Order_GoodsModel::EVALUATION_YES; $Order_GoodsModel->editGoods($val[0], $edit_order_goods); } ~~~ 添加店鋪評價 ~~~ $Shop_EvaluationModel->addEvaluation($add_shop_row); /********************************************************/ //評價成功添加數據到統計中心 店鋪評分 $analytics_data = array( 'shop_id'=>$order_base['shop_id'] ); Yf_Plugin_Manager::getInstance()->trigger('analyticsShopCredit',$analytics_data); /********************************************************/ //修改訂單中的評價信息 $edit_order['order_buyer_evaluation_status'] = Order_BaseModel::BUYER_EVALUATE_YES; $edit_order['order_buyer_evaluation_time'] = get_date_time(); $Order_BaseModel->editBase($order_base['order_id'], $edit_order); ~~~ 評價成功后,修改用戶的積分及成長值。 2.追加評價 方法鏈接:index.php?ctl=Goods_Evaluation&met=againGoodsEvaluation&typ=json 控制器文件:\shop\controllers\Goods\EvaluationCtl.php 控制器:Goods_EvaluationCtl 方法:againGoodsEvaluation() 獲取追加評價的商品的初次評價信息 ~~~ $evaluation_base = $this->goodsEvaluationModel->getOne($evaluation_goods_id); ~~~ 判斷是否存在違禁詞 ~~~ if (Text_Filter::checkBanned($content, $matche_row)) { $data = array(); $msg = __('含有違禁詞'); $status = 250; $this->data->addBody(-140, array(), $msg, $status); return false; } ~~~ 修改商品評價數 ~~~ $edit_row['goods_evaluation_count'] = $goods_evaluation_count; $Goods_BaseModel = new Goods_BaseModel(); $edit_flag = $Goods_BaseModel->editBase($goods_id, $edit_row); ~~~ 插入商品評價表 ~~~ $add_flag = $this->goodsEvaluationModel->addEvalution($add_row); ~~~ 修改訂單商品表中商品的評價狀態 ~~~ $og_update_flag = $order_goods_model->editGoods($order_goods_id, ['order_goods_evaluation_status'=> Order_GoodsModel::EVALUATION_AGAIN]); ~~~ 追加評價成功后,修改用戶的積分及成長值。 #### 5.買家取消訂單 方法路徑:index.php?ctl=Buyer_Order&met=orderCancel&user=buyer 文件路徑:\shop\controllers\Buyer\OrderCtl.php 控制器:Buyer_OrderCtl 方法:orderCancel() 根據typ判斷是顯示頁面,還是操作 ~~~ if ($typ == 'e') { //顯示頁面 $cancel_row['cancel_identity'] = Order_CancelReasonModel::CANCEL_BUYER; //獲取取消原因 $Order_CancelReasonModel = new Order_CancelReasonModel; $reason = array_values($Order_CancelReasonModel->getByWhere($cancel_row)); include $this->view->getView(); } else { 處理取消訂單 } ~~~ 處理取消訂單 獲取訂單詳情,判斷訂單的狀態與下單者是否是當前用戶 ~~~ $order_base = $Order_BaseModel->getOne($order_id); //加入貨到付款訂單取消功能 if( ($order_base['payment_id'] == PaymentChannlModel::PAY_CONFIRM && $order_base['order_status'] == Order_StateModel::ORDER_WAIT_PREPARE_GOODS) //貨到付款+等待發貨 || $order_base['order_status'] == Order_StateModel::ORDER_WAIT_PAY && $order_base['buyer_user_id'] == Perm::$userId) { } ~~~ 修改訂單信息 ~~~ //訂單狀態 $condition['order_status'] = Order_StateModel::ORDER_CANCEL; //訂單取消原因 $condition['order_cancel_reason'] = addslashes($state_info); //訂單取消者身份 $condition['order_cancel_identity'] = Order_BaseModel::IS_BUYER_CANCEL; //訂單取消時間 $condition['order_cancel_date'] = get_date_time(); $edit_flag = $Order_BaseModel->editBase($order_id, $condition); ~~~ 修改訂單商品信息 ~~~ //訂單商品狀態 $edit_row['order_goods_status'] = Order_StateModel::ORDER_CANCEL; $order_goods_id = $Order_GoodsModel->getKeyByWhere(array('order_id' => $order_id)); $edit_flag1 = $Order_GoodsModel->editGoods($order_goods_id, $edit_row); ~~~ 修改商品庫存 修改paycenter中的訂單狀態 ~~~ $rs = get_url_with_encrypt($key, sprintf('%s?ctl=Api_Pay_Pay&met=cancelOrder&typ=json', $url), $formvars); ~~~ 判斷訂單是否使用平臺紅包,如果使用,將平臺紅包狀態改為未使用 ~~~ //判斷訂單是否使用平臺紅包,如果使用,將平臺紅包狀態改為未使用 $RedPacket_BaseModel = new RedPacket_BaseModel(); $red_data = $RedPacket_BaseModel->getOneByWhere(['redpacket_order_id'=>$order_base['order_id']]); if($red_data) { $red_flag = $RedPacket_BaseModel->editRedPacket($red_data['redpacket_id'], ['redpacket_state'=>RedPacket_BaseModel::UNUSED]); } ~~~ 訂單取消成功,加入統計中心
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看