private function _partner($sn, $data)
 {
     global $db, $config;
     $account = explode('-', $sn);
     $account = $account[0];
     $account = $db->escape($account);
     //支付成功
     if ($config['partner_fee'] * 100 == $data->total_fee && $data->sign == tenpay_sign($data, $this->mch_key)) {
         //是否已是合伙人
         $get_level_id = 'select `level_id` from ' . $db->table('member') . ' where account = \'' . $account . '\' limit 1';
         $level_id = $db->fetchOne($get_level_id);
         if ($level_id == 0) {
             $update_member = 'update ' . $db->table('member') . ' set level_id = 1';
             $update_member .= ' where account = \'' . $account . '\' limit 1';
             $db->update($update_member);
             //赠送积分给合伙人
             add_memeber_exchange_log($account, 0, 0, $config['level_integral'], 0, 0, $account, '成为合伙人赠送积分');
             $get_path = 'select `path` from ' . $db->table('member') . ' where `account`=\'' . $account . '\'';
             $path = $db->fetchOne($get_path);
             distribution_settle($config['partner_fee'], $path, $account . '成为合伙人');
         }
     } else {
         //金额不正确或返回不正确
     }
 }
Exemple #2
0
 if ($flag) {
     //清理购物车
     $db->autoDelete('cart', '`business_account`=\'' . $cart['business_account'] . '\' and `account`=\'' . $_SESSION['account'] . '\'');
     $db->commit();
     $response['count']++;
     $response['error'] = 0;
     $_SESSION['order_sn'] = $order_sn;
     //订单结算
     if ($status == 4) {
         $log->record('计算三级分销');
         //计算三级分销
         $log->record('计算分销奖金:' . $cart['total_reward']);
         distribution_settle($cart['total_reward'], $user_info['path'], $order_sn);
         //计算赠送积分
         if ($total_integral_given) {
             add_memeber_exchange_log($_SESSION['account'], 0, 0, 0, $cart['total_integral_given'], 0, 'settle', '系统结算');
             add_member_reward($_SESSION['account'], 0, $cart['total_integral_given'], '订单' . $order_sn . '赠送积分');
         }
         //计入商家收入
         $business_income = $cart['total_product_amount'] + $cart['total_delivery_fee'] - $cart['total_reward'];
         if (add_business_exchange($cart['business_account'], 0, $business_income, $_SESSION['account'], $order_sn . '支付成功')) {
             add_business_trade($cart['business_account'], $business_income, $order_sn);
         } else {
             //增加商家收入失败
             $log->record($order_sn . '计入商家收入失败');
         }
         //如果会员购买了activity=4的产品,则升级
         $check_can_levelup = 'select am.`activity_id` from ' . $db->table('activity_mapper') . ' as am left join ' . $db->table('order_detail') . ' using (`product_sn`) where `order_sn`=\'' . $order_sn . '\' and `activity_id`=4';
         if ($db->fetchOne($check_can_levelup)) {
             $member_data = array('level_id' => 1);
             $db->autoUpdate('member', $member_data, '`account`=\'' . $_SESSION['account'] . '\'');
Exemple #3
0
    if ($integral <= 0) {
        $integral = 0;
    }
    $data = array('status' => $status, 'integral' => $integral);
    $where = 'id = ' . $id;
    $order = '';
    $limit = '1';
    $db->begin();
    $transaction = true;
    if (!$db->autoUpdate('forum', $data, $where, $order, $limit)) {
        $transaction = false;
    } else {
        if ($status == 1 && $integral > 0) {
            $get_account = 'select `account` from ' . $db->table('forum') . ' where `id`=' . $id;
            $account = $db->fetchOne($get_account);
            add_memeber_exchange_log($account, 0, 0, $integral, 0, 0, $_SESSION['account'], '分享帖子赠送积分');
        }
    }
    if ($transaction) {
        $db->commit();
        $links = array('alt' => '帖子列表', 'link' => 'forum.php');
        show_system_message('帖子审核成功', array($links));
        exit;
    } else {
        $db->rollback();
        show_system_message('系统繁忙,请稍后重试', array());
        exit;
    }
}
//===========================================================================
//帖子列表
     }
 } elseif (preg_match($copartner_pattern, $sn)) {
     $account = explode('-', $sn);
     $account = $account[0];
     $account = $db->escape($account);
     //支付成功
     if ($config['partner_fee'] == $total_fee) {
         //是否已是合伙人
         $get_level_id = 'select `level_id` from ' . $db->table('member') . ' where account = \'' . $account . '\' limit 1';
         $level_id = $db->fetchOne($get_level_id);
         if ($level_id == 0) {
             $update_member = 'update ' . $db->table('member') . ' set level_id = 1';
             $update_member .= ' where account = \'' . $account . '\' limit 1';
             $db->update($update_member);
             //赠送积分给合伙人
             add_memeber_exchange_log($account, 0, 0, $config['level_integral'], 0, 0, $account, '成为合伙人赠送积分');
             $get_path = 'select `path` from ' . $db->table('member') . ' where `account`=\'' . $account . '\'';
             $path = $db->fetchOne($get_path);
             distribution_settle($config['partner_fee'], $path, $account . '成为合伙人');
         }
     } else {
     }
 } else {
     //支付成功
     $sn = $out_trade_no;
     $sn = $db->escape($sn);
     //产品订单
     $get_order_info = 'select * from ' . $db->table('order') . ' where `order_sn`=\'' . $sn . '\'';
     $order = $db->fetchRow($get_order_info);
     add_order_log($sn, $order['account'], 3, "在线支付");
     if ($order && $order['amount'] == $total_fee) {
Exemple #5
0
         if ($db->autoUpdate('order', $data, '`order_sn`=\'' . $order_sn . '\'')) {
             add_order_log($order_sn, $_SESSION['account'], 7, '用户确认收货');
             //将款项打到商家账户中
             //读取担保交易记录,并将款项打入到商家的余额中
             $get_trade = 'select `id`,`business_account`,`trade` from ' . $db->table('trade') . ' where `remark`=\'' . $order_sn . '\' and `status`=0';
             $trade = $db->fetchRow($get_trade);
             if (add_business_exchange($trade['business_account'], $trade['trade'], -1 * $trade['trade'], $_SESSION['account'], '用户确认收货')) {
                 $trade_status = array('status' => 1, 'solve_time' => time());
                 $db->autoUpdate('trade', $trade_status, '`id`=' . $trade['id']);
             }
             //读取佣金,将佣金发放到用户账户里
             $get_member_rewards = 'select `id`,`remark`,`integral`,`account`,`reward` from ' . $db->table('member_reward') . ' where `status`=0 and `assoc`=\'' . $order_sn . '\'';
             $member_rewards = $db->fetchAll($get_member_rewards);
             if ($member_rewards) {
                 foreach ($member_rewards as $reward) {
                     if (add_memeber_exchange_log($reward['account'], 0, $reward['reward'], $reward['integral'], -1 * $reward['integral'], -1 * $reward['reward'], $_SESSION['account'], $order_sn . '奖金发放')) {
                         $reward_status = array('status' => 1, 'solve_time' => time());
                         $db->autoUpdate('member_reward', $reward_status, '`id`=' . $reward['id']);
                     }
                 }
             }
             $response['error'] = 0;
             $response['msg'] = '确认收货成功';
         } else {
             $response['msg'] = '系统繁忙,请稍后再试';
         }
     } else {
         $response['msg'] = '订单错误';
     }
 }
 echo json_encode($response);
