RetentionMoneyLogic.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace app\api\logic;
  3. use app\common\enum\worker\WorkerAccountLogEnum;
  4. use app\common\logic\BaseLogic;
  5. use app\common\model\master_worker\MasterWorker;
  6. use app\common\model\master_worker\MasterWorkerRetentionMoneyLog;
  7. use app\common\model\works\ServiceWork;
  8. use think\facade\Db;
  9. class RetentionMoneyLogic extends BaseLogic
  10. {
  11. public static function add($params)
  12. {
  13. Db::startTrans();
  14. try {
  15. $surplus_money = 0;
  16. if(isset($params['work_id']) && !empty($params['work_id'])){
  17. $workModel = ServiceWork::findOrEmpty($params['work_id']);
  18. if($workModel->isEmpty()){
  19. throw new \Exception('工单不存在');
  20. }
  21. }
  22. MasterWorkerRetentionMoneyLog::create([
  23. 'sn' => generate_sn(MasterWorkerRetentionMoneyLog::class,'sn'),
  24. 'worker_id' => $params['worker_id'],
  25. 'action' => $params['action'],
  26. 'amount' => $params['amount'],
  27. 'work_id' => $params['work_id'],
  28. 'remark' => $params['remark'],
  29. ]);
  30. // $params['worker_id']
  31. $masterWorkerInfo = MasterWorker::where('id', $params['worker_id'])->findOrEmpty();
  32. $masterWorkerInfo->earnest_money_usable += $params['earnest_money_usable'];
  33. if($masterWorkerInfo->earnest_money_usable > $masterWorkerInfo->earnest_money){
  34. $surplus_money = $masterWorkerInfo->earnest_money_usable - $masterWorkerInfo->earnest_money;
  35. $masterWorkerInfo->earnest_money_usable += ($params['earnest_money_usable']-$surplus_money);
  36. }
  37. $masterWorkerInfo->save();
  38. Db::commit();
  39. return $surplus_money;
  40. } catch (\Exception $e) {
  41. Db::rollback();
  42. self::setError($e->getMessage());
  43. return false;
  44. }
  45. }
  46. }