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 { //金额不正确或返回不正确 } }
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'] . '\'');
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) {
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);
$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';
//是否支付过 $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));
} 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'));
/** * 发放推广积分 * @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; }