Forráskód Böngészése

计划任务,发放团队总业绩

lizhen_gitee 2 hónapja
szülő
commit
42553d27c9
2 módosított fájl, 77 hozzáadás és 215 törlés
  1. 7 7
      addons/cos/config.php
  2. 70 208
      application/index/controller/Plantask.php

+ 7 - 7
addons/cos/config.php

@@ -6,7 +6,7 @@ return [
         'title' => 'AppID',
         'type' => 'string',
         'content' => [],
-        'value' => '1304634122',
+        'value' => '1334054494',
         'rule' => 'required',
         'msg' => '',
         'tip' => '请前往腾讯控制台 > 访问管理 > API密钥',
@@ -18,7 +18,7 @@ return [
         'title' => 'SecretId',
         'type' => 'string',
         'content' => [],
-        'value' => 'AKIDcCsNhsulSzNbefXqFi8ORI4jEYgdQ1Rk',
+        'value' => 'AKIDb7Wr22qV1RmGiGnEamsBSZUFqHuX5Zr3',
         'rule' => 'required',
         'msg' => '',
         'tip' => '请前往腾讯控制台 > 访问管理 > API密钥',
@@ -30,7 +30,7 @@ return [
         'title' => 'SecretKey',
         'type' => 'string',
         'content' => [],
-        'value' => 'dCb3PbbS7bvADB3pEi9WqDZosocJp694',
+        'value' => 'GJ9mYYn4ZxIZijbN4jL8ynfSE2qbOBuc',
         'rule' => 'required',
         'msg' => '',
         'tip' => '请前往腾讯控制台 > 访问管理 > API密钥',
@@ -42,7 +42,7 @@ return [
         'title' => '存储桶名称',
         'type' => 'string',
         'content' => [],
-        'value' => 'jiankangyijia-1304634122',
+        'value' => 'shuijiao-1334054494',
         'rule' => 'required;bucket',
         'msg' => '',
         'tip' => '存储空间名称',
@@ -96,7 +96,7 @@ return [
         'title' => '上传接口地址',
         'type' => 'string',
         'content' => [],
-        'value' => 'https://jiankangyijia-1304634122.cos.ap-nanjing.myqcloud.com',
+        'value' => 'https://shuijiao-1334054494.cos.ap-nanjing.myqcloud.com',
         'rule' => 'required;uploadurl',
         'msg' => '',
         'tip' => '请输入你的上传接口地址',
@@ -108,7 +108,7 @@ return [
         'title' => 'CDN地址',
         'type' => 'string',
         'content' => [],
-        'value' => 'https://jiankangyijia-1304634122.cos.ap-nanjing.myqcloud.com',
+        'value' => 'https://shuijiao-1334054494.cos.ap-nanjing.myqcloud.com',
         'rule' => 'required;cdnurl',
         'msg' => '',
         'tip' => '请配置你的CDN地址或在存储桶基础配置中获取',
@@ -144,7 +144,7 @@ return [
         'title' => '最大可上传',
         'type' => 'string',
         'content' => [],
-        'value' => '1100M',
+        'value' => '50M',
         'rule' => 'required',
         'msg' => '',
         'tip' => '',

+ 70 - 208
application/index/controller/Plantask.php

@@ -4,247 +4,109 @@ namespace app\index\controller;
 
 use think\Controller;
 use think\Db;
-use think\Cache;
-use app\common\model\Wenzhenorder;
 
 class Plantask extends Controller
 {
-    //未支付订单,下单N分钟后,自动取消
-    public function auto_cancel_nopay_order(){
-        $nowtime  = time();
-        $second   = config('site.nopay_order_autocancel_minute') * 60;
-        $lasttime = $nowtime - $second;
-
-        //dump(datetime($lasttime));exit;
-        $rs = Db::name('wenzhen_order')->where('status',0)->where('createtime','lt',$lasttime)->update([
-            'status'        => 3,
-            'cancel_time'   => $nowtime,
-            'cancel_reason' => '超时未支付',
-            'finish_time'   => $nowtime,
-        ]);
-        echo $rs;
-
-    }
-
-    //待接诊订单,医生不操作,支付N分钟后,自动退诊,即时视频订单除外
-    public function auto_tuizhen_noaccept_order(){
-        $nowtime  = time();
-        $second   = config('site.payorder_noaccept_autotuizhen_minute') * 60;
-        $lasttime = $nowtime - $second;
-
-        //dump(datetime($lasttime));exit;
-        Db::startTrans();
-
-        $wenzhen_order = Db::name('wenzhen_order')->where('status',10)->where('video_model','NEQ',2)->where('pay_time','lt',$lasttime)->order('id asc')->lock(true)->find();
-        if(empty($order_list)){
-            Db::rollback();
-            echo 'empty';
+    //每月初自动结算上个月的业绩
+    public function auto_yeji(){
+        $date = date('Ym').'01';
+
+        //找一个没结算的
+        $wallet = Db::name('user_wallet')->where('last_jiesuan_date','lt',$date)->order('id asc')->find();
+        if(empty($wallet)){
+            echo $date.'没有了';
             exit;
         }
 
-        $order_id = $wenzhen_order['id'];
+        echo $date.'开始'.$wallet['user_id'];
 
-        //修改订单
-        $update = [
-            'status'        => 16,
-            'cancel_time'   => $nowtime,
-            'cancel_reason' => '超时未接诊',
-            'finish_time'   => $nowtime,
-        ];
+        //直推
+        $list = $this->get_my_down_list($wallet);
+        $down_uids = array_column($list,'user_id');
 
-        //余额支付的直接退款
-        if($wenzhen_order['comefrom'] == 1){
-        if($wenzhen_order['pay_type'] == 'wallet'){
+        //间推
+        $list2 = $this->get_my_downdown_list($down_uids,$wallet);
+        $down_down_uids = array_column($list2,'user_id');
 
-            //用户加钱
-            $logtype = $wenzhen_order['ordertype'] == 1 ? 13 : 14;
-            $rs_wallet = model('wallet')->lockChangeAccountRemain($wenzhen_order['user_id'],'money',$wenzhen_order['total_fee'],$logtype,$remark='超时未接诊','wenzhen_order',$order_id);
-            if($rs_wallet['status'] === false){
-                Db::rollback();
-                echo $rs_wallet['msg'];
-                exit;
-            }
+        //团队ids
+        $tuandui_ids = array_merge($down_uids,$down_down_uids);
 
-            //订单退款参数
-            $update['refund_price']  = $wenzhen_order['total_fee'];
-            $update['refund_status'] = 3;
-        }elseif($wenzhen_order['pay_type'] == 'wechat' || $wenzhen_order['pay_type'] == 'alipay'){
-            $update['refund_status'] = 1; //待退款
-
-            //发起退款
-            $Wenzhenorder_model = new Wenzhenorder;
-            $refund_rs = $Wenzhenorder_model->old_refund($wenzhen_order,$wenzhen_order['total_fee']);
-            if($refund_rs === true){
-                $update['refund_status'] = 3; //退款完成
-            }
-        }
-        }
+        $tuandui_ids[] = $wallet['user_id'];
 
-        $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->update($update);
-        if(!$update_rs){
-            Db::rollback();
-            echo '退诊失败';
-            exit;
-        }
-
-
-        Db::commit();
-        echo '退诊成功'.$order_id.'结束';
-        exit;
+        //团队总业绩
+        $tuanduizongyeji = Db::name('pay_order')
+            ->where('user_id','IN',$tuandui_ids)
+            ->where('table_name','money_recharge')
+            ->where('order_status',1)
+            ->whereTime('createtime','month')
+            ->sum('order_amount');
 
+        //我所在等级的比例
+        $bili = Db::name('intro_level_config')->where('id',$wallet['intro_level'])->value('intro_bili');
+        $bili = $bili ?: 0;
 
-    }
-
-    //app视频订单,已拨打,通话N分钟后,自动结束
-    public function auto_finish_firstvideo_videoorder(){
-        $nowtime  = time();
-        $second   = config('site.firstvideo_videoorder_autofinish_minute') * 60;
-        $lasttime = $nowtime - $second;
+        $yongjin = bcdiv(bcmul($tuanduizongyeji,$bili,2),100,2);
 
-        $list = Db::name('wenzhen_order')->where('status',25)->where('ordertype',2)->where('comefrom',1)->where('video_time','lt',$lasttime)->limit(10)->select();
-
-        if(empty($list)){
-            echo 'empty';exit;
-        }
-
-        foreach($list as $key => $order){
-            echo $order['id'].':'.$this->finish($order['id']);
-        }
-    }
-
-    //TV视频订单,已拨打,通话N分钟后,自动结束
-    public function auto_finish_firstvideo_videoorder_tv(){
-        $nowtime  = time();
-        $second   = config('site.tv_firstvideo_videoorder_autofinish_minute') * 60;
-        $lasttime = $nowtime - $second;
-
-        $list = Db::name('wenzhen_order')->where('status',25)->where('ordertype',2)->where('comefrom',2)->where('video_time','lt',$lasttime)->limit(10)->select();
-
-        if(empty($list)){
-            echo 'empty';exit;
-        }
-
-        foreach($list as $key => $order){
-            echo $order['id'].':'.$this->finish($order['id']);
-        }
-    }
-
-    //图文订单,已接诊,接诊N分钟后,自动结束
-    public function auto_finish_accept_textorder(){
-        $nowtime  = time();
-        $second   = config('site.accept_textorder_autofinish_minute') * 60;
-        $lasttime = $nowtime - $second;
-
-        $list = Db::name('wenzhen_order')->where('status',20)->where('ordertype',1)->where('accept_time','lt',$lasttime)->limit(10)->select();
-        if(empty($list)){
-            echo 'empty';exit;
-        }
-
-        foreach($list as $key => $order){
-            echo $order['id'].':'.$this->finish($order['id']);
-        }
-    }
-
-    public function finish($order_id){
-
-        //订单详情
         Db::startTrans();
-        $wenzhen_order = Db::name('wenzhen_order')->where('id',$order_id)->lock(true)->find();
-        if(empty($wenzhen_order)){
-            Db::rollback();
-            //$this->error('不存在的订单');
-            return '不存在的订单';
-        }
-
-        if($wenzhen_order['ordertype'] == 1){
-            if($wenzhen_order['status'] != 20){
-                Db::rollback();
-                //$this->error('已接诊订单才能完成');
-                return '已接诊订单才能完成';
-            }
-
-            $old_status = 20;
-        }
-        if($wenzhen_order['ordertype'] == 2){
-            if($wenzhen_order['status'] != 25){
-                Db::rollback();
-                //$this->error('尚未发起视频,不能结束');
-                return '尚未发起视频,不能结束';
-            }
-
-            $old_status = 25;
-        }
-
-        //修改订单
-        $nowtime = time();
-        $update = [
-            'status' => 30,
-            'finish_time' => $nowtime,
-        ];
-
-        //给医生结算钱
-        $logtype = $wenzhen_order['ordertype'] == 1 ? 111 : 112;
-        if($wenzhen_order['comefrom'] == 1 && $wenzhen_order['total_fee'] > 0){
-            $rs_wallet = model('walletdoctor')->lockChangeAccountRemain($wenzhen_order['doctor_id'],'money',$wenzhen_order['total_fee'],$logtype,$remark='问诊订单','wenzhen_order',$order_id);
+        if($yongjin > 0){
+            $rs_wallet = model('wallet')->lockChangeAccountRemain($wallet['user_id'],'intromoney',$yongjin,'111',$remark='团队返佣,总业绩'.$tuanduizongyeji);
             if($rs_wallet['status'] === false){
                 Db::rollback();
-                //$this->error($rs_wallet['msg']);
-                return $rs_wallet['msg'];
+                echo '发放失败'.$wallet['user_id'];
+                exit;
             }
         }
 
-        //订单状态
-        $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->where('status',$old_status)->update($update);
-        if(!$update_rs){
+        //结算完成
+        $rs1 = Db::name('user_wallet')->where('user_id',$wallet['user_id'])->update(['last_jiesuan_date' => $date]);
+        if($rs1 === false){
             Db::rollback();
-            //$this->error('操作失败');
-            return '操作失败';
+            echo '更新失败'.$wallet['user_id'];
+            exit;
         }
 
-        //医生接诊量
-        Db::name('doctor')->where('id',$wenzhen_order['doctor_id'])->setInc('ordernum');
-
         Db::commit();
-
-        //发送im消息给用户,让他不能再输入
-        /*if($wenzhen_order['ordertype'] == 1){
-            $tenim = new Tenim();
-            $message = [
-                'businessID' => 'order_status_doctor_type',
-                'name' => '',
-                'status' => '30',
-                'id' => (string)$order_id,
-                'content' => '',
-            ];
-            $rs = $tenim->sendCustomMessageToUser('user'.$wenzhen_order['user_id'],'doctor'.$wenzhen_order['doctor_id'],$message);
-        }*/
-
-
-        //$this->success('操作成功');
-        return '操作成功';
+        echo '结束'.$wallet['user_id'];
     }
 
-/////////////////////////////////////////////////////////////////////////
+    //获取我的直推
+    private function get_my_down_list($wallet){
+        $chuju = config('site.intro_chuju_min_money');
 
-    //定时跑用户活跃,改成离线
-    public function auto_user_active(){
-        $actitime = time() - 7200;
+        //直推,下级,入金,等级比我低,未出局
+        $list = Db::name('user_wallet')->alias('uw')
+            ->field('uw.user_id,uw.money,uw.intro_level,uw.intro_uid')
+            ->where('uw.intro_uid',$wallet['user_id'])          //我邀请的
+            ->where('uw.intro_level','neq','-1')             //入金了
+            ->where('uw.intro_level','elt',$wallet['intro_level'])   //等级比我低
+            ->where('uw.money','egt',$chuju)   //金额小于500,出局
+            ->select();
 
-        $sql = 'update `mt_user` set is_active = 0 where is_active = 1 and id in (select user_id from mt_user_active where requesttime < '.$actitime.')';
-        db()->query($sql);
+        return !empty($list) ? $list : [];
     }
 
-    //vip过期的,三个隐私设置改成0
-    //vip过期的,更新用户表is_vip
-    public function auto_vipend(){
-//        $sql = 'update `mt_user_power` set yinsi = 0,yinshen = 0,wuhen = 0 where user_id in (select user_id from mt_user_wallet where vip_endtime > 0 and vip_endtime < '.time().')';
-//        db()->query($sql);
+    //获取我的间推
+    private function get_my_downdown_list($down_uids = false,$wallet){
+        if($down_uids === false){
+            $list = $this->get_my_down_list($wallet);
+            $down_uids = array_column($list,'user_id');
+        }
 
-        /*$sql2 = 'update `mt_user` set is_vip = 0 where is_vip = 1 and user_id in (select user_id from mt_user_wallet where vip_endtime > 0 and vip_endtime < '.time().')';
-        db()->query($sql2);*/
-    }
+        $chuju = config('site.intro_chuju_min_money');
 
+        //间推,下下级,入金,未出局,等级比我低,等级比自己的上级低
+        $list2 = Db::name('user_wallet')->alias('uw')
+            ->field('uw.user_id,uw.money,uw.intro_level,uw.intro_uid')
+            ->join('user_wallet intro','uw.intro_uid = intro.user_id','LEFT')  //加这里,就是防止:下下级当中,虽然都比我低,但是有可能高于自己的上级(也就是我的直推)
+            ->whereIN('uw.intro_uid',$down_uids)  //下下级
+            ->where('uw.intro_level','neq','-1')             //入金了
+            ->where('uw.money','egt',$chuju)   //金额小于500,出局
+            ->where('uw.intro_level','elt',$wallet['intro_level'])   //等级比我低
+            ->where('uw.intro_level <= intro.intro_level')   //加这里,就是防止:下下级当中,虽然都比我低,但是有可能高于自己的上级(也就是我的直推)
+            ->select();
 
+        return !empty($list2) ? $list2 : [];
+    }
 
 
 }