RetentionMoneyLogic.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. use think\facade\Log;
  10. class RetentionMoneyLogic extends BaseLogic
  11. {
  12. public static function add($params)
  13. {
  14. Db::startTrans();
  15. try {
  16. $surplus_money = 0;
  17. if(isset($params['work_id']) && !empty($params['work_id'])){
  18. $workModel = ServiceWork::findOrEmpty($params['work_id']);
  19. if($workModel->isEmpty()){
  20. throw new \Exception('工单不存在');
  21. }
  22. }
  23. Log::info('RetentionMoneyLogic-params:'.json_encode($params));
  24. // $params['worker_id']
  25. $masterWorkerInfo = MasterWorker::where('id', $params['worker_id'])->findOrEmpty();
  26. $earnest_money_usable = (float)$masterWorkerInfo->earnest_money_usable + (float)$params['amount'];
  27. if($earnest_money_usable > (float)$masterWorkerInfo->earnest_money){
  28. $surplus_money = $earnest_money_usable - (float)$masterWorkerInfo->earnest_money;
  29. $params['remark'] .= "\n原质保金:{$masterWorkerInfo->earnest_money},原可用质保金:{$masterWorkerInfo->earnest_money_usable},缴纳多余:{$surplus_money},实际缴纳:".((float)$params['amount']-$surplus_money);
  30. $masterWorkerInfo->earnest_money_usable += ((float)$params['amount']-$surplus_money);
  31. }
  32. $masterWorkerInfo->save();
  33. MasterWorkerRetentionMoneyLog::create([
  34. 'sn' => generate_sn(MasterWorkerRetentionMoneyLog::class,'sn'),
  35. 'worker_id' => $params['worker_id'],
  36. 'action' => $params['action'],
  37. 'amount' => ((float)$params['amount']-$surplus_money),
  38. 'work_id' => $params['work_id'],
  39. 'remark' => $params['remark'],
  40. ]);
  41. Db::commit();
  42. return $surplus_money;
  43. } catch (\Exception $e) {
  44. Db::rollback();
  45. self::setError($e->getMessage());
  46. return false;
  47. }
  48. }
  49. }