isEmpty()){ throw new \Exception('用户不存在'); } $where = []; $where[] = ['worker_id','=',$params['worker_id']] ; $incWhere =$where; $incWhere[] = ['action', '=',WorkerAccountLogEnum::INC]; $data = []; //$data['amount_inc_total'] = MasterWorkerRetentionMoneyLog::where($incWhere)->sum('amount'); $data['amount_inc_total'] = $model->earnest_money; $outWhere = $where; $outWhere[] =['action', '=',WorkerAccountLogEnum::DEC]; //$data['amount_dec_total'] = MasterWorkerRetentionMoneyLog::where($outWhere)->sum('amount'); $data['amount_dec_total'] = $model->earnest_money_freeze; //$data['amount_available_total'] = $data['amount_inc_total'] - $data['amount_dec_total']; $data['amount_available_total'] = $model->earnest_money_usable; $data['retention_money_status'] = $model->retention_money_status; $data['retention_money_status_text'] = $model->retention_money_status_text; $data['retention_pay_status'] = $model->retention_pay_status; $data['retention_pay_status_text'] = $model->retention_pay_status_text; $data['worker_number'] = $model->worker_number; $data['real_name'] = $model->real_name; $data['worker_id'] = $model->id; return $data; } catch(\Exception $e){ self::setError($e->getMessage()); return false; } } public static function add($params) { Db::startTrans(); try { if(isset($params['work_id']) && !empty($params['work_id'])){ $workModel = ServiceWork::findOrEmpty($params['work_id']); if($workModel->isEmpty()){ throw new \Exception('工单不存在'); } } MasterWorkerRetentionMoneyLog::create([ 'sn' => generate_sn(MasterWorkerRetentionMoneyLog::class,'sn'), 'worker_id' => $params['worker_id'], 'action' => $params['action'], 'amount' => $params['amount'], 'work_id' => $params['work_id'], 'remark' => $params['remark'], ]); // $params['worker_id'] $masterWorkerInfo = MasterWorker::where('id', $params['worker_id'])->findOrEmpty(); if($params['action'] == WorkerAccountLogEnum::INC){ $masterWorkerInfo->earnest_money_usable += $params['earnest_money_usable']; if($masterWorkerInfo->earnest_money_usable > $masterWorkerInfo->earnest_money){ throw new \Exception('可用质保金超过配置质保金'); } } if($params['action'] == WorkerAccountLogEnum::DEC){ $masterWorkerInfo->earnest_money_usable -= $params['earnest_money_usable']; $masterWorkerInfo->earnest_money_freeze += $params['earnest_money_freeze']; if($masterWorkerInfo->earnest_money_usable < 0){ throw new \Exception('可用质保金不足'); } } $masterWorkerInfo->save(); Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } }