Example #1
0
 /**
  * 支付成功后修改订单状态
  * @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;
         }
     }
 }
Example #2
0
 /**
  * 支付成功后修改订单状态
  * @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;
         }
     }
 }