ChangeTypeLable(); $money_type = model('UserMoneyLog')->MoneyTypeLable(); $list = db::name('user_money_log')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('a.*,b.nick_name')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($list as $k => $v) { $list[$k]['user_nick_name'] = $v['uid'] . '-' . $v['nick_name']; $list[$k]['change_type'] = $change_type[$v['change_type']]; $list[$k]['money_type'] = $money_type[$v['money_type']]; } $data = []; $data['count'] = db::name('user_money_log')->alias('a')->join('yy_user b', 'a.uid = b.uid')->where($map)->count(); $data['list'] = $list; $totalRowData = db::name('user_money_log')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('count(a.log_id) as count,SUM(a.change_value) as change_value')->where($map)->find(); unset($totalRowData['count']); //dump($totalRowData); $data['totalRow'] = $totalRowData; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //用户充值订单 public function user_recharge($rid, $order_sn, $uid, $nick_name, $money, $pay_type, $pay_status, $start, $end, $order, $sort, $page = 1, $limit = 20) { $map = []; if (!empty($rid)) { $map[] = ['a.rid', '=', $rid]; } if (!empty($order_sn)) { $map[] = ['a.order_sn', 'like', '%' . $order_sn . '%']; } if (!empty($nick_name)) { $map[] = ['b.nick_name', 'like', '%' . $nick_name . '%']; } if (!empty($uid)) { $map[] = ['a.uid', '=', $uid]; } if (!empty($money)) { $map[] = ['a.money', '=', $money]; } if (!empty($pay_type)) { $map[] = ['a.pay_type', '=', $pay_type]; } if (!empty($pay_status)) { $map[] = ['a.pay_status', '=', $pay_status]; } if (!empty($start)) { $map[] = ['a.add_time', '>=', strtotime($start)]; } if (!empty($end)) { $map[] = ['a.add_time', '<=', strtotime($end)]; } $list = db::name('user_recharge')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('a.*,b.nick_name')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($list as $k => $v) { $list[$k]['user_nick_name'] = $v['uid'] . '-' . $v['nick_name']; } $data = []; $data['count'] = db::name('user_recharge')->alias('a')->join('yy_user b', 'a.uid = b.uid')->where($map)->count(); $data['list'] = $list; $data = []; $data['list'] = $list; $totalRowData = db::name('user_recharge')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('count(a.rid) as count,SUM(a.money) as money,SUM(a.integral) as integral')->where($map)->find(); $data['count'] = $totalRowData['count']; unset($totalRowData['count']); //dump($totalRowData); $data['totalRow'] = $totalRowData; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //用户提现订单 public function user_withdrawal($wid, $order_sn, $uid, $nick_name, $money, $alipay_name, $status, $alipay_account, $order, $sort, $page = 1, $limit = 20,$withdrawal_type=0,$bank_card_number="",$type,$deal_type) { $map = []; if (!empty($wid)) { $map[] = ['a.wid', '=', $wid]; } if (!empty($order_sn)) { $map[] = ['a.order_sn', 'like', '%' . $order_sn . '%']; } if (!empty($nick_name)) { $map[] = ['b.nick_name', 'like', '%' . $nick_name . '%']; } if (!empty($uid)) { $map[] = ['a.uid', '=', $uid]; } if (!empty($status)) { $map[] = ['a.status', '=', $status]; } if (!empty($money)) { $map[] = ['a.money', '=', $money]; } if (!empty($real_name)) { $map[] = ['a.real_name', '=', $alipay_name]; } if (!empty($alipay_account)) { $map[] = ['a.alipay_account', '=', $alipay_account]; } if(!empty($withdrawal_type)){ $map[] = ['a.withd_type', '=', $withdrawal_type]; } if(!empty($bank_card_number)){ $map[] = ['a.bank_card_number', '=', $bank_card_number]; } if(!empty($type)){ $map[] = ['a.type', '=', $type]; } if(!empty($deal_type)){ $map[] = ['a.deal_type', '=', $deal_type]; } $list = db::name('user_withdrawal')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('a.*,b.nick_name')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($list as $k => $v) { $list[$k]['user_nick_name'] = $v['uid'] . '-' . $v['nick_name']; } $data = []; $data['list'] = $list; $totalRowData = db::name('user_withdrawal')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('count(a.wid) as count,SUM(a.money) as money,SUM(a.general_money) as general_money')->where($map)->find(); $data['count'] = $totalRowData['count']; unset($totalRowData['count']); //dump($totalRowData); $data['totalRow'] = $totalRowData; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //获取提现申请详情 public function user_withdrawal_info($wid) { if (empty($wid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $user_withdrawal = db::name('user_withdrawal')->where(['wid' => $wid])->find(); return ['code' => 200, 'msg' => '获取成功', 'data' => $user_withdrawal]; } //修改提现申请 public function user_withdrawal_edit($wid, $status, $remarke, $deal_type) { if (empty($wid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $info = db::name('user_withdrawal')->where(['wid' => $wid])->find(); if (empty($info)) { return ['code' => 201, 'msg' => '信息不存在', 'data' => null]; } if ($info['status'] != 1) { return ['code' => 201, 'msg' => '该提现已处理', 'data' => null]; } // if($info['withd_type'] != 1){ // return ['code' => 201, 'msg' => '非支付宝提现!', 'data' => null]; // } //后台处理方式 1线下 2云账户 if(!in_array($deal_type,[1,2])){ return ['code' => 201, 'msg' => '处理方式非法!', 'data' => null]; } if($deal_type == 2){ //查询该用户云账户提现金额 $had_money = db::name('user_withdrawal')->where(['uid'=>$info['uid'],'deal_type'=>2,'status'=>6])->where('pay_time','month')->sum('general_money'); $max_month_money = 98000; if(($had_money+$info['general_money']) >= 98000){ return ['code' => 200, 'msg' => '单人单月云账户提现金额最大为98000元!', 'data' => null]; } } Db::startTrans(); try { $arr = []; $arr['status'] = $status; $arr['remarke'] = $remarke; $arr['deal_time'] = time(); $arr['update_time'] = time(); $arr['deal_type'] = $deal_type; $reslut = db::name('user_withdrawal')->where(['wid' => $wid])->update($arr); if (!$reslut) { Db::rollback(); return ['code' => 201, 'msg' => "处理失败", 'data' => null]; } if ($status == 3) { //提现驳回 $reslut=model('api/UserMessage')->send_message($info['uid'], 1, 0,'提现审核', '您的提现申请已被驳回,原因如下:' . $remarke); if ($reslut['code']!=200) { Db::rollback(); return ['code' => 201, 'msg' => "处理失败", 'data' => null]; } $reslut=model('admin/User')->change_user_money_by_uid($info['uid'], $info['money'], 1, 15, "余额提现驳回:" . $info['order_sn'], $info['uid'], $info['wid']); if ($reslut['code']!=200) { Db::rollback(); return ['code' => 201, 'msg' => "处理失败", 'data' => null]; } } // 提交事务 Db::commit(); return ['code' => 200, 'msg' => '处理成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 Db::rollback(); return ['code' => 201, 'msg' => '处理失败', 'data' => null]; } } //银行卡提现 public function user_withdrawal_edit_bank($wid, $status, $remarke,$withd_type,$transfer_type){ return ['code' => 201, 'msg' => '接口维护中!', 'data' => null]; //确认手续费资金 // $carry_money = model('api/HuiFu')->commission(); // if($carry_money['code'] != 200){ // return ['code' => 201, 'msg' => '账户异常!', 'data' => null]; // } // if($carry_money['data']['status'] != 'succeeded'){ // return ['code' => 201, 'msg' => '账户异常!', 'data' => null]; // } // $sxf_money = $carry_money['data']['acct_balance']; // if($sxf_money < 300){ // return ['code' => 201, 'msg' => '汇付手续费余额不足300元!', 'data' => null]; // } //模拟支付---确认金额是否正常 if($withd_type != 2){ return ['code' => 201, 'msg' => '该提现不是银行卡提现!', 'data' => null]; } if (empty($wid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $info = db::name('user_withdrawal')->where(['wid' => $wid])->find(); if (empty($info)) { return ['code' => 201, 'msg' => '信息不存在', 'data' => null]; } if ($info['status'] != 1) { return ['code' => 201, 'msg' => '该提现已处理', 'data' => null]; } if(!in_array($transfer_type,[1,2])){ return ['code' => 201, 'msg' => '提现方式有误!', 'data' => null]; } //检查账户是否正常 1:提现已通过 2:线上银行卡付款 3:提现人是 withd_type银行卡提现 if(($status==2) && ($transfer_type==2) && ($info['withd_type']==2) && ($withd_type==2)){ $order_sn = "HF_TEST" . date('YmdHis') . mt_rand(10000, 99999); $amount = "10.00"; $uid = 217072; $result = model('api/AdaPay')->create_order($order_sn, $amount, $uid); if($result['code'] != 200){ return ['code' => 201, 'msg' => '汇付支付账户异常!', 'data' => null]; } $pay_result = $result['result']; if(empty($pay_result['status']) || $pay_result['status'] != 'succeeded'){ return ['code' => 201, 'msg' => '汇付支付账户异常!', 'data' => null]; } } Db::startTrans(); try { $arr = []; $arr['status'] = $status; $arr['remarke'] = $remarke; $arr['deal_time'] = time(); $arr['update_time'] = time(); $arr['transfer_type'] = $transfer_type; $reslut = db::name('user_withdrawal')->where(['wid' => $wid])->update($arr); if (!$reslut) { Db::rollback(); return ['code' => 201, 'msg' => "处理失败", 'data' => null]; } if ($status == 3) { //提现驳回 $reslut=model('api/UserMessage')->send_message($info['uid'], 1, 0,'提现审核', '您的提现申请已被驳回,原因如下:' . $remarke); if ($reslut['code']!=200) { Db::rollback(); return ['code' => 201, 'msg' => "处理失败", 'data' => null]; } $reslut=model('admin/User')->change_user_money_by_uid($info['uid'], $info['money'], 1, 15, "余额提现驳回:" . $info['order_sn'], $info['uid'], $info['wid']); if ($reslut['code']!=200) { Db::rollback(); return ['code' => 201, 'msg' => "处理失败", 'data' => null]; } } //提现人信息 $user_withdrawal_info = db::name('user')->where(['uid' => $info['uid']])->find(); //提现已通过 检查是否绑定银行卡 if($status==2){ //线上银行卡付款 if($transfer_type==2){ //未绑定银行卡 if($user_withdrawal_info['is_bind_bank_card']==2){ Db::rollback(); return ['code' => 201, 'msg' => "该用户未绑定银行卡!", 'data' => null]; } //检测绑定人银行卡在汇 付是否绑定 $reslut = model('api/HuiFu')->check_member_card($info['uid']); if($reslut['code'] != 200){ return ['code' => 201, 'msg' =>$reslut['msg'] , 'data' => null]; } } } //1:提现已通过 2:线上银行卡付款 3:提现人是 withd_type银行卡提现 if(($status==2) && ($transfer_type==2) && ($info['withd_type']==2) && ($withd_type==2)){ //该用户已经创建身份认证 并且已经绑定银行卡 if(($user_withdrawal_info['is_bank_member_create']==2) || ($user_withdrawal_info['is_bank_member_create'] == 2)){ Db::rollback(); return ['code' => 201, 'msg' => "该用户不支持银行卡提现!", 'data' => null]; } //进行分账处理 $data = $this->fenzhang_del($wid, $info['uid']); if($data['code'] == 200){ Db::commit(); }else{ Db::rollback(); } return $data; } // 提交事务 Db::commit(); return ['code' => 200, 'msg' => '处理成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 Db::rollback(); return ['code' => 201, 'msg' => '处理失败', 'data' => null]; } } /** * 通过银行卡提现 * @param $wid * @param $status * @param $remarke */ public function fenzhang_del($wid,$uid){ if (empty($wid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $user_withdrawal = db::name('user_withdrawal')->where(['wid' => $wid])->find(); //提现对象不存在 if (empty($user_withdrawal)){ return false; } $carry_money1 = Db::name('user_recharge') //可供提现金额 ->where(['pay_status'=>2,'is_carray_finish'=>2]) //提现未结束 ->whereNotNull('payment_id') ->where('payment_id','<>','') ->sum('carry_money'); $carry_money = model('api/HuiFu')->commission_gd(); if($carry_money['code'] != 200){ return ['code' => 201, 'msg' => '账户异常!', 'data' => null]; } if($carry_money['data']['status'] != 'succeeded'){ return ['code' => 201, 'msg' => '账户异常!', 'data' => null]; } $carry_money = $carry_money['data']['acct_balance']; //获取可提现最小余额 if($carry_money1 < $carry_money){ $carry_money = $carry_money1; } if($carry_money < $user_withdrawal['general_money']){ return ['code' => 201, 'msg' => "410账户余额不足【请充值!】", 'data' => null]; } //当前未处理的资金 $shou_xu_fei = 3000; $freeze_carry_money = Db::name('bank_withd_money_log') ->where('is_del','=',2) // ->where('platform','=',2) ->sum('money'); $ke_tixian_carray_money = $carry_money - $freeze_carry_money - $shou_xu_fei; $general_money = $user_withdrawal['general_money']; //提现金额 if($general_money > $ke_tixian_carray_money){ return ['code' => 201, 'msg' => '额度不足,请等待上一笔提现完成!', 'data' => null]; } Db::name('bank_withd_money_log')->insert(['wid'=>$wid,'money'=>$general_money,'is_del'=>2,'add_time'=>time(),'update_time'=>time()]); // //可供提现额度 $redis = connectionRedis(); $redis->rPush('admin_tixain_ss1',$general_money.'-'.$uid.'-'.$wid); // //分账数据处理 // $result = $this->tixian_logic($general_money,$uid,$wid); return ['code' => 200, 'msg' => '操作成功!', 'data' => null]; } /** * 修正 */ public function tian_logic_queue(){ // set_time_limit(0); // ini_set ('memory_limit', '128M'); $redis = connectionRedis(); $data = $redis->lPop('admin_tixain_ss1'); if (!empty($data)) { $data = explode('-', $data); if (count($data) == 3) { $general_money = $data[0]; $uid = (int)$data[1]; $wid = (int)$data[2]; //进行资金提现 $reslut = $this->tixian_logic($general_money, $uid, $wid); } } } /** * 提现逻辑 * @param $general_money * @param $uid * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @throws \think\exception\PDOException */ public function tixian_logic($general_money,$uid,$wid){ // Db::startTrans(); $had_fenzhang_money = 0; $exec = true; for ($n=1;$n>=0;$n++){ $getDelCharge = Db::name('user_recharge') //可供提现金额 ->where(['pay_status'=>2,'is_carray_finish'=>2]) //提现未结束 已支付 ->where('carry_money','>',0) ->whereNotNull('payment_id') ->where('payment_id','<>','') //有支付对象id ->field('rid,carry_money,payment_id') //提现 ->order(['rid'=>'asc']) // ->page($n,10) ->page($n,10) ->select(); //查询不出来数据 跳出循环 if(empty($getDelCharge)){ //跳出循环 break; } foreach($getDelCharge as $v){ //计算剩余分账 $residue_fenzhang = $general_money-$had_fenzhang_money; if($residue_fenzhang <= 0){ $exec = false; break; } //剩余分账大于等于可分账金额 if($residue_fenzhang > $v['carry_money']){ //该笔账单进行一次性分账【执行三方分账】 $fenzhang_money = $v['carry_money']; // $data = $this->fenzhang_queren($fenzhang_money,$v['payment_id'],$uid); $data = model('api/HuiFu')->confirm_divide_accounts($v['payment_id'],$uid,$fenzhang_money); if($data['code'] ==200){ ////分账成功 ------分账成功一次性分账结束 $had_fenzhang_money += $v['carry_money']; Db::name('user_recharge') //可供提现金额 ->where(['rid'=>$v['rid']]) //提现未结束 已支付 ->update(['is_carray_finish'=>1,'carry_money'=>0]); // Log::write(['fenzhang_money'=>$fenzhang_money,'had_fenzhang_money'=>$had_fenzhang_money,'msg'=>'1'],'hui_carry_money_log'); Db::name('bank_withd_money_detail_log') ->insert([ 'wid'=>$wid, 'carry_recharge_id'=>$v['rid'], 'fen_money'=>$fenzhang_money, 'add_time'=>time(), 'update_time'=>time(), ]); }else{ //分账失败---进行标记 // Db::name('user_recharge') //可供提现金额 // ->where(['rid'=>$v['rid']]) //提现未结束 已支付 // ->update(['is_carray_finish'=>1,'carry_money'=>0]); //记录分账失败原因 $reason = [ 'recharge_id'=>$v['rid'], 'payment_id'=>$v['payment_id'], 'fenzhang_money'=>$fenzhang_money, 'reason'=>var_export($data, true), 'add_time'=>time(), 'update_time'=>time(), ]; Db::name('fenzhang_error_log') ->insert($reason); // Log::write(['data'=>$data],'hui_carry_money_log'); } }else{ //剩余分账小于可分账金额 if($residue_fenzhang <= $v['carry_money']){ //进行一次性分账 执行三方分账 $fenzhang_money = $residue_fenzhang; // $data = $this->fenzhang_queren($fenzhang_money,$v['payment_id'],$uid); $data = model('api/HuiFu')->confirm_divide_accounts($v['payment_id'],$uid,$fenzhang_money); $carry_money = ($v['carry_money']-$residue_fenzhang); if($carry_money>0){ $is_carray_finish = 2; }else{ $is_carray_finish = 1; } //分账结束 跳出循环 if($data['code'] ==200){ $had_fenzhang_money += $fenzhang_money; Db::name('user_recharge') //可供提现金额 ->where(['rid'=>$v['rid']]) //提现未结束 已支付 ->update(['is_carray_finish'=>$is_carray_finish,'carry_money'=>$carry_money]); Db::name('bank_withd_money_detail_log') ->insert([ 'wid'=>$wid, 'carry_recharge_id'=>$v['rid'], 'fen_money'=>$fenzhang_money, 'add_time'=>time(), 'update_time'=>time(), // 'platform'=>2 ]); // Log::write(['fenzhang_money'=>$fenzhang_money,'had_fenzhang_money'=>$had_fenzhang_money,'msg'=>'2'],'hui_carry_money_log'); $exec = false; break; }else{ $reason = [ 'recharge_id'=>$v['rid'], 'payment_id'=>$v['payment_id'], 'fenzhang_money'=>$fenzhang_money, 'reason'=>var_export($data, true), 'add_time'=>time(), 'update_time'=>time(), // 'platform'=>2 ]; Db::name('fenzhang_error_log') ->insert($reason); // Log::write($data,'hui_carry_money_log'); } } } } //分账结束标识 if(!$exec){ break; } } //本次提现进行解冻 Db::name('bank_withd_money_log')->where(['wid'=>$wid])->update(['is_del'=>1,'had_fenzhang_money'=>$had_fenzhang_money,'update_time'=>time()]); Db::name('user_withdrawal')->where(['wid' => $wid])->update(['had_fenzhang_money'=>$had_fenzhang_money]); // Db::commit(); return true; } /** * 金额分账 * @param $fenzhang_money * @param $payment_id * @param int $memberId * @return array */ // public function fenzhang_queren($fenzhang_money,$payment_id,$memberId=0){ // $paymentConfirm = new CreateConfirm(); // $fenzhang_money = del_coin_num($fenzhang_money,2); // $result = $paymentConfirm->payment_confirm($fenzhang_money,$payment_id,$memberId); // return $result; // } //获取兑换记录 列表 public function user_exchange($eid, $uid, $nick_name, $money, $integral, $order, $sort, $page = 1, $limit = 20) { $map = []; if (!empty($eid)) { $map[] = ['a.eid', '=', $eid]; } if (!empty($uid)) { $map[] = ['a.uid', '=', $uid]; } if (!empty($nick_name)) { $map[] = ['b.nick_name', 'like', '%' . $nick_name . '%']; } if (!empty($money)) { $map[] = ['a.money', '=', $money]; } if (!empty($integral)) { $map[] = ['a.integral', '=', $integral]; } $list = db::name('user_exchange')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('a.*,b.nick_name')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($list as $k => $v) { $list[$k]['user_nick_name'] = $v['uid'] . '-' . $v['nick_name']; } $data = []; $data['count'] = db::name('user_exchange')->alias('a')->join('yy_user b', 'a.uid = b.uid')->where($map)->count(); $data['list'] = $list; $totalRowData = db::name('user_exchange')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('count(a.eid) as count,SUM(a.money) as money,SUM(a.integral) as integral')->where($map)->find(); unset($totalRowData['count']); //dump($totalRowData); $data['totalRow'] = $totalRowData; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //获取用户赠送礼物记录 列表 public function user_send_gift($uid, $room_id, $room_uid, $receive_uid, $gid, $gift_name, $gift_from_type, $is_tester, $start, $end, $order, $sort, $page = 1, $limit = 20) { $map = []; if (!empty($uid)) { $map[] = ['a.uid', '=', $uid]; } if (!empty($room_id)) { $map[] = ['a.id', '=', $room_id]; } if (!empty($room_uid)) { $map[] = ['a.room_uid', '=', $room_uid]; } if (!empty($receive_uid)) { $map[] = ['a.receive_uid', '=', $receive_uid]; } if (!empty($gid)) { $map[] = ['a.gid', '=', $gid]; } if (!empty($gift_name)) { $map[] = ['b.gift_name', 'like', '%' . $gift_name . '%']; } if (!empty($gift_from_type)) { $map[] = ['a.gift_from_type', '=', $gift_from_type]; } if (!empty($is_tester)) { $map[] = ['a.is_tester', '=', $is_tester]; } if (!empty($start)) { $map[] = ['a.add_time', '>=', strtotime($start)]; } if (!empty($end)) { $map[] = ['a.add_time', '<=', strtotime($end)]; } if (empty($order)) { $order = 'a.sid'; } if (empty($sort)) { $sort = 'desc'; } $list = db::name('user_send_gift') ->alias('a')->join('yy_user b', 'a.uid = b.uid') ->alias('a')->join('yy_room c', 'a.rid = c.rid') ->field('a.*,b.nick_name,c.room_name')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($list as $k => $v) { $list[$k]['user_nick_name'] = $v['uid'] . '-' . $v['nick_name']; } $data = []; $data['list'] = $list; $totalRowData = db::name('user_send_gift')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('count(a.sid) as count,SUM(a.gift_num) as gift_num,SUM(a.gift_total_price) as gift_total_price,SUM(a.platform_profit) as platform_profit,SUM(a.receiver_profit) as receiver_profit,SUM(a.room_owner_profit) as room_owner_profit')->where($map)->find(); $data['count'] = $totalRowData['count']; unset($totalRowData['count']); //dump($totalRowData); $data['totalRow'] = $totalRowData; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //获取房间流水 列表 public function room_money_log($rid, $room_number, $room_name, $time1, $time2, $order, $sort, $page = 1, $limit = 20) { $map = []; if (!empty($rid)) { $map[] = ['a.rid', '=', $rid]; } if (!empty($room_number)) { $map[] = ['c.room_number', 'like', '%' . $room_number . '%']; } if (!empty($room_name)) { $map[] = ['c.room_name', 'like', '%' . $room_name . '%']; } if (!empty($time1)) { $time1 = strtotime($time1); $map[] = ['a.add_time', '>=', $time1]; } if (!empty($time2)) { $time2 = strtotime($time2); $map[] = ['a.add_time', '<=', $time2]; } $list = db::name('user_send_gift') ->alias('a')->join('yy_user b', 'a.uid = b.uid') ->join('yy_room c', 'a.rid = c.rid') ->field('a.*,b.nick_name,c.room_name,c.room_number')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($list as $k => $v) { $list[$k]['user_nick_name'] = $v['uid'] . '-' . $v['nick_name']; } $data = []; $data['list'] = $list; $totalRowData = db::name('user_send_gift')->alias('a')->join('yy_user b', 'a.uid = b.uid')->join('yy_room c', 'a.rid = c.rid')->field('count(a.sid) as count,SUM(a.gift_num) as gift_num,SUM(a.gift_total_price) as gift_total_price,SUM(a.platform_profit) as platform_profit,SUM(a.receiver_profit) as receiver_profit,SUM(a.room_owner_profit) as room_owner_profit')->where($map)->find(); $data['count'] = $totalRowData['count']; unset($totalRowData['count']); //dump($totalRowData); $data['totalRow'] = $totalRowData; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //获取房间流水 列表 public function room_account_log($rid, $room_number, $room_name, $time1, $time2, $order, $sort, $cate_id = 0, $page = 1, $limit = 20) { $map = []; if (!empty($rid)) { $map[] = ['a.rid', '=', $rid]; } if (!empty($room_number)) { $map[] = ['c.room_number', 'like', '%' . $room_number . '%']; } if (!empty($room_name)) { $map[] = ['c.room_name', 'like', '%' . $room_name . '%']; } if (!empty($time1)) { $time1 = strtotime($time1); $map[] = ['a.add_time', '>=', $time1]; } if (!empty($time2)) { $time2 = strtotime($time2); $map[] = ['a.add_time', '<=', $time2]; } if (!empty($cate_id)) { $map[] = ['c.cate_id', '=', $cate_id]; } $list = db::name('user_send_gift') ->alias('a') ->join('yy_room c', 'a.rid = c.rid') ->join('yy_room_category d', 'c.cate_id = d.cate_id') ->field('a.rid,c.room_name,c.room_number,c.cate_id,d.category_name,SUM(a.gift_total_price) as gift_total_price')->where($map) ->group('a.rid') ->order($order, $sort)->page($page, $limit)->select(); $data = []; $data['list'] = $list; $total = db::name('user_send_gift')->alias('a')->join('yy_room c', 'a.rid = c.rid') ->where($map)->group('a.rid')->count(); $data['count'] = $total; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //财务统计 public function financial_statistics($uid, $start, $end){ $map = []; $where = []; if(!empty($uid)){ $map[] = ['uid', '=', $uid]; $where[] = ['a.uid', '=', $uid]; } if (!empty($start)) { $map[] = ['add_time', '>=', strtotime($start)]; $where[] = ['a.add_time', '>=', strtotime($start)]; } if (!empty($end)) { $map[] = ['add_time', '<=', strtotime($end)]; $where[] = ['a.add_time', '<=', strtotime($end)]; } $list = []; //系统充值(金币) $admin_integral = db::name('user_money_log')->where($map)->where('change_type', 1)->where('money_type', 2)->sum('change_value'); $list[0]['title'] = '系统充值(金币)'; $list[0]['number'] = $admin_integral; //系统充值(钻石) $admin_money = db::name('user_money_log')->where($map)->where('change_type', 1)->where('money_type', 1)->sum('change_value'); $list[1]['title'] = '系统充值(钻石)'; $list[1]['number'] = $admin_money; //支付宝、微信充值(钻石) $user_pay_money = db::name('user_money_log')->where($map)->where('change_type', 9)->where('money_type', 2)->sum('change_value'); $list[2]['title'] = '三方支付充值(金币)'; $list[2]['number'] = $user_pay_money; //提现 $user_withdrawal = db::name('user_withdrawal')->where($map)->where('status', 2)->sum('money'); $list[3]['title'] = '提现'; $list[3]['number'] = $user_withdrawal; //流水分成(礼物) $user_gift_deduct = db::name('user_money_log')->where($map)->where('change_type', 6)->where('money_type', 1)->sum('change_value'); $list[4]['title'] = '流水分成(收礼物)'; $list[4]['number'] = $user_gift_deduct.' 钻石'; //流水分成(厅主) $owner_gift_deduct = db::name('user_money_log')->where($map)->where('change_type', 7)->where('money_type', 1)->sum('change_value'); $list[5]['title'] = '流水分成(厅主)'; $list[5]['number'] = $owner_gift_deduct.' 钻石'; //钻石 $money = db::name('user_money_log')->where($map)->where('money_type', 1)->sum('change_value'); $list[6]['title'] = '钻石'; $list[6]['number'] = $money; //金币 $integral = db::name('user_money_log')->where($map)->where('money_type', 2)->sum('change_value'); $list[7]['title'] = '金币'; $list[7]['number'] = $integral; //背包礼物 $where[] = ['a.num', '>', 0]; $where[] = ['a.is_tester', '=', 1]; $user_pack_gift = db::name('user_gift_pack')->alias('a')->join('yy_gift b', 'a.gid = b.gid')->field('SUM(a.num * b.gift_price) as total_pack_gift_price')->where($where)->find(); $list[8]['title'] = '背包礼物'; if(empty($user_pack_gift['total_pack_gift_price'])){ $user_pack_gift['total_pack_gift_price'] = 0; } $list[8]['number'] = $user_pack_gift['total_pack_gift_price'].' 金币'; $data = []; $data['list'] = $list; $data['count'] = 9; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } public function submit_yun($wid, $password) { if(md5(trim($password)) != secondary_password()) { return ['code' => 201, 'msg' => '密码错误', 'data' => null]; } if (empty($wid)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $info = db::name('user_withdrawal')->where(['wid' => $wid])->find(); if (empty($info)) { return ['code' => 201, 'msg' => '信息不存在', 'data' => null]; } if($info['new_type'] != 2){ return ['code' => 201, 'msg' => '该订单不支持云账户提现!', 'data' => null]; } if($info['deal_type'] != 2){ return ['code' => 201, 'msg' => '订单标记方式非云账户!', 'data' => null]; } if ($info['status'] != 2) { return ['code' => 201, 'msg' => '尚未提现成功!', 'data' => null]; } //查询该用户云账户提现金额 $had_money = db::name('user_withdrawal')->where(['uid'=>$info['uid'],'deal_type'=>2,'status'=>6])->where('pay_time','month')->sum('general_money'); $max_month_money = 98000; if(($had_money+$info['general_money']) >= 98000){ return ['code' => 200, 'msg' => '单人单月云账户提现金额最大为98000元!', 'data' => null]; } // 时间 小于 2023-09-23 16:43:38 不能进行提现 // if($info['add_time'] < 1695458618){ // return ['code' => 201, 'msg' => '该时间段不支持云账户提现!', 'data' => null]; // } $uid = $info['uid']; $user_info = Db::name('user')->where('uid', $uid)->find(); if (!$user_info) return ['code' => 201, 'msg' => '用户信息不存在', 'data' => null]; $phone = $user_info['user_name']; $real_name = $user_info['real_name']; $id_card = $user_info['card_id']; $order_id = $info['order_sn']; $order_amount = $info['general_money']; if ($info['type'] == 2) { $card_no = $user_info['bank_card_number']; if (empty($real_name) || empty($id_card) || empty($card_no)) { return ['code' => 201, 'msg' => '请先绑定银行卡或实名认证', 'data' => null]; } $yun_pay = new YunPay($order_id, $real_name, $id_card, $card_no, $order_amount, $phone); $result = $yun_pay->bank(); } elseif ($info['type'] == 1) { $card_no = $user_info['alipay_account']; if (empty($real_name) || empty($id_card) || empty($card_no)) { return ['code' => 201, 'msg' => '请先绑定支付宝或实名认证', 'data' => null]; } $yun_pay = new YunPay($order_id, $real_name, $id_card, $card_no, $order_amount, $phone); $result = $yun_pay->alipay(); } if ($result['code'] != 200) { return $result; } $result = db::name('user_withdrawal')->where(['wid' => $wid, 'status' => 2])->update(['status' => 4, 'update_time' => time(), 'submit_yun_time' => time()]); if($result) { return ['code' => 200, 'msg' => '提交成功', 'data' => null]; } return ['code' => 201, 'msg' => '提交失败', 'data' => null]; } }