123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?php
- namespace app\index\controller;
- use think\Controller;
- use think\Db;
- class Plantask extends Controller
- {
-
- 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;
- }
- echo $date.'开始'.$wallet['user_id'];
-
- $list = $this->get_my_down_list($wallet);
- $down_uids = array_column($list,'user_id');
-
- $list2 = $this->get_my_downdown_list($down_uids,$wallet);
- $down_down_uids = array_column($list2,'user_id');
-
- $tuandui_ids = array_merge($down_uids,$down_down_uids);
- $tuandui_ids[] = $wallet['user_id'];
-
- $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;
- $yongjin = bcdiv(bcmul($tuanduizongyeji,$bili,2),100,2);
- Db::startTrans();
- if($yongjin > 0){
- $rs_wallet = model('wallet')->lockChangeAccountRemain($wallet['user_id'],'intromoney',$yongjin,'111',$remark='团队返佣,总业绩'.$tuanduizongyeji);
- if($rs_wallet['status'] === false){
- Db::rollback();
- echo '发放失败'.$wallet['user_id'];
- exit;
- }
- }
-
- $rs1 = Db::name('user_wallet')->where('user_id',$wallet['user_id'])->update(['last_jiesuan_date' => $date]);
- if($rs1 === false){
- Db::rollback();
- echo '更新失败'.$wallet['user_id'];
- exit;
- }
- Db::commit();
- echo '结束'.$wallet['user_id'];
- }
-
- private function get_my_down_list($wallet){
- $chuju = config('site.intro_chuju_min_money');
-
- $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)
- ->select();
- return !empty($list) ? $list : [];
- }
-
- 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');
- }
- if(empty($down_uids)){
- return [];
- }
- $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)
- ->where('uw.intro_level','elt',$wallet['intro_level'])
- ->where('uw.intro_level <= intro.intro_level')
- ->select();
- return !empty($list2) ? $list2 : [];
- }
- }
|