TaskSystem/app/common/logic/finance/ShareProfit.php

84 lines
3.8 KiB
PHP
Raw Normal View History

2023-08-09 14:43:30 +08:00
<?php
2023-08-18 16:32:41 +08:00
2023-08-09 14:43:30 +08:00
namespace app\common\logic\finance;
use app\common\enum\user\AccountLogEnum;
use app\common\logic\AccountLogLogic;
2023-08-09 15:44:41 +08:00
use app\common\model\Company;
2023-08-14 17:44:55 +08:00
use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
2023-08-09 14:43:30 +08:00
use app\common\model\user\User;
2023-08-11 16:35:07 +08:00
use think\facade\Db;
use think\facade\Log;
2023-08-09 14:43:30 +08:00
class ShareProfit
{
2023-08-18 16:32:41 +08:00
public function first($data, $company)
2023-08-09 14:43:30 +08:00
{
2023-08-18 16:32:41 +08:00
if ($company['day_count'] <= $data['proportion_one']) {
$proportion = $data['proportion_one'];
} else {
$proportion = $data['proportion_two'];
2023-08-14 17:44:55 +08:00
}
//总金额除以2等于不可提现账号金额和收益
2023-08-18 16:32:41 +08:00
$master_maoney = bcdiv($data['money'], 2, 2);
2023-08-14 17:44:55 +08:00
//收益的百分之25为负责人的收益其余为成员的平分收益
2023-08-18 16:32:41 +08:00
$master_maoney_user = bcdiv($master_maoney, 2, 2);
2023-08-14 17:44:55 +08:00
//公司账户预存金
2023-08-18 16:32:41 +08:00
// $company_money = $master_maoney;
2023-08-14 17:44:55 +08:00
//成员数量
2023-08-18 16:32:41 +08:00
$userAll = User::where('company_id', $data['company_id'])->where('admin_id', 0)->field('id,user_money')->select();
$yser_all_count = count($userAll);
$member_maoney_user = bcdiv($master_maoney_user, $yser_all_count, 2);
2023-08-17 15:30:58 +08:00
2023-08-09 18:39:31 +08:00
//负责人
2023-08-11 16:35:07 +08:00
Db::startTrans();
try {
2023-08-18 16:32:41 +08:00
$arr = [$company['user_id'], AccountLogEnum::UM_INC_TASK, AccountLogEnum::INC, $master_maoney_user, $data['sn'], $data['msg'] . '获得收益' . $master_maoney_user . '元', ['company_id' => $data['company_id'], 'proportion' => $proportion], $data['status']];
$this->master($arr);
2023-08-18 17:42:46 +08:00
$arr = [$company['user_id'], AccountLogEnum::UM_INC_TASKUSER, AccountLogEnum::INC, $master_maoney_user, $data['sn'], $data['msg'] . '获得账户余额' . $master_maoney_user . '元', ['company_id' => $data['company_id'], 'proportion' => $proportion], $data['status']];
$this->Account($arr);
2023-08-18 16:32:41 +08:00
//成员
foreach ($userAll as $key => $value) {
$arr = [$value['id'], AccountLogEnum::UM_INC_TASK, AccountLogEnum::INC, $member_maoney_user, $data['sn'], $data['msg'] . '获得收益' . $member_maoney_user . '元', ['company_id' => $data['company_id'], 'proportion' => $proportion], $data['status']];
$this->member($arr);
2023-08-18 17:42:46 +08:00
$arr = [$value['id'], AccountLogEnum::UM_INC_TASKUSER, AccountLogEnum::INC, $member_maoney_user, $data['sn'], $data['msg'] . '获得账户余额' . $member_maoney_user . '元', ['company_id' => $data['company_id'], 'proportion' => $proportion], $data['status']];
$this->Account($arr);
2023-08-18 16:32:41 +08:00
}
//公司
Company::where('id', $data['company_id'])->update(['deposit'=>Db::raw('deposit+' . $master_maoney), 'company_money'=>Db::raw('company_money+' .$master_maoney)]);
TaskSchedulingPlan::where('id', $data['id'])->update(['is_pay' => 1]);
2023-08-17 15:30:58 +08:00
2023-08-18 16:32:41 +08:00
Db::commit();
return true;
2023-08-11 16:35:07 +08:00
} catch (\Exception $e) {
Db::rollback();
2023-08-18 16:32:41 +08:00
Log::error('任务结算失败:' . $e->getMessage());
2023-08-11 16:35:07 +08:00
return false;
}
2023-08-09 15:44:41 +08:00
}
/**负责人的分润
* @param $data
*/
2023-08-18 16:32:41 +08:00
private function master($data)
{
2023-08-18 17:29:51 +08:00
User::where('id', $data[0])->update(['deposit'=>Db::raw('deposit+' . $data[3]),'user_money'=>Db::raw('user_money+' . $data[3])]);
2023-08-18 16:32:41 +08:00
return AccountLogLogic::add($data[0], $data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7]);
2023-08-09 14:43:30 +08:00
}
2023-08-09 15:44:41 +08:00
/**成员分润
* @param $data
*/
2023-08-18 16:32:41 +08:00
private function member($data)
{
2023-08-18 17:29:51 +08:00
User::where('id', $data[0])->update(['deposit'=>Db::raw('deposit+' . $data[3]),'user_money'=>Db::raw('user_money+' . $data[3])]);
2023-08-18 16:32:41 +08:00
return AccountLogLogic::add($data[0], $data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7]);
2023-08-09 14:43:30 +08:00
}
2023-08-18 17:42:46 +08:00
private function Account($data)
{
return AccountLogLogic::add($data[0], $data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7]);
}
2023-08-18 16:32:41 +08:00
}