123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <?php
- namespace app\event\order;
- use app\model\Member;
- use app\model\MemberAccount;
- use app\model\MemberAccountList;
- use app\model\Order;
- use app\model\SysConfig;
- use support\Db;
- use support\exception\BusinessException;
- use support\Log;
- class CommissionEvent
- {
- public function order($params)
- {
- Log::info("计算消费提成",$params);
- Db::beginTransaction();
- try {
- $order = Order::where('order_id', $params['orderId'])->where('order_status_payment', 'SUCCESS')->first();
-
- if (!empty($params['join_invite_member_id'])) {
- $inviteMemberId = $params['join_invite_member_id'];
- } else {
-
- $member = Member::where('member_id', $order->join_order_member_id)->first();
- if (empty($member->join_invite_member_id)) {
- throw new BusinessException("没有直属上级");
- }
- $inviteMemberId = $member->join_invite_member_id;
- }
-
- $memberUp = Member::where('member_id', $inviteMemberId)->first();
- if ($memberUp->member_is_partner == 'Y') {
- $identity = 'PARTNER';
-
- $config = SysConfig::where('config_key', 'app-identity-partner-config')->first();
- } elseif ($memberUp->member_is_referrer == 'Y') {
- $identity = 'REFERRER';
-
- $config = SysConfig::where('config_key', 'app-identity-referrer-config')->first();
- }else{
- throw new BusinessException("直属上级非合伙人或者推荐官");
- }
- $configParams = json_decode($config->config_value_json, true);
-
- $accountListJson = [
- 'line' => 'relate-consum',
- 'amount' => $order->order_amount_pay,
- 'identity' => $identity,
- 'order_id' => $order->order_id,
- 'master_member_id' => $order->join_order_member_id
- ];
- Log::info("提成参数",$accountListJson);
-
- $this->commissionToMember($inviteMemberId, $accountListJson, round($configParams['commission']['relate-consum'] * $order->order_amount_pay, 2), '消费');
- Db::commit();
- _syslog("提成", "计算提成成功");
- } catch (BusinessException $e) {
- Db::rollBack();
- Log::error("计算消费提成异常",['msg'=>$e->getMessage()]);
- _syslog("提成", "计算提成失败:" . $e->getMessage());
- } catch (\Exception $e) {
- Db::rollBack();
- Log::error("计算消费提成异常",['msg'=>$e->getMessage()]);
- _syslog("提成", "计算提成失败");
- }
- }
-
- private function commissionToMember($memberId, $accountListJson, $money, $accountListCategory)
- {
- try {
- $account = MemberAccount::where('join_account_member_id', $memberId)->where('member_account_classify', 'CASH')->first();
- $account->member_account_income = $account->member_account_income + $money;
- $account->member_account_surplus = $account->member_account_surplus + $money;
- $account->save();
- MemberAccountList::insert([
- 'join_list_member_account_nbr' => $memberId . '-CASH',
- 'join_member_account_list_member_id' => $memberId,
- 'member_account_list_status' => 'ACTIVED',
- 'member_account_list_attr' => 'IN',
- 'member_account_list_classify' => $accountListJson['identity'],
- 'member_account_list_category' => $accountListCategory,
- 'member_account_list_datetime' => date('Y-m-d H:i:s'),
- 'member_account_list_amount' => $money,
- 'member_account_list_json' => json_encode($accountListJson),
- 'member_account_list_addtimes' => time()
- ]);
- }catch (\Exception $e){
- Log::error("提成入账失败",['msg'=>$e->getMessage()]);
- }
- }
- }
|