WithdrawIncomeApplyService.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Merlin
  5. * Date: 2020/10/9
  6. * Time: 16:25
  7. */
  8. namespace app\common\services\income;
  9. use app\common\events\withdraw\WithdrawRebutAuditEvent;
  10. use app\common\models\income\WithdrawIncomeApply;
  11. class WithdrawIncomeApplyService
  12. {
  13. const APPLY_AUDIT = 1;
  14. const APPLY_REBUT = 2;
  15. const APPLY_INVALID = -1;
  16. public static function insert($withdraw_model)
  17. {
  18. if (!$withdraw_model->type_id) {
  19. return true;
  20. }
  21. $income_ids = array_filter(explode(',',$withdraw_model->type_id));
  22. $data = [];
  23. foreach ($income_ids as $income_id) {
  24. $data[] = [
  25. 'uniacid' => \YunShop::app()->uniacid,
  26. 'member_id' => $withdraw_model->member_id,
  27. 'withdraw_id' => $withdraw_model->id,
  28. 'income_id' => $income_id,
  29. 'status' => 0,
  30. 'created_at' => time(),
  31. 'updated_at' => time(),
  32. ];
  33. }
  34. if (count($data) > 5000) {
  35. $listData = collect($data)->chunk(5000)->toArray();
  36. foreach ($listData as $item) {
  37. WithdrawIncomeApply::insert($item);
  38. }
  39. return true;
  40. } else {
  41. if (WithdrawIncomeApply::insert($data)) {
  42. return true;
  43. }
  44. }
  45. return false;
  46. }
  47. public static function apply($withdraw_model,$auditScene='')
  48. {
  49. $audit_ids = $withdraw_model->audit_ids;
  50. $rebut_ids = $withdraw_model->rebut_ids;
  51. $invalid_ids = $withdraw_model->invalid_ids;
  52. if (!empty($audit_ids)) {
  53. WithdrawIncomeApply::where('withdraw_id', $withdraw_model->id)->whereIn('income_id', $audit_ids)->update(['status' => self::APPLY_AUDIT]);
  54. }
  55. if (!empty($rebut_ids)) {
  56. WithdrawIncomeApply::where('withdraw_id', $withdraw_model->id)->whereIn('income_id', $rebut_ids)->update(['status' => self::APPLY_REBUT]);
  57. //审核场景为后台审核执行驳回事件
  58. if ($auditScene == 'backend') {
  59. event(new WithdrawRebutAuditEvent($withdraw_model,$rebut_ids));
  60. }
  61. }
  62. if (!empty($invalid_ids)) {
  63. WithdrawIncomeApply::where('withdraw_id', $withdraw_model->id)->whereIn('income_id', $invalid_ids)->update(['status' => self::APPLY_INVALID]);
  64. }
  65. return true;
  66. }
  67. public static function rebut($withdraw_model)
  68. {
  69. WithdrawIncomeApply::where('withdraw_id',$withdraw_model->id)->where('status',self::APPLY_AUDIT)->update(['status'=>self::APPLY_REBUT]);
  70. return true;
  71. }
  72. }