Browse Source

加盟合伙人过期、定时赠送

gorden 4 months ago
parent
commit
1c8d6c11ef
2 changed files with 104 additions and 1 deletions
  1. 100 1
      app/admin/service/member/MemberService.php
  2. 4 0
      process/Task.php

+ 100 - 1
app/admin/service/member/MemberService.php

@@ -2020,4 +2020,103 @@ class MemberService
             Log::info("会员过期", ['member_id' => $member['member_id'], 'role_id' => $member['join_member_role_id']]);
         }
     }
-}
+
+    /**
+     * @Desc 加盟合伙人过期
+     * @Author Gorden
+     * @Date 2024/11/13 8:48
+     *
+     * @return void
+     */
+    public static function franchiseeExpired()
+    {
+        $members = Member::where('member_is_franchisee', 'Y')->get()->toArray();
+        foreach ($members as $member) {
+            $franchiseeJson = ['member_id' => $member['member_id']];
+            if (!empty($member['member_franchisee_json'])) {
+                $franchiseeJson = json_decode($member['member_franchisee_json'], true);
+            }
+            if (isset($franchiseeJson['duedate'])) {
+                $duedateUnix = strtotime($franchiseeJson['duedate'] . ' 23:59:59');
+                if ($duedateUnix > time()) {
+                    continue;
+                }
+            }
+
+            Member::where('member_id', $member['member_id'])->update(['member_is_franchisee' => 'N', 'member_franchisee_json' => '[]']);
+
+            _syslog("加盟合伙人过期", "取消身份", false, $franchiseeJson, 1001);
+
+            Log::info("会员【" . $member['member_id'] . '】加盟合伙人身份已过期', $franchiseeJson);
+        }
+    }
+
+    /**
+     * @Desc 加盟合伙人每年发20%
+     * @Author Gorden
+     * @Date 2024/11/13 9:16
+     *
+     * @return void
+     */
+    public static function franchiseeAdded()
+    {
+        try {
+            $members = Member::where('member_is_franchisee', 'Y')->get()->toArray();
+            foreach ($members as $member) {
+                $franchiseeJson = [];
+                if (!empty($member['member_franchisee_json'])) {
+                    $franchiseeJson = json_decode($member['member_franchisee_json'], true);
+                }
+                if (isset($franchiseeJson['datetime'])) {
+                    if (date('Ymd', strtotime($franchiseeJson['datetime'])) == date('Ymd')) {
+                        continue;
+                    }
+                }
+                if (isset($franchiseeJson['duedate'])) {
+                    $duedateUnix = strtotime($franchiseeJson['duedate']);
+                    $todayUnix = strtotime(date('Y-m-d'));
+                    if (in_array(($duedateUnix - $todayUnix) / (3600 * 24 * 365), [1, 2, 3, 4])) {
+                        $payDetail = PayDetail::where('join_pay_member_id', $member['member_id'])
+                            ->where('join_pay_order_id', 'FRANCHISEE')
+                            ->orderBy('pay_addtimes', 'DESC')
+                            ->first();
+                        if (date('Ymd') == date('Ymd', strtotime($payDetail->pay_addtimes))) {
+                            continue;
+                        }
+                        $payObjectJson = [];
+                        if (!empty($payDetail->join_pay_object_json)) {
+                            $payObjectJson = json_decode($payDetail->join_pay_object_json, true);
+                        }
+                        // 创建赠送记录
+                        PayDetail::insert([
+                            'join_pay_member_id' => $payDetail->join_pay_member_id,
+                            'join_pay_order_id' => $payDetail->join_pay_order_id,
+                            'join_pay_object_json' => $payDetail->join_pay_object_json,
+                            'pay_status' => $payDetail->pay_status,
+                            'pay_category' => $payDetail->pay_category,
+                            'pay_amount' => $payDetail->pay_amount,
+                            'pay_paytimes' => date('Y-m-d H:i:s'),
+                            'pay_prepayid' => $payDetail->pay_prepayid,
+                            'pay_addtimes' => time()
+                        ]);
+                        // 赠送加入账户余额
+                        $account = MemberAccount::where('join_account_member_id', $member['member_id'])
+                            ->where('member_account_classify', 'CASH')
+                            ->first();
+                        $account->member_account_income = $account->member_account_income + $payObjectJson['recharge_config']['nbr'];
+                        $account->member_account_surplus = $account->member_account_surplus + $payObjectJson['recharge_config']['nbr'];
+                        $account->save();
+
+                        Log::info("加盟合伙人赠送成功");
+
+                        _syslog("加盟合伙人", "赠送20%成功", false, ['member_id' => $member['member_id']], 1001);
+                    }
+                }
+            }
+        } catch (\Exception $e) {
+            Log::error("加盟合伙人赠送失败", ['member_id' => $member['member_id'], 'msg' => $e->getMessage()]);
+
+            _syslog("加盟合伙人", "赠送20%失败", false, ['member_id' => $member['member_id'], 'msg' => $e->getMessage()], 1001);
+        }
+    }
+}

+ 4 - 0
process/Task.php

@@ -43,6 +43,10 @@ class Task
             MemberService::referrerExpired();
             // 会员身份过期
             MemberService::roleExpired();
+            // 加盟合伙人过期
+            MemberService::franchiseeExpired();
+            // 加盟合伙人每年20%
+            MemberService::franchiseeAdded();
         });
 
         // 每天的2点执行,注意这里省略了秒位