1.支付逻辑修改

This commit is contained in:
xucong 2024-09-23 16:03:51 +08:00
parent ba364e22b8
commit 839895ca4d
5 changed files with 294 additions and 18 deletions

@ -29,10 +29,13 @@ class Billions extends Api
foreach($list['list'] as $key=>$value){
$ranking = BillionsLogic::getRanking($value['billions_id']);
$list['list'][$key]['ranking'] = $ranking;
BillionsLogic::checkBillions($value['billions_id'],$ranking,$this->user_id);
}
return JsonServer::success('获取成功', $list);
}
// 脚本1分钟运行一次
/**
* @notes 提现
*/

@ -115,6 +115,131 @@ class BillionsLogic extends Logic
return Billions::where($where)->count();
}
// 计算队列金额
public static function checkBillions($billion,$ranking,$user_id){
$result = Db::name("user_billions_surplus")
->where("residue_price",">","0")
->where("user_start_price",">","0")
->select()->toArray();
foreach($result as $key=>$value){
$result = Db::name("user_billions_surplus_log")
->where("surplus_id",$value['surplus_id'])
->where("user_billion_id",$billion)
->find();
if($value['billions_id']>=$billion){
if($result == null){
$d['surplus_id'] = $value['surplus_id'];
$d['user_id'] = $user_id;
$d['billions_id'] = $value['billions_id'];
$d['user_billion_id'] = $billion;
$d['dtime'] = date("Y-m-d H:i:s");
if($ranking <= $value['user_start_num']){
if($value['user_start_price'] >0){
if($value['user_start_avg_price'] <= $value['user_start_price']){
$dec_price = $d['price'] = $value['user_start_avg_price'];
}else{
$dec_price = $d['price'] = $value['user_start_price'];
}
Db::name("user_billions_surplus")
->where("surplus_id",$value['surplus_id'])
->dec("user_start_price",$dec_price)
->update();
}
}else{
if($value['user_price'] <= $value['residue_price']){
$dec_price = $d['price'] = $value['user_price'];
}else{
$dec_price = $d['price'] = $value['residue_price'];
}
Db::name("user_billions_surplus")
->where("surplus_id",$value['surplus_id'])
->dec("residue_price",$dec_price)
->update();
}
Db::name("user_billions_surplus_log")
->save($d);
$my_billions = Db::name("user_billions")->where("billions_id",$billion)->where("state",0)->find();
if($my_billions!=null){
if($my_billions['order_price'] <= $d['price']+ $my_billions['subsidy_price']){
// 查询用户总余额账户
$first_user_all_account = Db::name("subsidy_withdrawal")->where("user_id",$user_id)->find();
if($first_user_all_account != null){
// 判断账户是否可用
if($first_user_all_account['state'] == 0 || $first_user_all_account['state'] == 2){
return -2;
}
// 更新主表
$first_update_subsidy_withdrawal = Db::name("subsidy_withdrawal")->where("user_id",$user_id)->inc("total_amount",$my_billions['order_price'])->update();
if(!$first_update_subsidy_withdrawal){
return -4;
}
$dat['subsidy_withdrawal_id'] = $first_user_all_account['id'];
$dat['user_id'] = $user_id;
$dat['billions_id'] = $billion;
$dat['type'] = 1;
$dat['money'] = $my_billions['order_price'];
$dat['create_time'] = date("Y-m-d H:i:s");
// 插入提现记录
$first_save_record = Db::name("subsidy_withdrawal_record")->save($dat);
if ($first_save_record) {
$send = array(
'user_id' => $user_id,
'money' => $my_billions['order_price']
);
sendBillionsSubsidySMS($send);
}
if(!$first_save_record){
return -5;
}
}else{
$d['user_id'] = $user_id;
$d['total_amount'] = $my_billions['order_price'];
$first_update_subsidy_withdrawal = Db::name("subsidy_withdrawal")->insertGetId($d);
if(!$first_update_subsidy_withdrawal){
return -4;
}
$dat['subsidy_withdrawal_id'] = $first_update_subsidy_withdrawal;
$dat['user_id'] = $user_id;
$dat['billions_id'] = $billion;
$dat['type'] = 1;
$dat['money'] = $my_billions['order_price'];
$dat['create_time'] = date("Y-m-d H:i:s");
// 插入提现记录
$first_save_record = Db::name("subsidy_withdrawal_record")->save($dat);
if ($first_save_record) {
$send = array(
'user_id' => $user_id,
'money' => $my_billions['order_price']
);
sendBillionsSubsidySMS($send);
}
if(!$first_save_record){
return -5;
}
}
// 更新排队状态
$first_update_user_billions = Db::name("user_billions")->where("billions_id",$billion)->update(['subsidy_price'=> $my_billions['order_price'],"state"=>2]);
if(!$first_update_user_billions){
return -3;
}
}else{
$subsidy_price_sum = round($my_billions['subsidy_price']+$d['price'],8);
Db::name("user_billions")->where("billions_id",$billion)->update(['subsidy_price'=>$subsidy_price_sum]);
// Db::name("user_billions")
// ->where("billions_id",$billion)
// ->inc("subsidy_price",$d['price'])
// ->update();
}
}
}
}
}
return true;
}
// 提现进行记录
public static function withdrawRecord($id, $user_id){
Db::startTrans();

@ -1739,6 +1739,15 @@ class OrderLogic extends Logic
if($order['billions_type'] == 0){
return false;
}
if(isset($order['id'])){
$check_order = Db::name("user_billions")
->where("order_id",$order['id'])
->where("type",$order['type'])
->find();
if($check_order != null){
return true;
}
}
$user_subsidy = 2; // 自我补贴
$all_user_subsidy = 20; //全用户获取的比例
$user_start_num = 1; // 补贴前几位数量

@ -422,8 +422,7 @@ class PayNotifyLogic
}
}
}
private static function recharge_billions($order, $user_id,$type="")
private static function recharge_billions_old($order, $user_id,$type="")
{
if(isset($order['id'])){
$check_order = Db::name("user_billions")
@ -799,6 +798,149 @@ class PayNotifyLogic
// WHERE billions_id IN ($billion_arr_id)";
// $query = Db::query($sql);
// 本地生活微信支付 推广商家收益
}
private static function recharge_billions($order, $user_id,$type="")
{
if(isset($order['id'])){
$check_order = Db::name("user_billions")
->where("order_id",$order['id'])
->where("type",$order['type'])
->find();
if($check_order != null){
return true;
}
}
$user_subsidy = 2; // 自我补贴
$all_user_subsidy = 20; //全用户获取的比例
$user_start_num = 1; // 补贴前几位数量
$user_start_subsidy = 40; //补贴前几位比例 全用户比例中扣除
$user_end_subsidy = 60; //补贴剩余部分比例
$user_first_leader = 40; // 推广者排队补贴
$first_leader = 5; //分销推广者补贴
$store_subsidy = 5; // 店铺推广者补贴 如没有补贴给店铺拥有者
$donglonghui = 5; //东龙汇服务费
$other_leader = 3; //分公司收入 如没有则并入东龙汇
$shop_com = 60; // 商家获取收入
$user = Db::name("user")->where(['id' => $user_id])->find();
$first_leader_user = Db::name("user")->where("id", $user['first_leader'])->find();
$is_d = Distribution::where('user_id', $user['first_leader'] )->where('is_distribution', 1 )->find();
$data['order_price'] = $order['order_amount']; // 改为充值金额
$data['user_id'] = $user_id;
$data['goods_id'] = 0; // 充值接口不需要该参数
$data['shop_id'] = 0; // 充值接口不需要该参数
$data['goods_num'] = 1; // 充值接口设置为1
$data['order_id'] = $order['id'];
$data['dtime'] = date("Y-m-d H:i:s");
$data['type'] = $order['type']; // 类型是充值
$data['subsidy_price'] = round($order['order_amount'] * $user_subsidy / 100,8);
$res = Db::name("user_billions")->insertGetId($data);
$subsidy = $order['order_amount'] * $all_user_subsidy / 100;
if($is_d != null){
$ufl = round($subsidy*$user_first_leader/100,8);
$subsidy_ufl = round($subsidy - $ufl,8);
$first_billions_msg = Db::name("user_billions")->where("user_id",$user['first_leader'])->where("state",0)->select()->toArray();
if(count($first_billions_msg) > 0){
foreach($first_billions_msg as $k=>$v){
if($ufl > 0){
if($v['order_price'] <= $ufl+$v['subsidy_price']){
// 查询用户总余额账户
$first_user_all_account = Db::name("subsidy_withdrawal")->where("user_id",$v['user_id'])->find();
if($first_user_all_account != null){
// 判断账户是否可用
if($first_user_all_account['state'] == 0 || $first_user_all_account['state'] == 2){
return -2;
}
// 更新主表
$first_update_subsidy_withdrawal = Db::name("subsidy_withdrawal")->where("user_id",$v['user_id'])->inc("total_amount",$v['order_price'])->update();
if(!$first_update_subsidy_withdrawal){
return -4;
}
$dat['subsidy_withdrawal_id'] = $first_user_all_account['id'];
$dat['user_id'] = $v['user_id'];
$dat['billions_id'] = $v['billions_id'];
$dat['type'] = 1;
$dat['money'] = $v['order_price'];
$dat['create_time'] = date("Y-m-d H:i:s");
// 插入提现记录
$first_save_record = Db::name("subsidy_withdrawal_record")->save($dat);
if ($first_save_record) {
$send = array(
'user_id' => $v['user_id'],
'money' => $v['order_price']
);
sendBillionsSubsidySMS($send);
}
if(!$first_save_record){
return -5;
}
}else{
$d['user_id'] = $v['user_id'];
$d['total_amount'] = $v['order_price'];
$first_update_subsidy_withdrawal = Db::name("subsidy_withdrawal")->insertGetId($d);
if(!$first_update_subsidy_withdrawal){
return -4;
}
$dat['subsidy_withdrawal_id'] = $first_update_subsidy_withdrawal;
$dat['user_id'] = $v['user_id'];
$dat['billions_id'] = $v['billions_id'];
$dat['type'] = 1;
$dat['money'] = $v['order_price'];
$dat['create_time'] = date("Y-m-d H:i:s");
// 插入提现记录
$first_save_record = Db::name("subsidy_withdrawal_record")->save($dat);
if ($first_save_record) {
$send = array(
'user_id' => $v['user_id'],
'money' => $v['order_price']
);
sendBillionsSubsidySMS($send);
}
if(!$first_save_record){
return -5;
}
}
// 更新排队状态
$first_update_user_billions = Db::name("user_billions")->where("billions_id",$v['billions_id'])->update(['subsidy_price'=>$v['order_price'],"state"=>2]);
if(!$first_update_user_billions){
return -3;
}
// 剩余金额
$ufl = round($ufl+$v['subsidy_price']-$v['order_price'],8);
}else{
$subsidy_price_sum = round($v['subsidy_price']+$ufl,8);
Db::name("user_billions")->where("billions_id",$v['billions_id'])->update(['subsidy_price'=>$subsidy_price_sum]);
// Db::name("user_billions")->where("billions_id",$v['billions_id'])->inc("subsidy_price",$ufl)->update();
$ufl = 0;
}
}
}
$subsidy = round($subsidy_ufl + $ufl,8);
}
self::atcl($order,$store_subsidy,$type,$user,$first_leader,$other_leader);
}
$billions_count = Db::name("user_billions")->where("state",0)->count();
$data_surplus['billions_id'] = $res;
$data_surplus['subsidy_all_price'] = $subsidy;
$data_surplus['user_start_num'] = $user_start_num;
$data_surplus['user_start_subsidy'] = $user_start_subsidy;
$data_surplus['user_start_price'] = round($subsidy*$user_start_subsidy/100,8);
$data_surplus['user_start_avg_price'] = round($data_surplus['user_start_price']/$user_start_num,8);
$data_surplus['residue_price'] = $subsidy-$data_surplus['user_start_price'];
if($billions_count>$user_start_num){
$data_surplus['user_price'] = round(($subsidy-$data_surplus['user_start_price'])/($billions_count-$user_start_num),8);
}
$data_surplus['dtime'] = date("Y-m-d H:i:s");
$rest = Db::name("user_billions_surplus")->save($data_surplus);
return $rest;
}
public static function atcl($order,$store_subsidy,$type,$user,$first_leader,$other_leader){
if(isset($order['lstore_id'])){
$local_msg = Db::name("local_store")
->where("lstore_id",$order['lstore_id'])
@ -839,22 +981,21 @@ class PayNotifyLogic
$remark = $remark1 =$remark2= "";
$source_type = $source_type1 =$source_type2= 0;
if($type == "balance_rechange"){
$remark = "推广用户充值佣金增加";
$remark = "用户充值佣金";
$source_type = AccountLog::recharge_billions_inc_earnings;
$remark1 = "无极会员推广充值佣金增加";
$remark1 = "无极充值佣金";
$source_type1 = AccountLog::electrodeless_rechange_inc_earnings;
$remark2 = "无极公司推广充值佣金增加";
$remark2 = "无极公司充值佣金";
$source_type2 = AccountLog::company_electrodeless_rechange_inc_earnings;
}
if($type == "local_pay"){
$remark = "本地生活推广用户支付佣金增加";
$remark = "本地生活用户佣金";
$source_type = AccountLog::local_user_inc_earnings;
$remark1 = "无极会员推广本地生活支付佣金增加";
$remark1 = "无极本地生活用户佣金";
$source_type1 = AccountLog::electrodeless_local_inc_earnings;
$remark2 = "无极公司推广本地生活支付佣金增加";
$remark2 = "无极公司本地生活用户佣金";
$source_type2 = AccountLog::company_electrodeless_local_inc_earnings;
}
if($is_d!=null){
if($user['first_leader']>0){
$first_leader_percent = round($order['order_amount'] * $first_leader / 100, 8);
// Order::where('id', $order['id'])
@ -979,11 +1120,9 @@ class PayNotifyLogic
'settlement_time' => time()
]);
}
}
return true;
}
/**
* @notes 积分订单回调
* @param $order_sn

@ -119,13 +119,13 @@ class AccountLog extends Models
self::after_sale_refund => '售后退回余额',
self::baiyibutie => '百亿补贴结算获得佣金',
self::billions_inc_earnings => '百亿返补佣金增加',
self::local_inc_earnings => '推广本地商家收款佣金增加',
self::balance_rechange_inc_earnings => '推广用户充值佣金增加',
self::electrodeless_rechange_inc_earnings => '无极会员推广充值佣金增加',
self::company_electrodeless_rechange_inc_earnings => '无极公司推广充值佣金增加',
self::local_user_inc_earnings => '本地生活推广用户支付佣金增加',
self::electrodeless_local_inc_earnings => '无极会员推广本地生活支付佣金增加',
self::company_electrodeless_local_inc_earnings => '无极公司推广本地生活支付佣金增加',
self::local_inc_earnings => '本地商家佣金',
self::balance_rechange_inc_earnings => '用户充值佣金',
self::electrodeless_rechange_inc_earnings => '无极用户充值佣金',
self::company_electrodeless_rechange_inc_earnings => '无极公司用户充值佣金',
self::local_user_inc_earnings => '本地生活用户佣金',
self::electrodeless_local_inc_earnings => '无极本地生活用户佣金',
self::company_electrodeless_local_inc_earnings => '无极公司本地生活用户佣金',
self::withdraw_to_balance => '佣金提现',
self::withdraw_dec_earnings => '提现扣减佣金',
self::withdraw_back_earnings => '拒绝提现返还佣金',