Exemple #6
0
    $get_withdraw = 'select * from ' . $db->table($table) . ' where withdraw_sn = \'' . $sn . '\' limit 1';
    $withdraw = $db->fetchRow($get_withdraw);
    if (empty($withdraw)) {
        show_system_message('提现记录不存在', array());
        exit;
    }
    if ($withdraw['status'] == 1) {
        show_system_message('该笔提现已到帐', array());
        exit;
    }
    $update_withdraw = 'update ' . $db->table($table) . ' set status = 1, solve_time = ' . time() . '  where withdraw_sn = \'' . $sn . '\' limit 1';
    if ($db->update($update_withdraw)) {
        $data = array('add_time' => time(), 'operator' => $_SESSION['account'], 'withdraw_sn' => $sn, 'status' => 1, 'remark' => '金额到帐');
        $db->autoInsert($table . '_log', array($data));
        //添加账户明细记录
        add_memeber_exchange_log($withdraw['account'], 0, -1 * ($withdraw['amount'] + $withdraw['fee']), 0, 0, 0, $_SESSION['account'], '提现到帐');
        show_system_message('操作成功', array());
        exit;
    } else {
        show_system_message('系统繁忙,请稍后重试', array());
        exit;
    }
}
if ('log' == $act) {
    if (!check_purview('pur_withdraw_log', $_SESSION['purview'])) {
        show_system_message('权限不足', array());
        exit;
    }
    $type = intval(getGET('type'));
    if ($type == 0) {
        $table = 'withdraw_log';
Exemple #7
0
 //是否支付过
 $check_paid = 'select * from ' . $db->table('order_log') . ' where order_sn = \'' . $order_sn . '\' and status = 3';
 $paid = $db->fetchRow($check_paid);
 $check_received = 'select * from ' . $db->table('order_log') . ' where order_sn = \'' . $order_sn . '\' and status = 7';
 $received = $db->fetchRow($check_received);
 $balance_paid = $order['balance_paid'];
 $reward_paid = $order['reward_paid'];
 $integral_paid = $order['integral_paid'] - $consumed_integral;
 $order_amount = $order['product_amount'] + $order['delivery_fee'] - $consumed_amount;
 $order_amount_paid = $order_amount - $reward_paid / $config['reward_rate'] + $consumed_amount;
 if (empty($paid)) {
     //未支付
     add_memeber_exchange_log($order['account'], $balance_paid, $reward_paid, $integral_paid, 0, 0, $_SESSION['business_admin'], $order_sn . '退单');
 } else {
     //已支付
     add_memeber_exchange_log($order['account'], $order_amount_paid, $reward_paid, $integral_paid, 0, 0, $_SESSION['business_admin'], $order_sn . '退单');
     if (empty($received)) {
         //未收货
         $update_business = 'update ' . $db->table('business') . ' set ' . '`trade`=`trade`-' . ($order_amount - $order['reward_amount']) . ' where `business_account`=\'' . $order['business_account'] . '\'';
         if ($db->update($update_business)) {
             $business_log_data = array('business_account' => $order['business_account'], 'balance' => 0, 'trade' => -1 * ($order_amount - $order['reward_amount']), 'add_time' => time(), 'operator' => $_SESSION['business_admin'], 'remark' => $order_sn . '退单');
             if ($db->autoInsert('business_exchange_log', array($business_log_data))) {
                 $db->autoDelete('trade', '`remark`=\'' . $order_sn . '\'');
             }
         }
     } else {
         //已收货
         $update_business = 'update ' . $db->table('business') . ' set ' . '`balance`=`balance`-' . ($order_amount - $order['reward_amount']) . ' where `business_account`=\'' . $order['business_account'] . '\'';
         if ($db->update($update_business)) {
             $business_log_data = array('business_account' => $order['business_account'], 'trade' => 0, 'balance' => -1 * ($order_amount - $order['reward_amount']), 'add_time' => time(), 'operator' => $_SESSION['business_admin'], 'remark' => $order_sn . '退单');
             $db->autoInsert('business_exchange_log', array($business_log_data));
Exemple #8
0
    }
    if ($recharge['status'] == 1) {
        show_system_message('该笔充值已到帐', array());
        exit;
    }
    if ($recharge['status'] == 3) {
        show_system_message('该笔充值已取消', array());
        exit;
    }
    $update_recharge = 'update ' . $db->table($table) . ' set status = 1, solve_time = ' . time() . '  where recharge_sn = \'' . $sn . '\' limit 1';
    if ($db->update($update_recharge)) {
        //添加充值明细
        $data = array('add_time' => time(), 'operator' => $_SESSION['account'], 'recharge_sn' => $sn, 'status' => 1, 'remark' => '线下充值到帐,金额:' . $recharge['amount']);
        $db->autoInsert($table . '_log', array($data));
        //添加账户明细记录
        add_memeber_exchange_log($recharge['account'], $recharge['amount'], 0, 0, 0, 0, $_SESSION['account'], '线下充值到帐');
        show_system_message('操作成功', array());
        exit;
    } else {
        show_system_message('系统繁忙,请稍后重试', array());
        exit;
    }
}
if ('log' == $act) {
    if (!check_purview('pur_recharge_log', $_SESSION['purview'])) {
        show_system_message('权限不足', array());
        exit;
    }
    $table = 'recharge_log';
    $st = trim(getGET('st'));
    $et = trim(getGET('et'));
Exemple #9
0
/**
 * 发放推广积分
 * @param $account
 * @param $integral
 * @param $remark
 * @return bool
 */
function add_recommend_integral($account, $integral, $remark = '', $operator = 'settle')
{
    return add_memeber_exchange_log($account, 0, 0, $integral, 0, 0, $operator, $remark);
}
/**
 * 三级分销结算
 * @param float $reward
 * @param string $path
 * @return bool
 */
function distribution_settle($reward, $path, $order_sn = '')
{
    global $db;
    global $config;
    global $log;
    $log->record('结算开始');
    $ids_arr = explode(',', $path);
    array_pop($ids_arr);
    $current_id = array_pop($ids_arr);
    /*
     * $level = array(
     *      0 => '消费者',
     *      1 => '合伙人',
     *      2 => '高级合伙人'
     * );
     */
    $get_account = 'select `account`,`level_id` from ' . $db->table('member') . ' where `id`=' . $current_id;
    $member = $db->fetchRow($get_account);
    $refund = $reward * $config['refund_rate'];
    //合伙人以上级别享受返利
    if ($member['level_id'] > 0 && $refund) {
        add_memeber_exchange_log($member['account'], 0, 0, 0, 0, $refund, 'settle', $order_sn . '合伙人返利');
        add_member_reward($member['account'], $refund, 0, $order_sn, $order_sn);
        $refund = 0;
    }
    $ids_arr_str = implode(',', $ids_arr);
    //获取合伙人
    $get_senior_member = 'select `id`,`account`,`level_id` from ' . $db->table('member') . ' where `id` in (' . $ids_arr_str . ') and `level_id`>=1 order by `path` DESC';
    $senior_member = $db->fetchAll($get_senior_member);
    while (count($ids_arr) > 3) {
        array_shift($ids_arr);
    }
    //三级分销部分
    $level = 1;
    while ($id = array_pop($ids_arr)) {
        $reward_tmp = $reward * $config['level_' . $level];
        $get_account = 'select `account` from ' . $db->table('member') . ' where `id`=' . $id;
        $account = $db->fetchOne($get_account);
        if ($reward_tmp) {
            add_memeber_exchange_log($account, 0, 0, 0, 0, $reward_tmp, 'settle', $order_sn . '推广奖');
            add_member_reward($account, $reward_tmp, 0, $order_sn);
        }
        $level++;
    }
    //这种计算方法仅适用于子节点的id大于父节点
    //团队奖部分
    if ($senior_member) {
        foreach ($senior_member as $member) {
            //团队奖
            if ($member['level_id'] > 1) {
                $reward_tmp = $reward * $config['group_prize_rate'];
                if ($reward_tmp) {
                    add_memeber_exchange_log($member['account'], 0, 0, 0, 0, $reward_tmp, 'settle', $order_sn . '团队奖');
                    add_member_reward($member['account'], $reward_tmp, 0, $order_sn);
                }
            }
            //返利
            if ($refund) {
                add_memeber_exchange_log($member['account'], 0, 0, 0, 0, $refund, 'settle', $order_sn . '合伙人返利');
                add_member_reward($member['account'], $refund, 0, $order_sn);
                $refund = 0;
            }
        }
    }
    $log->record('结算结束');
    return true;
}