TaskSystem/app/common/logic/finance/ShareProfit.php
2023-08-11 16:35:07 +08:00

70 lines
2.7 KiB
PHP

<?php
namespace app\common\logic\finance;
use app\common\enum\user\AccountLogEnum;
use app\common\logic\AccountLogLogic;
use app\common\model\Company;
use app\common\model\user\User;
use think\facade\Db;
use think\facade\Log;
class ShareProfit
{
public function first($data)
{
$company=Company::where('id',$data['company_id'])->field('id,deposit,company_money,user_id')->find();// 可能要判断预存金是否满足
$master_maoney=bcdiv($data['money'],2,2);
$master_maoney_user=bcdiv($master_maoney,2,2);
$company_money=$master_maoney_user;
$userAll=User::where('company_id',$data['company_id'])->where('admin_id',0)->field('id,user_money')->select();
$yser_all_count=count($userAll);
$merber_money=bcdiv(bcsub($data['money'],$master_maoney,2),$yser_all_count,2);
$member_maoney_user=bcdiv($merber_money,2,2);
//负责人
Db::startTrans();
try {
$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']]];
$this->master($arr);
$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']]];
$this->master($arr);
//成员
foreach ($userAll as $key => $value) {
$company_money+=$member_maoney_user;
$arr=[$value['id'], AccountLogEnum::UM_INC_TASK, AccountLogEnum::INC,$member_maoney_user,$data['sn'],$data['msg'].'获得收益'.$member_maoney_user.'元',['company_id'=>$data['company_id']]];
$this->member($arr);
$arr=[$value['id'], AccountLogEnum::UM_INC_TASKUSER, AccountLogEnum::INC,$member_maoney_user,$data['sn'],$data['msg'].'获得账户余额'.$member_maoney_user.'元',['company_id'=>$data['company_id']]];
$this->member($arr);
}
//公司
Company::where('id',$data['company_id'])->update(['company_money'=>$company_money,'deposit'=>$company_money]);
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
Log::error('任务结算失败:'.$e->getMessage());
return false;
}
}
/**负责人的分润
* @param $data
*/
private function master($data){
return AccountLogLogic::add($data[0],$data[1],$data[2],$data[3],$data[4],$data[5],$data[6]);
}
/**成员分润
* @param $data
*/
private function member($data){
return AccountLogLogic::add($data[0],$data[1],$data[2],$data[3],$data[4],$data[5],$data[6]);
}
}