You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			244 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			244 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?php
 | 
						|
namespace wstmart\common\model;
 | 
						|
use think\Db;
 | 
						|
class Ectwallet extends Base{
 | 
						|
    protected $table = 'hyh_user_ectwallet';
 | 
						|
     /**
 | 
						|
      * 获取地址列表
 | 
						|
      */
 | 
						|
      public function listQuery($uId=0){
 | 
						|
        $userId = ((int)$uId==0)?(int)session('WST_USER.userId'):$uId;
 | 
						|
        $where = ['userId'=>(int)$userId,'dataFlag'=>1];
 | 
						|
        $rs = $this->order('isDefault desc, eWalletId desc')->where($where)->select();
 | 
						|
        return $rs;
 | 
						|
      }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 新增
 | 
						|
     */
 | 
						|
    public function add($uId=0){
 | 
						|
        $data = input('post.');
 | 
						|
        unset($data['eWalletId']);
 | 
						|
        $data['userId'] = ((int)$uId==0)?(int)session('WST_USER.userId'):$uId;
 | 
						|
        $data['createTime'] = time();
 | 
						|
        if($data['userId']==0)return WSTReturn('新增失败,请先登录');
 | 
						|
        $result = $this->validate('EctWallet.add')->allowField(true)->save($data);
 | 
						|
        if(false !== $result){
 | 
						|
            if((int)input('post.isDefault')==1){
 | 
						|
                $this->where("eWalletId != $this->eWalletId and userId=".$data['userId'])->setField('isDefault',0);
 | 
						|
            }
 | 
						|
            return WSTReturn('新增成功',1,['eWalletId'=>$this->eWalletId]);
 | 
						|
        }else{
 | 
						|
            return WSTReturn($this->getError(),-1);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * [infoById 根据钱包地址id 获取钱包地址信息]
 | 
						|
     * @param  [type] $eWalletId [钱包地址id]
 | 
						|
     * @return [type]     [description]
 | 
						|
     */
 | 
						|
    public function infoById($eWalletId){
 | 
						|
        $where['eWalletId'] = (int)($eWalletId);
 | 
						|
        $data = Db::name('user_ectwallet')->where($where)->field('eWalletId,eAddress')->find();
 | 
						|
        if(!empty($data))return $data;      
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 编辑
 | 
						|
     */
 | 
						|
    public function edit($uId=0){
 | 
						|
        $userId = ((int)$uId==0)?(int)session('WST_USER.userId'):$uId;
 | 
						|
        $id = (int)input('post.eWalletId/d');
 | 
						|
        $data = input('post.');
 | 
						|
        $result = $this->validate('EctWallet.edit')->allowField(true)->save($data,['eWalletId'=>$id,'userId'=>$userId]);
 | 
						|
        //修改默认地址
 | 
						|
        if((int)input('post.isDefault')==1)
 | 
						|
          $this->where("eWalletId != $id and userId=".$userId)->setField('isDefault',0);
 | 
						|
        if(false !== $result){
 | 
						|
            return WSTReturn("编辑成功", 1);
 | 
						|
        }else{
 | 
						|
            return WSTReturn($this->getError(),-1);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 删除
 | 
						|
     */
 | 
						|
    public function del($uId=0){
 | 
						|
        $userId = ((int)$uId==0)?(int)session('WST_USER.userId'):$uId;
 | 
						|
        $id = input('post.eWalletId/d');
 | 
						|
        $data = [];
 | 
						|
        $data['dataFlag'] = -1;
 | 
						|
        $result = $this->update($data,['eWalletId'=>$id,'userId'=>$userId]);
 | 
						|
        if(false !== $result){
 | 
						|
            return WSTReturn("删除成功", 1);
 | 
						|
        }else{
 | 
						|
            return WSTReturn($this->getError(),-1);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    /**
 | 
						|
    * 设置为默认地址
 | 
						|
    */
 | 
						|
    public function setDefault($uId=0){
 | 
						|
        $userId = ((int)$uId==0)?(int)session('WST_USER.userId'):$uId;
 | 
						|
        $id = (int)input('post.eWalletId');
 | 
						|
        $this->where(["eWalletId"=>['<>',$id],'userId'=>$userId] )->setField('isDefault',0);
 | 
						|
        $rs = $this->where("eWalletId = $id and userId=".$userId)->setField('isDefault',1);
 | 
						|
        if(false !== $rs){
 | 
						|
            return WSTReturn("设置成功", 1);
 | 
						|
        }else{
 | 
						|
            return WSTReturn($this->getError(),-1);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 获取默认地址
 | 
						|
     */
 | 
						|
    public function getDefaultAddress($uId=0){
 | 
						|
    	$userId = ((int)$uId==0)?(int)session('WST_USER.userId'):$uId;
 | 
						|
    	$where = ['userId'=>$userId,'dataFlag'=>1,'isDefault'=>1];
 | 
						|
        $rs = Db::name('user_ectwallet')->where($where)->field('eWalletId,eAddress')->find();
 | 
						|
        if(empty($rs))return '';
 | 
						|
         return $rs;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 获取ect数目
 | 
						|
     */
 | 
						|
    public function getEctAddress($uId=0){
 | 
						|
        $userId = ((int)($uId==0))?(int)session('WST_USER.userId'):$uId;
 | 
						|
        $address = cache('USER_BLOCK_ADDRESS_'.$userId);
 | 
						|
        if(!$address){      
 | 
						|
            $where = ['userId'=>$userId];    
 | 
						|
            $address= Db::name('block_user_ect_address')->where($where)->value('address');
 | 
						|
            if($address){                
 | 
						|
                cache('USER_BLOCK_ADDRESS_'.$userId,$address,0);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return WSTReturn('',1,['userId'=>$userId,'address'=>$address]);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 获取ect数目
 | 
						|
     */
 | 
						|
    public function getEctNum($uId=0){
 | 
						|
        $userId = ((int)($uId==0))?(int)session('WST_USER.userId'):$uId;
 | 
						|
        $where = ['userId'=>$userId];
 | 
						|
        $num = Db::name('users')->where($where)->value('userECT');
 | 
						|
        return $num;
 | 
						|
    }   
 | 
						|
    /**
 | 
						|
     * 获取ect充值记录
 | 
						|
     */
 | 
						|
    public function getEctRechargeLog($uId=0){
 | 
						|
        $userId = ((int)($uId==0))?(int)session('WST_USER.userId'):$uId;
 | 
						|
        if($userId==0) return WSTReturn('请先登录','-999');
 | 
						|
        $where = ['userId'=>$userId];
 | 
						|
        $rs['list'] = Db::name('block_user_ect_recharge_log')->where($where)->order('id desc')->field('status,value,createTime')->paginate(10)->toArray();
 | 
						|
        $rs['address'] = '';
 | 
						|
        $cacheData = cache('USER_BLOCK_ADDRESS_'.$userId);
 | 
						|
        if($cacheData){
 | 
						|
            $rs['address'] = $cacheData;
 | 
						|
        }else{
 | 
						|
            $address= Db::name('block_user_ect_address')->where($where)->value('address');
 | 
						|
            if($address){
 | 
						|
                $rs['address'] = $address;
 | 
						|
                cache('USER_BLOCK_ADDRESS_'.$userId,$address,0);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return $rs;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 获取ect提现记录
 | 
						|
     */
 | 
						|
    public function getUserEctCashLog($uId=0){
 | 
						|
        $userId = ((int)($uId==0))?(int)session('WST_USER.userId'):$uId;
 | 
						|
        if($userId==0) return WSTReturn('请先登录','-999');
 | 
						|
        $where = ['userId'=>$userId];
 | 
						|
        $rs['list'] = Db::name('user_ect_cash_log')->where($where)->order('id desc')->field('status,ectNum,toAccount,createTime')->paginate(10)->toArray();        
 | 
						|
        return $rs;
 | 
						|
    }
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * 获取ect变更记录
 | 
						|
     */
 | 
						|
    public function getEctLog($uId=0){
 | 
						|
        $userId = ((int)($uId==0))?(int)session('WST_USER.userId'):$uId;
 | 
						|
        $where = ['userId'=>$userId];
 | 
						|
        $rs = Db::name('user_ect_log')->where($where)->order('createTime desc')->paginate(10)->toArray();
 | 
						|
        return $rs;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 提现
 | 
						|
     */
 | 
						|
    public function withdraw($uId=0){
 | 
						|
        //return WSTReturn('系统调试中,请稍候重试',-1);
 | 
						|
        $userId = ((int)($uId==0))?(int)session('WST_USER.userId'):$uId; 
 | 
						|
        if($userId==0)return WSTReturn('请先登录','-999');
 | 
						|
        //获取提现ect数量
 | 
						|
        $ectNum = abs((float)input('post.ectNum'));
 | 
						|
        //获取支付密码
 | 
						|
        $payPwd = input('post.payPwd');
 | 
						|
        //获取钱包地址
 | 
						|
        $eAddress = trim(input('post.eAddress'));
 | 
						|
        $where = ['userId'=>$userId,'eAddress'=>$eAddress];
 | 
						|
        $exist = $this->where($where)->find();
 | 
						|
        if(empty($exist))return WSTReturn('地址不正确',-1);
 | 
						|
        if($payPwd=='')return WSTReturn('密码不能为空');
 | 
						|
        $user = model('users')->get($userId);
 | 
						|
        //获取用户ECT数量
 | 
						|
        $userECT = (float)$user->userECT;
 | 
						|
        if($ectNum<500)return WSTReturn('ECT数量最低提取500',-1); 
 | 
						|
        //与用户ect数量作比较
 | 
						|
        if($userECT<$ectNum)return WSTReturn('ECT数量不足',-1); 
 | 
						|
        //与数据库支付密码作比较
 | 
						|
        if(md5($payPwd.$user->loginSecret) !=$user->payPwd)return WSTReturn('支付密码错误',-1);
 | 
						|
        $fp = fopen("cash.lock", "r");
 | 
						|
        if(flock($fp,LOCK_EX | LOCK_NB)) {//if(flock($fp,LOCK_EX))阻塞(等待)模式
 | 
						|
            // if(Db::table('rd_user_give_coin')->where(['user_id'=>$user->hyhlm_id])->find() || Db::table('rd_user_give_car_coin')->where(['user_id'=>$user->hyhlm_id])->find()){  
 | 
						|
            //     flock($fp,LOCK_UN);
 | 
						|
            //     fclose($fp);
 | 
						|
            //     return WSTReturn('系统调试中,请稍候重试',-1); 
 | 
						|
            // }
 | 
						|
            // if($user->userType == 0){
 | 
						|
            //     flock($fp,LOCK_UN);
 | 
						|
            //     fclose($fp);
 | 
						|
            //     return WSTReturn('系统调试中,请稍候重试',-1); 
 | 
						|
            // }
 | 
						|
            $dataSrc = 4;
 | 
						|
            $remark ="提现";
 | 
						|
            $ectType = 2;      
 | 
						|
            $update =array('userECT'=>['exp','userECT-'.$ectNum]);
 | 
						|
            Db::startTrans();
 | 
						|
            try {
 | 
						|
                $rs = ectLog($userId,$ectNum,$dataSrc,$remark,$update,$ectType);
 | 
						|
                $cash_id = $this->ectCashLog($userId,$ectNum,$eAddress,'');
 | 
						|
                if($rs && $cash_id){
 | 
						|
                    flock($fp,LOCK_UN);
 | 
						|
                    fclose($fp);
 | 
						|
                    Db::commit();
 | 
						|
                    return WSTReturn('提现成功,预计审核次日到账(节假日顺延),请耐心等待!',-1);
 | 
						|
                   // return WSTReturn('提现成功',1,['id'=>$cash_id]);
 | 
						|
                }else{                    
 | 
						|
                    Db::rollback();errLog($e);
 | 
						|
                    flock($fp,LOCK_UN);
 | 
						|
                    fclose($fp);
 | 
						|
                    return WSTReturn('提现失败,请重试!',-1);
 | 
						|
                }
 | 
						|
            } catch (Exception $e) {
 | 
						|
                Db::rollback();errLog($e);
 | 
						|
                return WSTReturn('提现失败,请重试',-1);
 | 
						|
            }
 | 
						|
        }else{
 | 
						|
            fclose($fp);
 | 
						|
            return WSTReturn('系统繁忙,请稍后再试');              
 | 
						|
        }
 | 
						|
    }
 | 
						|
    function ectCashLog($userId,$ectNum,$toAccount,$remark=''){
 | 
						|
        $data['userId']         = $userId;
 | 
						|
        $data['ectNum']         = $ectNum;
 | 
						|
        $data['toAccount']      = $toAccount;
 | 
						|
        $data['dataRemarks']    = $remark;
 | 
						|
        $data['createTime']     = time(); 
 | 
						|
        // $disabled_ids = [888,1843,15,892,1359,2150];
 | 
						|
        // if(in_array($userId,$disabled_ids)){
 | 
						|
        //     $data['status']    = 2;
 | 
						|
        // }
 | 
						|
        return Db::name('user_ect_cash_log')->insertGetid($data);
 | 
						|
    }
 | 
						|
} |