getOrderGoodsList(array('order_id'=>$order_id)); $data = array(); foreach ($goods_list as $goods) { $data[$goods['goods_id']] = $goods['goods_num']; } if ($if_quque) { QueueClient::push('cancelOrderUpdateStorage', $data); } else { Logic('queue')->cancelOrderUpdateStorage($data); } if ($if_update_account) { $model_pd = Model('predeposit'); //解冻充值卡 $rcb_amount = floatval($order_info['rcb_amount']); if ($rcb_amount > 0) { $data_pd = array(); $data_pd['member_id'] = $order_info['buyer_id']; $data_pd['member_name'] = $order_info['buyer_name']; $data_pd['amount'] = $rcb_amount; $data_pd['order_sn'] = $order_info['order_sn']; $model_pd->changeRcb('order_cancel',$data_pd); } //解冻预存款 $pd_amount = floatval($order_info['pd_amount']); if ($pd_amount > 0) { $data_pd = array(); $data_pd['member_id'] = $order_info['buyer_id']; $data_pd['member_name'] = $order_info['buyer_name']; $data_pd['amount'] = $pd_amount; $data_pd['order_sn'] = $order_info['order_sn']; $model_pd->changePd('order_cancel',$data_pd,false); } $bonus_amount = unserialize($order_info['bonus_amount']); if($bonus_amount != false) { $user_bonus = $bonus_amount['user_bonus']; account_helper::onAsyncOrderCancel($order_info['pay_sn'],$order_info['order_sn']); $data_pd = array(); $data_pd['member_id'] = $order_info['buyer_id']; $data_pd['member_name'] = $order_info['buyer_name']; $data_pd['amount'] = $user_bonus; $data_pd['order_sn'] = $order_info['order_sn']; $model_pd->changeBonus('order_cancel',$data_pd); } } //更新订单信息 $update = $model_order->editOrder(['order_state' => ORDER_STATE_CANCEL],['order_id'=>$order_id]); if (!$update) { throw new Exception('保存失败'); } //添加订单日志 $data = []; $data['order_id'] = $order_id; $data['log_role'] = $role; $data['log_msg'] = '取消了订单'; $data['log_user'] = $user; if ($msg) { $data['log_msg'] .= ' ( '.$msg.' )'; } $data['log_orderstate'] = ORDER_STATE_CANCEL; $model_order->addOrderLog($data); $trans->commit(); return callback(true,'操作成功'); } catch (Exception $e) { $trans->rollback(); return callback(false,'操作失败'); } } /** * 收货 * @param array $order_info * @param string $role 操作角色 buyer、seller、admin、system 分别代表买家、商家、管理员、系统 * @param string $user 操作人 * @param string $msg 操作备注 * @return array */ public function changeOrderStateReceive($order_info, $role, $user = '', $msg = '') { try { //v3-b11 $member_id=$order_info['buyer_id']; $order_id = $order_info['order_id']; $model_order = Model('order'); //更新订单状态 $update_order = array(); $update_order['finnshed_time'] = time(); $update_order['order_state'] = ORDER_STATE_SUCCESS; $update = $model_order->editOrder($update_order,array('order_id'=>$order_id)); if (!$update) { throw new Exception('保存失败'); } QueueClient::push('onAsyncOrderComplete',['pay_sn' => $order_info['pay_sn']]); //添加订单日志 $data = array(); $data['order_id'] = $order_id; $data['log_role'] = 'buyer'; $data['log_msg'] = '签收了货物'; $data['log_user'] = $user; if ($msg) { $data['log_msg'] .= ' ( '.$msg.' )'; } $data['log_orderstate'] = ORDER_STATE_SUCCESS; $model_order->addOrderLog($data); //添加会员积分 if (C('points_isuse') == 1){ Model('points')->savePointsLog('order',array('pl_memberid'=>$order_info['buyer_id'],'pl_membername'=>$order_info['buyer_name'],'orderprice'=>$order_info['order_amount'],'order_sn'=>$order_info['order_sn'],'order_id'=>$order_info['order_id']),true); } //添加会员经验值 Model('exppoints')->saveExppointsLog('order',array('exp_memberid'=>$order_info['buyer_id'],'exp_membername'=>$order_info['buyer_name'],'orderprice'=>$order_info['order_amount'],'order_sn'=>$order_info['order_sn'],'order_id'=>$order_info['order_id']),true); //邀请人获得返利积分 by 33ha o .com $model_member = Model('member'); $inviter_id = $model_member->table('member')->getfby_member_id($member_id,'inviter_id'); $inviter_name = $model_member->table('member')->getfby_member_id($inviter_id,'member_name'); $rebate_amount = ceil(0.01 * $order_info['order_amount'] * $GLOBALS['setting_config']['points_rebate']); Model('points')->savePointsLog('rebate',array('pl_memberid'=>$inviter_id,'pl_membername'=>$inviter_name,'rebate_amount'=>$rebate_amount),true); return callback(true,'操作成功'); } catch (Exception $e) { return callback(false,'操作失败'); } } /** * 更改运费 * @param array $order_info * @param string $role 操作角色 buyer、seller、admin、system 分别代表买家、商家、管理员、系统 * @param string $user 操作人 * @param float $price 运费 * @return array */ public function changeOrderShipPrice($order_info, $role, $user = '', $price) { try { $order_id = $order_info['order_id']; $model_order = Model('order'); $data = array(); $data['shipping_fee'] = abs(floatval($price)); $data['order_amount'] = array('exp','goods_amount+'.$data['shipping_fee']); $update = $model_order->editOrder($data,array('order_id'=>$order_id)); if (!$update) { throw new Exception('保存失败'); } //记录订单日志 $data = array(); $data['order_id'] = $order_id; $data['log_role'] = $role; $data['log_user'] = $user; $data['log_msg'] = '修改了运费'.'( '.$price.' )';; $data['log_orderstate'] = $order_info['payment_code'] == 'offline' ? ORDER_STATE_PAY : ORDER_STATE_NEW; $model_order->addOrderLog($data); return callback(true,'操作成功'); } catch (Exception $e) { return callback(false,'操作失败'); } } /** * 更改运费 * @param array $order_info * @param string $role 操作角色 buyer、seller、admin、system 分别代表买家、商家、管理员、系统 * @param string $user 操作人 * @param float $price 运费 * @return array */ public function changeOrderSpayPrice($order_info, $role, $user = '', $price) { try { $order_id = $order_info['order_id']; $model_order = Model('order'); $data = array(); $data['goods_amount'] = abs(floatval($price)); $data['order_amount'] = array('exp','shipping_fee+'.$data['goods_amount']); $update = $model_order->editOrder($data,array('order_id'=>$order_id)); if (!$update) { throw new Exception('保存失败'); } //记录订单日志 $data = array(); $data['order_id'] = $order_id; $data['log_role'] = $role; $data['log_user'] = $user; $data['log_msg'] = '修改了运费'.'( '.$price.' )';; $data['log_orderstate'] = $order_info['payment_code'] == 'offline' ? ORDER_STATE_PAY : ORDER_STATE_NEW; $model_order->addOrderLog($data); return callback(true,'操作成功'); } catch (Exception $e) { return callback(false,'操作失败'); } } /** * 回收站操作(放入回收站、还原、永久删除) * @param array $order_info * @param string $role 操作角色 buyer、seller、admin、system 分别代表买家、商家、管理员、系统 * @param string $state_type 操作类型 * @return array */ public function changeOrderStateRecycle($order_info, $role, $state_type) { $order_id = $order_info['order_id']; $model_order = Model('order'); //更新订单删除状态 $state = str_replace(array('delete','drop','restore'), array(ORDER_DEL_STATE_DELETE,ORDER_DEL_STATE_DROP,ORDER_DEL_STATE_DEFAULT), $state_type); $update = $model_order->editOrder(array('delete_state'=>$state),array('order_id'=>$order_id)); if (!$update) { return callback(false,'操作失败'); } else { return callback(true,'操作成功'); } } /** * 发货 * @param array $order_info * @param string $role 操作角色 buyer、seller、admin、system 分别代表买家、商家、管理员、系统 * @param string $user 操作人 * @return array */ public function changeOrderSend($order_info, $role, $user = '', $post = array()) { $order_id = $order_info['order_id']; $model_order = Model('order'); try { $trans = new trans_wapper($model_order,__METHOD__); $data = array(); $data['reciver_name'] = $post['reciver_name']; $data['reciver_info'] = $post['reciver_info']; $data['deliver_explain'] = $post['deliver_explain']; $data['daddress_id'] = intval($post['daddress_id']); $data['shipping_express_id'] = intval($post['shipping_express_id']); $data['shipping_time'] = time(); $condition = array(); $condition['order_id'] = $order_id; $store_id = intval($_SESSION['store_id']); if($store_id <= 0) { $condition['store_id'] = intval($post['store_id']); } $update = $model_order->editOrderCommon($data,$condition); if (!$update) { throw new Exception('操作失败'); } $data = array(); $data['shipping_code'] = $post['shipping_code']; $data['order_state'] = ORDER_STATE_SEND; $data['delay_time'] = time(); $update = $model_order->editOrder($data,$condition); if (!$update) { throw new Exception('操作失败'); } $trans->commit(); } catch (Exception $e) { $trans->rollback(); return callback(false,$e->getMessage()); } //更新表发货信息 if ($post['shipping_express_id'] && $order_info['extend_order_common']['reciver_info']['dlyp']) { $data = array(); $data['shipping_code'] = $post['shipping_code']; $data['order_sn'] = $order_info['order_sn']; $express_info = Model('express')->getExpressInfo(intval($post['shipping_express_id'])); $data['express_code'] = $express_info['e_code']; $data['express_name'] = $express_info['e_name']; Model('delivery_order')->editDeliveryOrder($data,array('order_id' => $order_info['order_id'])); } //添加订单日志 $data = array(); $data['order_id'] = intval($_GET['order_id']); $data['log_role'] = 'seller'; $data['log_user'] = $_SESSION['member_name']; $data['log_msg'] = '发出了货物 ( 编辑了发货信息 )'; $data['log_orderstate'] = ORDER_STATE_SEND; $model_order->addOrderLog($data); // 发送买家消息 $param = array(); $param['code'] = 'order_deliver_success'; $param['member_id'] = $order_info['buyer_id']; $param['param'] = array( 'order_sn' => $order_info['order_sn'], 'order_url' => urlShop('member_order', 'show_order', array('order_id' => $order_id)) ); QueueClient::push('sendMemberMsg', $param); return callback(true,'操作成功'); } /** * 收到货款 * @param array $order_info * @param string $role 操作角色 buyer、seller、admin、system 分别代表买家、商家、管理员、系统 * @param string $user 操作人 * @return array */ public function changeOrderReceivePay($order_list, $role, $user = '', $post = array()) { $model_order = Model('order'); try { $trans = new trans_wapper($model_order,__METHOD__); $data = array(); $data['api_pay_state'] = 1; // 33hao $update = $model_order->editOrderPay($data,array('pay_sn'=>$order_list[0]['pay_sn'])); //$update = $model_order->editOrderPay($data,array('pay_sn'=>$order_info['pay_sn'])); if (!$update) { throw new Exception('更新支付单状态失败'); } $model_pd = Model('predeposit'); foreach($order_list as $order_info) { $order_id = $order_info['order_id']; if ($order_info['order_state'] != ORDER_STATE_NEW) continue; //下单,支付被冻结的充值卡 $rcb_amount = floatval($order_info['rcb_amount']); if ($rcb_amount > 0) { $data_pd = array(); $data_pd['member_id'] = $order_info['buyer_id']; $data_pd['member_name'] = $order_info['buyer_name']; $data_pd['amount'] = $rcb_amount; $data_pd['order_sn'] = $order_info['order_sn']; $model_pd->changeRcb('order_comb_pay',$data_pd); } //下单,支付被冻结的预存款 $pd_amount = floatval($order_info['pd_amount']); if ($pd_amount > 0) { $data_pd = array(); $data_pd['member_id'] = $order_info['buyer_id']; $data_pd['member_name'] = $order_info['buyer_name']; $data_pd['amount'] = $pd_amount; $data_pd['order_sn'] = $order_info['order_sn']; $model_pd->changePd('order_comb_pay',$data_pd,false); } } //更新订单状态 $update_order = array(); $update_order['order_state'] = ORDER_STATE_PAY; $update_order['payment_time'] = ($post['payment_time'] ? strtotime($post['payment_time']) : time()); $update_order['payment_code'] = $post['payment_code']; $update_order['trade_no'] = $post['trade_no']; $update = $model_order->editOrder($update_order,array('pay_sn'=>$order_info['pay_sn'],'order_state'=>ORDER_STATE_NEW)); if (!$update) { throw new Exception('操作失败'); } $trans->commit(); } catch (Exception $e) { $trans->rollback(); return callback(false,$e->getMessage()); } foreach($order_list as $order_info) { //防止重复发送消息 v 3 - 3 3 h a o . c o m if ($order_info['order_state'] != ORDER_STATE_NEW) continue; $order_id = $order_info['order_id']; // 支付成功发送买家消息 $param = array(); $param['code'] = 'order_payment_success'; $param['member_id'] = $order_info['buyer_id']; $param['param'] = array( 'order_sn' => $order_info['order_sn'], 'order_url' => urlShop('member_order', 'show_order', array('order_id' => $order_info['order_id'])) ); QueueClient::push('sendMemberMsg', $param); // 支付成功发送店铺消息 $param = array(); $param['code'] = 'new_order'; $param['store_id'] = $order_info['store_id']; $param['param'] = array( 'order_sn' => $order_info['order_sn'] ); QueueClient::push('sendStoreMsg', $param); //添加订单日志 $data = array(); $data['order_id'] = $order_id; $data['log_role'] = $role; $data['log_user'] = $user; $data['log_msg'] = '收到了货款 ( 支付平台交易号 : '.$post['trade_no'].' )'; $data['log_orderstate'] = ORDER_STATE_PAY; $model_order->addOrderLog($data); } return callback(true,'操作成功'); } }