CommissionService.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace app\admin\service\order;
  3. use app\admin\service\member\MemberService;
  4. use app\model\Member;
  5. use app\model\MemberAccount;
  6. use app\model\MemberAccountList;
  7. use support\Log;
  8. class CommissionService
  9. {
  10. public static function commission($config, $memberId, $orderId, $amount, $accountListCategory)
  11. {
  12. Log::info("开始处理提成", ['config' => $config, 'member_id' => $memberId, 'amount' => $amount]);
  13. try {
  14. $member = Member::where('member_id', $memberId)->first();
  15. if (!empty($member->join_invite_member_id)) {
  16. $member1 = Member::where('member_id', $member->join_invite_member_id)->first();
  17. if (!empty($member1->join_invite_member_id)) {
  18. $member2 = Member::where('member_id', $member1->join_invite_member_id)->first();
  19. }
  20. }
  21. // 提成记录JSON
  22. $accountListJson = [
  23. 'line' => 'relate-consum',
  24. 'amount' => $amount,
  25. 'order_id' => $orderId,
  26. 'master_member_id' => $memberId
  27. ];
  28. // 直属提成
  29. if (!empty($member1) && ($member1->member_is_partner == 'Y' || $member1->member_is_referrer == 'Y')) {
  30. $accountListJson['identity'] = MemberService::getIdentity($member1->member_is_partner, $member1->member_is_referrer);
  31. $member1CommissionAmount = $config['commission']['direct'] * $amount;
  32. self::commissionToMember($member1->member_id, $accountListJson, $member1CommissionAmount, $accountListCategory);
  33. }
  34. // 间属提成
  35. if (!empty($member2) && ($member2->member_is_partner == 'Y' || $member2->member_is_referrer == 'Y')) {
  36. $accountListJson['identity'] = MemberService::getIdentity($member2->member_is_partner, $member2->member_is_referrer);
  37. $member2CommissionAmount = $config['commission']['direct'] * $amount;
  38. self::commissionToMember($member2->member_id, $accountListJson, $member2CommissionAmount, $accountListCategory);
  39. }
  40. } catch (\Exception $e) {
  41. }
  42. }
  43. /**
  44. * @Desc 提成到账户
  45. * @Author Gorden
  46. * @Date 2024/9/25 15:14
  47. *
  48. * @param $memberId
  49. * @param $accountListJson
  50. * @param $money
  51. * @return void
  52. */
  53. private static function commissionToMember($memberId, $accountListJson, $money, $accountListCategory)
  54. {
  55. $account = MemberAccount::where('join_account_member_id', $memberId)->where('member_account_classify', 'CASH')->first();
  56. $account->member_account_income = $account->member_account_income + $money;
  57. $account->member_account_surplus = $account->member_account_surplus + $money;
  58. $account->save();
  59. MemberAccountList::insert([
  60. 'join_list_member_account_nbr' => $memberId . '-CASH',
  61. 'join_member_account_list_member_id' => $memberId,
  62. 'member_account_list_status' => 'ACTIVED',
  63. 'member_account_list_attr' => 'IN',
  64. 'member_account_list_classify' => $accountListJson['identity'],
  65. 'member_account_list_category' => $accountListCategory,
  66. 'member_account_list_datetime' => date('Y-m-d H:i:s'),
  67. 'member_account_list_amount' => $money,
  68. 'member_account_list_json' => json_encode($accountListJson),
  69. 'member_account_list_addtimes' => time()
  70. ]);
  71. }
  72. }