EngineerBillLogic.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | likeadmin快速开发前后端分离管理后台(PHP版)
  4. // +----------------------------------------------------------------------
  5. // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
  6. // | 开源版本可自由商用,可去除界面版权logo
  7. // | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
  8. // | github下载:https://github.com/likeshop-github/likeadmin
  9. // | 访问官网:https://www.likeadmin.cn
  10. // | likeadmin团队 版权所有 拥有最终解释权
  11. // +----------------------------------------------------------------------
  12. // | author: likeadminTeam
  13. // +----------------------------------------------------------------------
  14. namespace app\adminapi\logic\master_worker;
  15. use app\common\enum\worker\WorkerAccountLogEnum;
  16. use app\common\logic\WorkerAccountLogLogic;
  17. use app\common\model\finance\MasterWorkerCaseOutLog;
  18. use app\common\model\financial\FinancialPaymentRecords;
  19. use app\common\model\financial\MasterSettlementDetails;
  20. use app\common\model\master_worker\EngineerSettlement;
  21. use app\common\logic\BaseLogic;
  22. use app\common\model\master_worker\MasterWorker;
  23. use think\facade\Db;
  24. /**
  25. * EngineerSettlement逻辑
  26. * Class EngineerSettlementLogic
  27. * @package app\adminapi\logic
  28. */
  29. class EngineerBillLogic extends BaseLogic
  30. {
  31. public static function submitForm($params)
  32. {
  33. Db::startTrans();
  34. try {
  35. if(!empty($params['left_amount']) && !empty($params['user_money']) && !((float)$params['left_amount'] > (float)$params['user_money'])){
  36. $batch_number = 'bn' . date('YmdHis') . rand(1000, 9999);
  37. $params['deadline_time'] = $deadline_time = strtotime($params['deadline_time'])+86400;
  38. FinancialPaymentRecords::create([
  39. 'export_conditions' => $params,
  40. 'batch_number' => $batch_number,
  41. 'upload_status' => 1,
  42. 'payment_status' => 1,
  43. ]);
  44. MasterSettlementDetails::where('master_worker_id',$params['id'])
  45. ->where('change_time', '<', $deadline_time)
  46. ->where('status', '=', 1)
  47. ->update([
  48. 'status' => 2,
  49. 'batch_number' => $batch_number,
  50. ]);
  51. $insertXlsData = [];
  52. $insertXlsData[0] = [
  53. 'master_worker_id' => $params['id'],
  54. 'worker_number' => $params['worker_number'],
  55. 'engineer_name' => $params['account_holder'],
  56. 'bank_account' => $params['bank_account'],
  57. 'bank_name' => $params['bank_name'],
  58. 'opening_branch' => $params['opening_branch'],
  59. 'original_balance' => $params['user_money'],
  60. 'total_settlement_amount' => $params['left_amount'],
  61. 'payment_status' => 0,
  62. 'is_export' => 1,
  63. 'batch_number'=> $batch_number,
  64. 'create_time'=> time(),
  65. 'update_time'=> time(),
  66. 'admin_id'=> 0,
  67. 'is_deduction'=> 0,
  68. ];
  69. // 生成 可发 数据表格
  70. Db::name('engineer_settlement')->insertAll($insertXlsData);
  71. $analogData = [];
  72. $analogData[0] = [
  73. 'master_worker_id' => $params['id'],
  74. 'worker_number' => $params['worker_number'],
  75. 'engineer_name' => $params['account_holder'],
  76. 'bank_account' => $params['bank_account'],
  77. 'bank_name' => $params['bank_name'],
  78. 'opening_branch' => $params['opening_branch'],
  79. 'original_balance' => $params['user_money'],
  80. 'total_settlement_amount' => $params['left_amount'],
  81. 'batch_number'=> $batch_number,
  82. 'deduction_amount' => $params['deduction_amount'],
  83. 'deduction_describe' => $params['deduction_describe'],
  84. 'final_settlement_amount' => $params['final_settlement_amount'],
  85. 'settlement_time' => $params['settlement_time'],
  86. 'settlement_details_remarks' => $params['settlement_details_remarks'],
  87. ];
  88. $resData = EngineerSettlementLogic::engineerSettlementValidate($analogData);
  89. if(is_array($resData)){
  90. $result = EngineerSettlementLogic::add($resData,$params['adminId']);
  91. if ($result === false){
  92. throw new \Exception(EngineerSettlementLogic::getError());
  93. }
  94. }
  95. }else{
  96. throw new \Exception('打款失败');
  97. }
  98. Db::commit();
  99. return true;
  100. } catch (\Exception $e) {
  101. Db::rollback();
  102. self::setError($e->getMessage());
  103. return false;
  104. }
  105. }
  106. }