138 lines
4.9 KiB
PHP
138 lines
4.9 KiB
PHP
<?php
|
|
|
|
namespace app\api\controller;
|
|
|
|
use app\common\model\finance\CapitalFlow;
|
|
use app\common\model\user\User;
|
|
use app\common\model\vip_flow\VipFlow;
|
|
|
|
class BackController extends BaseApiController
|
|
{
|
|
public $notNeedLogin = ['backProfit'];
|
|
|
|
/**
|
|
* 返利
|
|
* @return void
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\DbException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
*/
|
|
public function backProfit()
|
|
{
|
|
//读取前3天的值 按照用户id和类型分下 加到对应的钱
|
|
$startTime = strtotime(date('Y-m-d', strtotime('-3 days')));
|
|
$endTime = strtotime(date('Y-m-d'));
|
|
|
|
$result = VipFlow::where('create_time', '>=', $startTime)
|
|
->where('create_time', '<', $endTime)
|
|
->group('user_id, pay_type')
|
|
->field('user_id, pay_type, COUNT(*) as transaction_count, SUM(number) as total_amount')
|
|
->select()->toArray();
|
|
|
|
// 遍历查询结果并分类 现金不进入反的逻辑
|
|
//3余额 18采购款 7微信小程序 9微信条码 13 支付宝条码支付
|
|
$Balance = [];
|
|
$Procurement = [];
|
|
$WechatMiniPay = [];
|
|
$WechatBarcodePay = [];
|
|
$AliBarcodePay = [];
|
|
foreach ($result as $row) {
|
|
$payType = $row['pay_type'];
|
|
$userId = $row['user_id'];
|
|
$totalAmount = $row['total_amount'];
|
|
switch ($payType) {
|
|
case 3:
|
|
$user_now_money = User::where(
|
|
[
|
|
'id' => $userId
|
|
]
|
|
)->withTrashed()->value('now_money');
|
|
$Balance[] = [
|
|
'id' => $userId,
|
|
'now_money' => bcadd($user_now_money, $totalAmount, 2),
|
|
];
|
|
break;
|
|
case 7:
|
|
$WechatMiniPay[] = [
|
|
'id' => $userId,
|
|
'total_amount' => $totalAmount,
|
|
];
|
|
break;
|
|
case 9:
|
|
$WechatBarcodePay[] = [
|
|
'id' => $userId,
|
|
'total_amount' => $totalAmount,
|
|
];
|
|
break;
|
|
case 13:
|
|
$AliBarcodePay[] = [
|
|
'id' => $userId,
|
|
'total_amount' => $totalAmount,
|
|
];
|
|
break;
|
|
case 18:
|
|
$purchase_funds_money = User::where(
|
|
[
|
|
'id' => $userId
|
|
]
|
|
)->withTrashed()->value('purchase_funds');
|
|
$Procurement[] = [
|
|
'id' => $userId,
|
|
'purchase_funds' => bcadd($purchase_funds_money, $totalAmount, 2),
|
|
];
|
|
break;
|
|
}
|
|
|
|
}
|
|
//入记录表的话查询后便利入 3余额 18采购款
|
|
if ($Balance) {
|
|
(new User())->saveAll($Balance);
|
|
$this->dealCapital($startTime, $endTime, 3);
|
|
}
|
|
if ($Procurement) {
|
|
(new User())->saveAll($Procurement);
|
|
$this->dealCapital($startTime, $endTime, 18);
|
|
}
|
|
//7微信小程序 9微信条码 13 支付宝条码支付
|
|
|
|
|
|
}
|
|
|
|
public function dealCapital($startTime, $endTime, $pay_type)
|
|
{
|
|
$vipFrozen = VipFlow::where('create_time', '>=', $startTime)
|
|
->where('create_time', '<', $endTime)
|
|
->where('pay_type', $pay_type)->select()->toArray();
|
|
if ($pay_type == 18) {
|
|
$category_title = 'system_purchase_add';
|
|
$title = '系统增加采购款';
|
|
$mark = '系统增加采购款';
|
|
$filed = 'purchase_funds';
|
|
} else {
|
|
$category_title = 'system_balance_add';
|
|
$title = '系统增加余额';
|
|
$mark = '系统反余额冻结';
|
|
$filed = 'now_money';
|
|
}
|
|
|
|
$newArr = [];
|
|
foreach ($vipFrozen as $k => $value) {
|
|
$user_funds = User::where('id', $value['user_id'])->value($filed);
|
|
$newArr[$k]['uid'] = $value['user_id'];
|
|
$newArr[$k]['category'] = $category_title;
|
|
$newArr[$k]['link_type'] = 'order';
|
|
$newArr[$k]['link_id'] = $value['order_id'];
|
|
$newArr[$k]['amount'] = $value['number'];
|
|
$newArr[$k]['before_balance'] = $user_funds;
|
|
$newArr[$k]['balance'] = bcadd($user_funds, $value['number'], 2);
|
|
$newArr[$k]['create_time'] = date('Y-m-d H:i:s');
|
|
$newArr[$k]['type'] = 'in';
|
|
$newArr[$k]['title'] = $title . "{$value['number']}元";
|
|
$newArr[$k]['mark'] = $mark;
|
|
}
|
|
(new CapitalFlow())->saveAll($newArr);
|
|
|
|
}
|
|
|
|
|
|
} |