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

83 lines
3.5 KiB
PHP
Raw Normal View History

2023-08-09 14:43:30 +08:00
<?php
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-15 13:46:31 +08:00
public function first($data,$company)
2023-08-09 14:43:30 +08:00
{
2023-08-14 17:44:55 +08:00
if($company['day_count']<=$data['proportion_one']){
$proportion=$data['proportion_one'];
}else{
$proportion=$data['proportion_two'];
}
//总金额除以2等于不可提现账号金额和收益
2023-08-09 14:43:30 +08:00
$master_maoney=bcdiv($data['money'],2,2);
2023-08-14 17:44:55 +08:00
//收益的百分之25为负责人的收益其余为成员的平分收益
2023-08-09 17:16:23 +08:00
$master_maoney_user=bcdiv($master_maoney,2,2);
2023-08-14 17:44:55 +08:00
//公司账户预存金
$company_money=$master_maoney;
//成员数量
2023-08-09 15:44: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);
2023-08-14 17:44:55 +08:00
$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-15 14:38:20 +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']];
2023-08-09 18:39:31 +08:00
$this->master($arr);
2023-08-11 16:35:07 +08:00
2023-08-15 14:38:20 +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']];
2023-08-09 18:39:31 +08:00
$this->master($arr);
//成员
2023-08-09 15:44:41 +08:00
foreach ($userAll as $key => $value) {
2023-08-15 14:38:20 +08:00
$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']];
2023-08-09 17:16:23 +08:00
$this->member($arr);
2023-08-15 14:38:20 +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']];
2023-08-09 17:16:23 +08:00
$this->member($arr);
2023-08-09 15:44:41 +08:00
}
2023-08-09 18:39:31 +08:00
//公司
2023-08-17 15:30:58 +08:00
if($data['status']==1){
Company::where('id',$data['company_id'])->inc('deposit',$master_maoney)->inc('company_money',$master_maoney)->update();
TaskSchedulingPlan::where('id',$data['id'])->update(['is_pay'=>1]);
}
2023-08-11 16:35:07 +08:00
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
Log::error('任务结算失败:'.$e->getMessage());
return false;
}
2023-08-09 15:44:41 +08:00
}
/**负责人的分润
* @param $data
*/
2023-08-11 16:35:07 +08:00
private function master($data){
2023-08-15 14:38:20 +08:00
if($data[7]==1){
User::where('id',$data[0])->inc('user_money',$data[3])->inc('deposit',$data[3])->update();
}
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-11 16:35:07 +08:00
private function member($data){
2023-08-15 14:38:20 +08:00
if($data[7]==1){
User::where('id',$data[0])->inc('user_money',$data[3])->inc('deposit',$data[3])->update();
}
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
}
}