CirculationForm.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace App\Module\Fund\Admin\Actions;
  3. use App\Module\Fund\AdminControllers\Helper\FormHelper;
  4. use App\Module\Fund\Enums\FUND_TYPE;
  5. use App\Module\Fund\Models\FundModel;
  6. use App\Module\Fund\Services\AccountService;
  7. use App\Module\Fund\Services\FundService;
  8. use Dcat\Admin\Contracts\LazyRenderable;
  9. use Dcat\Admin\Traits\LazyWidget;
  10. use UCore\DcatAdmin\Widgets\Form;
  11. use function request;
  12. use Illuminate\Support\Facades\DB;
  13. /**
  14. * 订单推送,单页面版本
  15. *
  16. */
  17. class CirculationForm extends Form implements LazyRenderable
  18. {
  19. use LazyWidget;
  20. public function run($input)
  21. {
  22. // 验证 start
  23. $id = request('id');
  24. // dd($input);
  25. $user_id = $input['user_id'];
  26. $fund_id = $input['fund_id'];
  27. $to_fund_id = $input['to_fund_id'];
  28. $acc = $input['acc'];
  29. $remark = $input['remark'];
  30. DB::beginTransaction();
  31. $fund= new FundService($user_id,(int)$fund_id);
  32. $res = $fund->circulation(FUND_TYPE::tryFrom($to_fund_id), $acc ,0,'admin', $remark);
  33. if($res){
  34. DB::commit();
  35. return $this->_success('ok');
  36. }
  37. DB::rollBack();
  38. return $this->_error('error');
  39. }
  40. public function form()
  41. {
  42. $id = request('id');
  43. $funddata = FundModel::query()->find($id);
  44. // dump($funddata);
  45. // 备注, 目标账户,钱数
  46. $help = new FormHelper($this, $this);
  47. $help->hidden('id')->value($funddata->id);
  48. $help->hidden('user_id')->value($funddata->user_id);
  49. $help->hidden('fund_id')->value($funddata->fund_id);
  50. $help->text('remark')->value("流转原因:");
  51. $help->display("balance")->value($funddata->balance/1000);
  52. $index = AccountService::getFundsDesc();
  53. unset($index[$funddata->fund_id->value()]);
  54. $help->radio('to_fund_id',$index)->required();
  55. $help->number("acc")->value(1)->max($funddata->balance/1000);
  56. }
  57. }