/** * 支付成功后修改订单状态 * @param $orderNo string 订单编号 * @param $admin_id int 管理员ID * @param $note string 收款的备注 * @return false or int order_id */ public static function updateOrderStatus($orderNo, $admin_id = '', $note = '') { //获取订单信息 $orderObj = new IModel('order'); $orderRow = $orderObj->getObj('order_no = "' . $orderNo . '"'); if (empty($orderRow)) { return false; } if ($orderRow['pay_status'] == 1) { return $orderRow['id']; } else { if ($orderRow['pay_status'] == 0) { $dataArray = array('status' => $orderRow['status'] == 5 ? 5 : 2, 'pay_time' => ITime::getDateTime(), 'pay_status' => 1); $orderObj->setData($dataArray); $is_success = $orderObj->update('order_no = "' . $orderNo . '"'); if ($is_success == '') { return false; } //删除订单中使用的道具 $ticket_id = trim($orderRow['prop']); if ($ticket_id != '') { $propObj = new IModel('prop'); $propData = array('is_userd' => 1); $propObj->setData($propData); $propObj->update('id = ' . $ticket_id); } //注册用户进行奖励 if ($orderRow['user_id']) { $user_id = $orderRow['user_id']; //获取用户信息 $memberObj = new IModel('member'); $memberRow = $memberObj->getObj('user_id = ' . $user_id, 'prop,group_id'); //(1)删除订单中使用的道具 if ($ticket_id != '') { $finnalTicket = str_replace(',' . $ticket_id . ',', ',', ',' . trim($memberRow['prop'], ',') . ','); $memberData = array('prop' => $finnalTicket); $memberObj->setData($memberData); $memberObj->update('user_id = ' . $user_id); } if ($memberRow) { //(2)进行促销活动奖励 $proObj = new ProRule($orderRow['real_amount'], $orderRow['seller_id']); $proObj->setUserGroup($memberRow['group_id']); $proObj->setAward($user_id); //(3)增加经验值 $memberData = array('exp' => 'exp + ' . $orderRow['exp']); $memberObj->setData($memberData); $memberObj->update('user_id = ' . $user_id, 'exp'); //(4)增加积分 $pointConfig = array('user_id' => $user_id, 'point' => $orderRow['point'], 'log' => '成功购买了订单号:' . $orderRow['order_no'] . '中的商品,奖励积分' . $orderRow['point']); $pointObj = new Point(); $pointObj->update($pointConfig); } } //插入收款单 $collectionDocObj = new IModel('collection_doc'); $collectionData = array('order_id' => $orderRow['id'], 'user_id' => $orderRow['user_id'], 'amount' => $orderRow['order_amount'], 'time' => ITime::getDateTime(), 'payment_id' => $orderRow['pay_type'], 'pay_status' => 1, 'if_del' => 0, 'note' => $note, 'admin_id' => $admin_id ? $admin_id : 0); $collectionDocObj->setData($collectionData); $collectionDocObj->add(); //促销活动订单 if ($orderRow['type'] != 0) { Active::payCallback($orderNo, $orderRow['type']); } //非货到付款的支付方式 if ($orderRow['pay_type'] != 0) { //减少库存量 $orderGoodsDB = new IModel('order_goods'); $orderGoodsList = $orderGoodsDB->query('order_id = ' . $orderRow['id']); $orderGoodsListId = array(); foreach ($orderGoodsList as $key => $val) { $orderGoodsListId[] = $val['id']; } self::updateStore($orderGoodsListId, 'reduce'); } //自提点短信发送 self::sendTakeself($orderNo); $mobile = ""; //订单付款后短信通知商家或者管理员进行订单处理 if ($orderRow['seller_id'] > 0) { $sellerObj = new IModel('seller'); $sellerRow = $sellerObj->getObj("id = " . $orderRow['seller_id']); $mobile = $sellerRow['mobile'] ? $sellerRow['mobile'] : ""; } else { $config = new Config('site_config'); $mobile = $config->mobile ? $config->mobile : ""; } $smsContent = smsTemplate::payFinishToAdmin(array('{orderNo}' => $orderNo)); Hsms::send($mobile, $smsContent, 0); return $orderRow['id']; } else { return false; } } }
/** * 支付成功后修改订单状态 * @param $orderNo string 订单编号 * @param $admin_id int 管理员ID * @param $note string 收款的备注 * @return false or int order_id */ public static function updateOrderStatus($orderNo, $admin_id = '', $note = '') { //获取订单信息 $orderObj = new IModel('order'); $orderRow = $orderObj->getObj('order_no = "' . $orderNo . '"'); if (empty($orderRow)) { return false; } if ($orderRow['pay_status'] == 1) { return $orderRow['id']; } else { if ($orderRow['pay_status'] == 0) { $dataArray = array('status' => $orderRow['status'] == 5 ? 5 : 2, 'pay_time' => ITime::getDateTime(), 'pay_status' => 1); $orderObj->setData($dataArray); $is_success = $orderObj->update('order_no = "' . $orderNo . '"'); if ($is_success == '') { return false; } //删除订单中使用的道具 $ticket_id = trim($orderRow['prop']); if ($ticket_id != '') { $propObj = new IModel('prop'); $propData = array('is_userd' => 1); $propObj->setData($propData); $propObj->update('id = ' . $ticket_id); } if (intval($orderRow['user_id']) != 0) { $user_id = $orderRow['user_id']; //获取用户信息 $memberObj = new IModel('member'); $memberRow = $memberObj->getObj('user_id = ' . $user_id, 'prop,group_id'); //(1)删除订单中使用的道具 if ($ticket_id != '') { $finnalTicket = str_replace(',' . $ticket_id . ',', ',', ',' . trim($memberRow['prop'], ',') . ','); $memberData = array('prop' => $finnalTicket); $memberObj->setData($memberData); $memberObj->update('user_id = ' . $user_id); } if ($memberRow) { //(2)进行促销活动奖励 $proObj = new ProRule($orderRow['real_amount']); $proObj->setUserGroup($memberRow['group_id']); $proObj->setAward($user_id); //(3)增加经验值 $memberData = array('exp' => 'exp + ' . $orderRow['exp']); $memberObj->setData($memberData); $memberObj->update('user_id = ' . $user_id, 'exp'); //(4)增加积分 $pointConfig = array('user_id' => $user_id, 'point' => $orderRow['point'], 'log' => '成功购买了订单号:' . $orderRow['order_no'] . '中的商品,奖励积分' . $orderRow['point']); $pointObj = new Point(); $pointObj->update($pointConfig); } } //插入收款单 $collectionDocObj = new IModel('collection_doc'); $collectionData = array('order_id' => $orderRow['id'], 'user_id' => $orderRow['user_id'], 'amount' => $orderRow['order_amount'], 'time' => ITime::getDateTime(), 'payment_id' => $orderRow['pay_type'], 'pay_status' => 1, 'if_del' => 0, 'note' => $note, 'admin_id' => $admin_id ? $admin_id : 0); $collectionDocObj->setData($collectionData); $collectionDocObj->add(); //促销活动订单 if ($orderRow['type'] != 0) { Active::payCallback($orderNo, $orderRow['type']); } //订单为商家商品减去商家预存款的1.2% if ($orderRow['seller_id'] > 0) { $sellerObj = new IModel('seller'); $seller = $sellerObj->getObj("id = '{$orderRow['seller_id']}'"); if ($seller['balance'] > 0) { //减去1.2% $need = floatval($orderRow['order_amount'] * (1.2 * 0.01)); $new_balance = $seller['balance'] - $need; $sellerObj->setData(array('balance' => $new_balance)); $sellerObj->update("id = '{$orderRow['seller_id']}'"); //记录扣除日志 $balanceObj = new IModel('seller_balance_log'); $data = array('seller_id' => $orderRow['seller_id'], 'deduct_balance' => $need, 'surplus_balance' => $new_balance, 'time' => ITime::getDateTime()); $balanceObj->setData($data); $balanceObj->add(); } } //更改购买商品的库存数量 self::updateStore($orderRow['id'], 'reduce'); //自提点短信发送 self::sendTakeself($orderNo); //订单付款后短信通知管理员进行订单处理 $config = new Config('site_config'); if (isset($config->mobile) && $config->mobile) { $smsContent = smsTemplate::payFinishToAdmin(array('{orderNo}' => $orderNo)); Hsms::send($config->mobile, $smsContent); } return $orderRow['id']; } else { return false; } } }