RetentionMoneyLogic.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /**
  3. * @author 林海涛
  4. * @date 2024/7/28 下午2:36
  5. */
  6. namespace app\adminapi\logic\master_worker;
  7. use app\common\enum\worker\WorkerAccountLogEnum;
  8. use app\common\logic\BaseLogic;
  9. use app\common\model\master_worker\MasterWorker;
  10. use app\common\model\master_worker\MasterWorkerRetentionMoneyLog;
  11. use app\common\model\works\ServiceWork;
  12. use think\facade\Db;
  13. class RetentionMoneyLogic extends BaseLogic
  14. {
  15. public static function totalAmount($params)
  16. {
  17. try{
  18. $model = MasterWorker::findOrEmpty($params['worker_id']);
  19. if($model->isEmpty()){
  20. throw new \Exception('用户不存在');
  21. }
  22. $where = [];
  23. $where[] = ['worker_id','=',$params['worker_id']] ;
  24. $incWhere =$where;
  25. $incWhere[] = ['action', '=',WorkerAccountLogEnum::INC];
  26. $data = [];
  27. $data['amount_inc_total'] = MasterWorkerRetentionMoneyLog::where($incWhere)
  28. ->sum('amount');
  29. $outWhere = $where;
  30. $outWhere[] =['action', '=',WorkerAccountLogEnum::DEC];
  31. $data['amount_dec_total'] = MasterWorkerRetentionMoneyLog::where($outWhere)
  32. ->sum('amount');
  33. $data['amount_available_total'] = $data['amount_inc_total'] - $data['amount_dec_total'];
  34. $data['retention_money_status'] = $model->retention_money_status;
  35. $data['retention_money_status_text'] = $model->retention_money_status_text;
  36. $data['retention_pay_status'] = $model->retention_pay_status;
  37. $data['retention_pay_status_text'] = $model->retention_pay_status_text;
  38. $data['worker_number'] = $model->worker_number;
  39. $data['real_name'] = $model->real_name;
  40. $data['worker_id'] = $model->id;
  41. return $data;
  42. } catch(\Exception $e){
  43. self::setError($e->getMessage());
  44. return false;
  45. }
  46. }
  47. public static function add($params)
  48. {
  49. Db::startTrans();
  50. try {
  51. if(isset($params['work_id']) && !empty($params['work_id'])){
  52. $workModel = ServiceWork::findOrEmpty($params['work_id']);
  53. if($workModel->isEmpty()){
  54. throw new \Exception('工单不存在');
  55. }
  56. }
  57. MasterWorkerRetentionMoneyLog::create([
  58. 'sn' => generate_sn(MasterWorkerRetentionMoneyLog::class,'sn'),
  59. 'worker_id' => $params['worker_id'],
  60. 'action' => $params['action'],
  61. 'amount' => $params['amount'],
  62. 'work_id' => $params['work_id'],
  63. 'remark' => $params['remark'],
  64. ]);
  65. Db::commit();
  66. return true;
  67. } catch (\Exception $e) {
  68. Db::rollback();
  69. self::setError($e->getMessage());
  70. return false;
  71. }
  72. }
  73. }