dlhmaster/app/api/logic/BillionsLogic.php
2024-07-03 22:46:57 +08:00

184 lines
6.2 KiB
PHP

<?php
namespace app\api\logic;
use app\common\basics\Logic;
use app\common\enum\WithdrawEnum;
use app\common\logic\AccountLogLogic;
use app\common\model\AccountLog;
use app\common\model\BalanceWithdrawApply;
use app\common\model\billions\Billions;
use app\common\model\subsidy_withdrawal\SubsidyWithdrawal;
use app\common\model\subsidy_withdrawal\SubsidyWithdrawalRecord;
use app\common\model\user\User;
use app\common\server\ConfigServer;
use think\Exception;
use think\facade\Db;
class BillionsLogic extends Logic
{
const COMMISSION = 10; // 手续费
const MINIMUM_WITHDRAWAL = 1; // 最低提现
const MAXIMUM_WITHDRAWAL = '500'; // 最高提现
// 获取数据
public static function lists($page, $size, $state, $user_id)
{
$where[] = ['b.user_id', '=', $user_id];
if ($state == 1) {
$where[] = ['b.state', '>=', 1];
} else {
$where[] = ['b.state', '=', 0];
}
$list = Billions::alias('b')->where($where)
->join('order o', 'o.id = b.order_id')
->join('goods g', 'g.id = b.goods_id')
->join('shop s', 's.id = b.shop_id')
->field('b.*, o.order_sn, s.name')
->page($page,$size)->select();
$count = Billions::alias('b')->where($where)
->alias('b')
->join('order o', 'o.id = b.order_id')
->join('goods g', 'g.id = b.goods_id')
->join('shop s', 's.id = b.shop_id')
->count();
// 消费订单笔数
$historyOrder = Billions::where('user_id', $user_id)->count();
// 商家最高补贴
$highSubsidy = Billions::where('user_id', $user_id)->sum('order_price', false);
$more = is_more($count, $page, $size); //是否有下一页
$data = [
'list' => $list,
'page_no' => $page,
'page_size' => $size,
'count' => $count,
'more' => $more,
'historyOrder' => $historyOrder,
'highSubsidy' => $highSubsidy
];
return $data;
}
// 获取排名
public static function getRanking($billions_id){
$where[] = ['billions_id', '<=', $billions_id];
$where[] = ['state', '=', 0];
return Billions::where($where)->count();
}
// 提现进行记录
public static function withdrawRecord($id, $user_id){
Db::startTrans();
try {
$billions = Billions::where([
'billions_id' => $id,
'state' => 0
])->find();
if ($billions) {
Billions::where([
'billions_id' => $id,
'user_id' => $user_id,
])->update(['state' => 1]);
// 查看用户是否有过余额添加记录
$subsidy = SubsidyWithdrawal::where(['user_id' => $user_id])->find();
if ($subsidy) {
$subsidy_id = $subsidy->id;
SubsidyWithdrawal::where(['user_id' => $user_id])->inc('total_amount', $billions->subsidy_price)->update();
} else {
$subsidy_id = SubsidyWithdrawal::insert([
'user_id' => $user_id,
'total_amount' => $billions->subsidy_price
]);
}
// 增加余额记录日志
SubsidyWithdrawalRecord::insert([
'subsidy_withdrawal_id' => $subsidy_id,
'user_id' => $user_id,
'billions_id' => $id,
'type' => 1,
'way' => 0,
'money' => $billions->subsidy_price,
'desc' => '+余额增加' . $billions->subsidy_price,
'create_time' => date('Y-m-d H:i:s')
]);
}
Db::commit();
return true;
} catch (Exception $e) {
Db::rollback();
return false;
}
}
public static function getSubsidyWithdraw($user_id)
{
$data['type'] = array(
0 => [
'name' => '微信零钱',
'value' => 2,
],
// 1 => [
// 'name' => '银行卡',
// 'value' => 5,
// ],
1 => [
'name' => '东龙汇余额账户',
'value' => 1,
]
);
// 手续费
$data['commission'] = self::COMMISSION . '%';
// 提现规则
$data['rule'] = '提现规则';
// 最小提现金额
$data['min_withdraw'] = self::MINIMUM_WITHDRAWAL;
$subsidy = SubsidyWithdrawal::where(['user_id' => $user_id])->find();
$data['able_withdraw'] = $subsidy->total_amount;
return $data;
}
public static function balanceapply($user_id, $post)
{
Db::startTrans();
try {
// 1. 减少余额
SubsidyWithdrawal::where(['user_id' => $user_id])->dec('total_amount', $post['money'])->update();
// 2.先记录到日志下
$commission_money = $post['money'] * (BillionsLogic::COMMISSION / 100); // 需要扣除手续费的金额
$take_money = $post['money'] - ($post['money'] * (BillionsLogic::COMMISSION / 100)); // 实际到手的金额
SubsidyWithdrawalRecord::insert([
'subsidy_withdrawal_id' => 0,
'user_id' => $user_id,
'billions_id' => 0,
'type' => 2,
'commission_money' => $commission_money,
'commission' => BillionsLogic::COMMISSION . '%',
'take_money' => $take_money,
'way' => $post['type'],
'money' => $post['money'],
'desc' => '-余额提现总额减少¥' . $post['money'] . ';手续费%' . BillionsLogic::COMMISSION . ';扣除手续费%' . $commission_money . ';实际到手¥' . $take_money,
'create_time' => date('Y-m-d H:i:s')
]);
// 3. 开始提现
//提现手续费
Db::commit();
} catch (Exception $e) {
Db::rollback();
throw new Exception($e->getMessage());
}
}
}