WithdrawIncomeDeductionService.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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\models\income\WithdrawIncomeDeductionLove;
  10. use Yunshop\Love\Common\Services\LoveChangeService;
  11. class WithdrawIncomeDeductionService
  12. {
  13. public static function insert($withdraw_model,$need_deduction_love_data = [],$deductionLove = 0)
  14. {
  15. if (!$withdraw_model->type_id) {
  16. return true;
  17. }
  18. $income_ids = array_filter(explode(',',$withdraw_model->type_id));
  19. $deductionData = [];
  20. if ($need_deduction_love_data && $deductionLove) {
  21. foreach ($income_ids as $income_id) {
  22. $deductionData[] = [
  23. 'uniacid' => \YunShop::app()->uniacid,
  24. 'member_id' => $withdraw_model->member_id,
  25. 'withdraw_id' => $withdraw_model->id,
  26. 'income_id' => $income_id,
  27. 'status' => 1,//已扣除
  28. 'created_at' => time(),
  29. 'updated_at' => time(),
  30. 'need_deduction_love_rate' => $need_deduction_love_data['rate'],
  31. 'need_deduction_love_type' => $need_deduction_love_data['love_sign']
  32. ];
  33. }
  34. if ($deductionData) {
  35. //扣除爱心值
  36. (new LoveChangeService($need_deduction_love_data['love_sign']))->withdrawIncomeDeduction([
  37. 'member_id' => $withdraw_model->member_id,
  38. 'change_value' => $deductionLove,
  39. 'operator' => 0,
  40. 'operator_id' => 0,
  41. 'remark' => '收入提现扣除' . $deductionLove,
  42. 'relation' => ''
  43. ]);
  44. if (count($deductionData) > 5000) {
  45. $listDeductionData = collect($deductionData)->chunk(5000)->toArray();
  46. foreach ($listDeductionData as $item) {
  47. WithdrawIncomeDeductionLove::insert($item);
  48. }
  49. return true;
  50. } else {
  51. if (WithdrawIncomeDeductionLove::insert($deductionData)) {
  52. return true;
  53. }
  54. }
  55. }
  56. }
  57. return false;
  58. }
  59. }