218 lines
7.2 KiB
PHP
218 lines
7.2 KiB
PHP
<?php
|
|
|
|
namespace app\api\logic;
|
|
|
|
use app\admin\logic\WechatCorporatePaymentLogic;
|
|
use app\admin\logic\WechatMerchantTransferLogic;
|
|
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\model\WithdrawApply;
|
|
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,
|
|
'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' => 1,
|
|
],
|
|
// 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'],
|
|
// 'create_time' => date('Y-m-d H:i:s')
|
|
// ]);
|
|
|
|
// 提现到微信零钱
|
|
if ($post['type'] == 1) {
|
|
$withdraw['sn'] = self::createSn();
|
|
$withdraw['left_money'] = $take_money;
|
|
$withdraw['batch_no'] = self::createSn('SJZZ', 7);
|
|
dump($withdraw);
|
|
die;
|
|
// //微信零钱接口: 商家转账到零钱
|
|
// WechatMerchantTransferLogic::transfer($withdraw);
|
|
}
|
|
die;
|
|
// 提现到平台余额
|
|
if ($post['type'] == 3) {
|
|
$user = User::find($user_id);
|
|
$user->user_money = ['inc', $take_money];
|
|
$user->save();
|
|
return [
|
|
'code' => 1,
|
|
'msg' => '提现至钱包余额成功'
|
|
];
|
|
}
|
|
|
|
Db::commit();
|
|
} catch (Exception $e) {
|
|
Db::rollback();
|
|
throw new Exception($e->getMessage());
|
|
}
|
|
}
|
|
|
|
// 创建订单号
|
|
private static function createSn($prefix = '', $length = 11)
|
|
{
|
|
$suffix = '';
|
|
for ($i = 0; $i < $length; $i++) {
|
|
if (empty($pool)) {
|
|
$suffix .= rand(0, 9);
|
|
} else {
|
|
$suffix .= $pool[array_rand($pool)];
|
|
}
|
|
}
|
|
return $prefix . date('YmdHis') . $suffix;
|
|
}
|
|
} |