RetentionMoneyLogic.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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 think\facade\Db;
  12. class RetentionMoneyLogic extends BaseLogic
  13. {
  14. public static function totalAmount($params)
  15. {
  16. try{
  17. $model = MasterWorker::findOrEmpty($params['worker_id']);
  18. if($model->isEmpty()){
  19. throw new \Exception('用户不存在');
  20. }
  21. $where = [];
  22. $where[] = ['worker_id','=',$params['worker_id']] ;
  23. $incWhere =$where;
  24. $incWhere[] = ['action', '=',WorkerAccountLogEnum::INC];
  25. $data = [];
  26. $data['amount_inc_total'] = MasterWorkerRetentionMoneyLog::where($incWhere)
  27. ->sum('amount');
  28. $outWhere = $where;
  29. $outWhere[] =['action', '=',WorkerAccountLogEnum::DEC];
  30. $data['amount_dec_total'] = MasterWorkerRetentionMoneyLog::where($outWhere)
  31. ->sum('amount');
  32. $data['amount_available_total'] = $data['amount_inc_total'] - $data['amount_dec_total'];
  33. $data['retention_money_status'] = $model->retention_money_status;
  34. $data['retention_money_status_text'] = $model->retention_money_status_text;
  35. $data['retention_pay_status'] = $model->retention_pay_status;
  36. $data['retention_pay_status_text'] = $model->retention_pay_status_text;
  37. $data['worker_number'] = $model->worker_number;
  38. $data['real_name'] = $model->real_name;
  39. $data['worker_id'] = $model->id;
  40. return $data;
  41. } catch(\Exception $e){
  42. self::setError($e->getMessage());
  43. return false;
  44. }
  45. }
  46. public static function add($params)
  47. {
  48. Db::startTrans();
  49. try {
  50. MasterWorkerRetentionMoneyLog::create([
  51. 'sn' => generate_sn(MasterWorkerRetentionMoneyLog::class,'sn'),
  52. 'worker_id' => $params['worker_id'],
  53. 'action' => $params['action'],
  54. 'amount' => $params['amount'],
  55. 'work_id' => $params['work_id'],
  56. 'remark' => $params['remark'],
  57. ]);
  58. Db::commit();
  59. return true;
  60. } catch (\Exception $e) {
  61. Db::rollback();
  62. self::setError($e->getMessage());
  63. return false;
  64. }
  65. }
  66. }