lizhen_gitee vor 8 Monaten
Ursprung
Commit
d0f5d3a9fa
2 geänderte Dateien mit 108 neuen und 15 gelöschten Zeilen
  1. 107 15
      application/api/controller/Notify.php
  2. 1 0
      application/extra/wallet.php

+ 107 - 15
application/api/controller/Notify.php

@@ -41,11 +41,7 @@ class Notify extends Api
             exit;
         }
         //你可以在此编写订单逻辑
-//        $rs = $this->gold_notify_do($out_trade_no);
-        $args = json_decode($info['args'], true);
-        $rechargeM = new \app\common\model\Recharge();
-        $rs = $rechargeM->goldpaysucc($out_trade_no, $args,1);
-
+        $rs = $this->gold_notify_do($out_trade_no);
 
         if($rs === false){
             //不论结果都应返回success
@@ -78,13 +74,103 @@ class Notify extends Api
         }
 
         //逻辑开始
+        $remark = $orderInfo['payment_class'] == 'alipay' ? '支付宝' : '微信';
         $args = json_decode($orderInfo['args'],true);
-        $result = model('Wallet')->lockChangeAccountRemain($orderInfo['user_id'],'gold',$args['gold'],10, '金币充值','pay_order',$orderInfo['id']);
+        $result = model('Wallet')->lockChangeAccountRemain($orderInfo['user_id'],0,'gold',$args['gold'],10, $remark.'金币充值','pay_order',$orderInfo['id'],1);
         if($result['status']===false)
         {
             Db::rollback();
             return false;
         }
+        //若有上级,给上级返利
+        if ($args['intro_uid']) {
+            //获取返利比率
+
+            $type = 1;
+            if ($type == 1){
+                $intro_recharge_rebate_rate = 10;
+            }else{
+                $is_agent = Db::name('user')->where(['id' => $args['intro_uid']])->value('is_agent');
+                $intro_recharge_rebate_rate = $is_agent ? (int)config('site.h_intro_recharge_rebate_rate') : (int)config('site.intro_recharge_rebate_rate');
+            }
+
+            if ($intro_recharge_rebate_rate > 0 && $intro_recharge_rebate_rate <= 100) {
+                //上级获得金额数量
+                $intro_uid_money = bcdiv(bcmul($args['money'],$intro_recharge_rebate_rate,2),100,2);
+                if ($intro_uid_money > 0) {
+                    $intro_result = model('wallet')->lockChangeAccountRemain($args['intro_uid'],$args['user_id'],'money',$intro_uid_money,65,'邀请人充值奖励:'.$orderId,'pay_order',$order['id']);
+                    if($intro_result['status']===false)
+                    {
+                        Db::rollback();
+                        return false;
+                    }
+                }
+            }
+        }
+
+        //首充
+        $first_map = [
+            'uid' => $args['user_id'],
+        ];
+        $first_check = Db::name('user_paygold_log')->where($first_map)->find();
+        if(empty($first_check)){
+
+            //首充日志
+            $first_map['createtime'] = time();
+            $first_log_id = Db::name('user_paygold_log')->insertGetId($first_map);
+            if(!$first_log_id){
+                Db::rollback();
+                return false;
+            }
+            //送金币
+            if(isset($args['first_gold']) && $args['first_gold'] > 0){
+                $result = model('Wallet')->lockChangeAccountRemain($args['user_id'],0,'gold',$args['first_gold'],14, $remark . '金币充值:'.$orderId,'pay_order',$order['id']);
+                if($result['status']===false)
+                {
+                    Db::rollback();
+                    return false;
+                }
+            }
+            //送vip
+            if(isset($args['first_vipdays']) && $args['first_vipdays'] > 0){
+                $user_info = Db::name('user_wallet')->where('user_id',$args['user_id'])->lock(true)->find();
+                if($user_info['vip_endtime'] < time()){
+                    //过期了
+                    $vip_endtime = time() + (intval($args['first_vipdays']) * 86400);
+                }else{
+                    //追加vip
+                    $vip_endtime = $user_info['vip_endtime'] + (intval($args['first_vipdays']) * 86400);
+                }
+                $result = Db::name('user_wallet')->where('user_id',$args['user_id'])->update(['vip_endtime'=>$vip_endtime]);
+                if($result === false)
+                {
+                    Db::rollback();
+                    return false;
+                }
+            }
+
+        }
+
+        //vip用户充值额外送金币
+        if(isset($args['vip_gold']) && $args['vip_gold'] > 0){
+            $result = model('Wallet')->lockChangeAccountRemain($args['user_id'],0,'gold',$args['vip_gold'],101, $remark . '金币充值赠送','pay_order',$order['id']);
+            if($result['status']===false)
+            {
+                Db::rollback();
+                return false;
+            }
+        }
+
+        //用户充值额外送钻石
+        if(isset($args['jewel']) && $args['jewel'] > 0){
+            $result = model('Wallet')->lockChangeAccountRemain($args['user_id'],0,'jewel',$args['jewel'],35, $remark . '金币充值赠送','pay_order',$order['id']);
+            if($result['status']===false)
+            {
+                Db::rollback();
+                return false;
+            }
+        }
+
         //逻辑结束
 
         //状态
@@ -129,10 +215,7 @@ class Notify extends Api
             exit;
         }
         //你可以在此编写订单逻辑
-//        $rs = $this->vip_notify_do($out_trade_no);
-        $args = json_decode($info['args'], true);
-        $rechargeM = new \app\common\model\Recharge();
-        $rs = $rechargeM->vippaysucc($out_trade_no, $args);
+        $rs = $this->vip_notify_do($out_trade_no);
 
         if($rs === false){
             //不论结果都应返回success
@@ -179,8 +262,15 @@ class Notify extends Api
         }
         $update_data = [
             'vip_endtime'=>$vip_endtime,
+            'vip_level'  =>$args['vip_level'], //修改等级,同级不影响,向上立刻改,向下不允许
+            'pay_money' => bcadd($user_info['pay_money'], $args['money'], 2)  //pay_money第2处修改,$args['money']是vip配置表的人民币价格
         ];
         $result = Db::name('user_wallet')->where('user_id',$orderInfo['user_id'])->update($update_data);
+        if($result === false)
+        {
+            Db::rollback();
+            return false;
+        }
 
         //记录日志
         $log_data = [
@@ -194,13 +284,15 @@ class Notify extends Api
         ];
         Db::name('user_vip_log')->insertGetId($log_data);
 
-        if($result === false)
-        {
-            Db::rollback();
-            return false;
+        if ($args['gold_num'] > 0) {
+            //赠送金币
+            $wallet_rs = model('wallet')->lockChangeAccountRemain($orderInfo['user_id'], 0,'gold', $args['gold_num'], 17, '开通会员赠送金币');
+            if ($wallet_rs['status'] === false) {
+                Db::rollback();
+                return false;
+            }
         }
 
-
         //逻辑结束
 
         //状态

+ 1 - 0
application/extra/wallet.php

@@ -24,6 +24,7 @@ return [
 
 
         33 => '聊天赠送礼物',//jewel 减少
+        35 => '充值金币赠送',//jewel 增加
         36 => '钻石转赠',//jewel 减少
         37 => '钻石获赠',//jewel 增加
         39 => '动态赠送礼物',//jewel 减少