repository = $repository; } /** * TODO * @return mixed * @author Qinii * @day 2020-06-16 */ public function lst() { [$page, $limit] = $this->getPage(); $where = $this->request->params(['status', 'keyword', 'date', 'extract_type', 'mer_id', 'mer_name', ['identity', '']]); // 导出 $is_excel = request()->param('is_excel', 0); if ($where['mer_id'] == '') { unset($where['mer_id']); } else if ($where['mer_id'] == 0) { $where['mer_id'] = ''; } $res = $this->repository->serach($where, $page, $limit); foreach ($res['list'] as $k => $v) { $res['list'][$k]['certification'] = Db::name('user_certification')->where('uid', $v['uid'])->find(); $res['list'][$k]['list'] = $this->repository->get_user_extract_item($v['extract_id']); $res['list'][$k]['bank_info_data'] = []; if ($v['bank_info']) { $res['list'][$k]['bank_info_data'] = json_decode($v['bank_info'], true); } } if ($is_excel == 1) { $data = $res['list']; $arr = []; foreach ($data as $item) { $arr[] = [ // ID $item['extract_id'], // 申请时间 $item['create_time'], // 手机号 $item['phone'], // 用户信息 $item['real_name'], // 提现金额 $item['extract_price'], // 综合服务费 $item['service_money'], // 实际到账金额 $item['extract_price'] - $item['service_money'], // 提现方式 $item['extract_type'] == 1 ? '微信' : ($item['extract_type'] == 2 ? '支付宝' : '银行卡'), // 所属银行 $item['bank_address'], // 账号 $item['bank_code'], ]; } return app('json')->success($this->getStatisticsExcel([ 'ID', '申请时间', '手机号', '用户信息', '提现金额', '综合服务费', '实际到账金额', '提现方式', '所属银行', '账号' ], $arr, '提现明细')); } return app('json')->success($res); } public function excel() { $where = $this->request->params(['status','keyword','date','extract_type','mer_id','mer_name',['identity', '']]); if($where['mer_id']==''){ unset($where['mer_id']); }else if($where['mer_id']==0){ $where['mer_id']=''; } $identity_desc = "用户提现"; if ($where['identity'] == 'mer') { $identity_desc = "商户提现"; } $res = $this->repository->serach($where,1, 10000000); $list = $res['list']; foreach ($list as $k => $v) { $temp = array( $v['extract_id'], $v['create_time'], $v['phone'], $v['real_name'], $v['extract_price'], $v['service_money'], $v['extract_price'] - $v['service_money'], ); if ($v['extract_type'] == 1) { $temp[] = '微信'; } if ($v['extract_type'] == 2) { $temp[] = '支付宝'; } if ($v['extract_type'] == 3) { $temp[] = '银行卡'; } $temp[] = $v['bank_address'] ?? ''; $temp[] = $v['bank_code'] ?? ''; if ($v['status'] == -1) { $temp[] = '未通过'; } if ($v['status'] == 0) { $temp[] = '审核中'; } if ($v['status'] == 1) { $temp[] = '已提现'; } $temp[] = $v['status_time'] ?? ''; $arr[] = $temp; } $header = [ 'ID', '申请时间', '手机号', '商户信息', '提现金额', '综合服务费', '实际到账', '提现方式', '所属银行', '账号', '审核状态', '处理时间' ]; $filename = $identity_desc . date('YmdHis') . '_' . rand(10000, 99999); $title = $identity_desc; $name = $identity_desc; $info = '生成时间:' . date('Y-m-d H:i:s', time()); $suffix = 'xlsx'; $path = 'extract'; unset($_instance); $_instance = SpreadsheetExcelService::instance_xin(); $_path = $_instance ->createOrActive() ->setExcelHeader($header) ->setExcelTile($title, $name, $info) ->setExcelContent($arr) ->excelSave($filename, $suffix, $path); $data = [ 'name' => $filename . '.' . $suffix, 'status' => 1, 'path' => '/' . $_path ]; return app('json')->success('ok', $data); } /** * TODO * @param $id * @return mixed * @author Qinii * @day 2020-06-16 */ public function switchStatus($id) { $data = $this->request->params(['status', 'fail_msg', 'mark']); if ($data['status'] == '-1' && empty($data['fail_msg'])) return app('json')->fail('请填写拒绝原因'); if (!$this->repository->getWhereCount($id)) return app('json')->fail('数据不存在或状态错误'); $data['admin_id'] = $this->request->adminId(); $data['status_time'] = date('Y-m-d H:i:s', time()); $extract_data = Db::name('user_extract')->where('extract_id', $id)->find(); if ($data['status'] != '-1') { // /** @var UserRepository $userRepository */ // $userRepository = app()->make(UserRepository::class); // $userEntity = $userRepository->getUserEntityByUid($extract_data['uid']); // if ($userEntity->getWithdrawalLimit() < $extract_data['extract_price']) { // return app('json')->fail('提现额度不足'); // } else { // try { // /** @var UserWithdrawalLimitRecordRepository $userWithdrawalLimitRecordRepository */ // $userWithdrawalLimitRecordRepository = app()->make(UserWithdrawalLimitRecordRepository::class); // // 添加扣减记录 // $userWithdrawalLimitRecordEntity = $userWithdrawalLimitRecordRepository->addUserWithdrawalLimitRecord( // (int)$userEntity->getUid(), // UserWithdrawalLimitRecordEnum::PM['EXPEND']['code'], // (float)$extract_data['extract_price'], // -1, // '', // '提现扣减提现额度' // ); // // 结算扣减记录 // $userWithdrawalLimitRecordRepository->executeByIdList([$userWithdrawalLimitRecordEntity->getId()]); // } catch (\Throwable $exception) { // return app('json')->fail($exception->getMessage()); // } // } if ($extract_data['extract_type'] == 1) { $res = $this->repository->WechatTransfers($id); if ($res['code'] == 201) { return app('json')->success('微信处理中,请稍后'); } } elseif ($extract_data['extract_type'] == 2) { $res = $this->repository->AliTransfers($id); } // if($res['code']!=200 && $extract_data['types']==1){ // Db::name('user_rich')->where('uid',$extract_data['uid'])->inc('red', $extract_data['extract_price'])->update(); // Db::name('user_rich_log')->insert([ // 'uid' => $extract_data['uid'], // 'red' => $extract_data['extract_price'], // 'pm' => 1, // 'time' => time(), // 'order_id' => 0, // 'mark' => '提现失败返还红积分' // ]); // return app('json')->fail(isset($res['msg'])?$res['msg']:'提现失败',$res); // } } else { if ($extract_data['withdrawal_type'] == 2) { Db::name('entropy_barter_bill')->where('order_no', $extract_data['order_sn'])->where('pm', 2)->update(['status' => 3, 'remarks' => '审核已拒绝']); $eb_bill = Db::name('entropy_barter_bill')->where('order_no', $extract_data['order_sn'])->where('pm', 2)->find(); Db::name('entropy_barter_user_' . $extract_data['mer_id'])->where('eb_id', $eb_bill['to_id'])->inc('wallet', $extract_data['extract_price'])->update(); } } $this->repository->switchStatus($id, $data); Db::name('user_extract')->where('extract_id', $id)->update($data); return app('json')->success('审核成功'); } public function new_lst() { [$page,$limit] = $this->getPage(); $where = $this->request->params(['status','keyword','date','extract_type','uid']); $res = $this->repository->new_search($where,$page,$limit); foreach ($res['list'] as $k=>$v){ $res['list'][$k]['certification']= Db::name('user_certification')->where('uid', $v['uid'])->find();; $res['list'][$k]['bank_info_data']=[]; $pay_info=''; if($v['bank_info']!=''){ $res['list'][$k]['bank_info_data']=json_decode($v['bank_info'],true); $pay_info=$res['list'][$k]['certification']['user_name'].' '; $pay_info.=$res['list'][$k]['certification']['user_card']." "; $pay_info.=$res['list'][$k]['bank_info_data']['bank_name'].' '; $pay_info.=$res['list'][$k]['bank_info_data']['bank_open_name'].' '; $pay_info.=$res['list'][$k]['bank_code']; } $res['list'][$k]['status_name']=''; if($v['status']=='0') $res['list'][$k]['status_name']='审核中'; if($v['status']=='1') $res['list'][$k]['status_name']='已打款'; if($v['status']=='-1') $res['list'][$k]['status_name']='已拒绝'; if($v['extract_type']=='3') $res['list'][$k]['extract_type_name']='银行卡'; if($v['status']=='0') $res['list'][$k]['status_time']=''; $res['list'][$k]['extract_price']=set_price_rtrim($v['extract_price']); $res['list'][$k]['service_money']=set_price_rtrim( $v['service_money']); $res['list'][$k]['money']=set_price_rtrim($v['extract_price'] - $v['service_money']); $res['list'][$k]['pay_info']=$pay_info; if($v['extract_type']=='4'){ $res['list'][$k]['status_name']='已完成'; $res['list'][$k]['pay_info']='人工减少-'.$v['mark']; } if(!$v['fail_msg'] || $v['fail_msg']==''){ $res['list'][$k]['fail_msg']='--'; } if(!$v['status_time'] || $v['status_time']==''){ $res['list'][$k]['status_time']='--'; } // $res['list'][$k]['list']=$this->repository->get_user_extract_item($v['extract_id']); } //查询用户可提现金额 $merid = $this->request->merId(); $merchant= Db::name('merchant')->where('mer_id', $merid)->find(); $user = Db::name('user')->where('uid', $merchant['uid'])->find(); $res['brokerage_price'] = $user['brokerage_price']; return app('json')->success($res); } public function getStatisticsExcel($header,$arr,$title) { $filename = $title.'_'.date('YmdHis').'_'.rand(10000,99999); $name = $filename; $info = '生成时间:' . date('Y-m-d H:i:s',time()); $suffix='xlsx'; $path='extract'; unset($_instance); $_instance = SpreadsheetExcelService::instance_xin(); $_path =$_instance ->createOrActive() ->setExcelHeader($header) ->setExcelTile($title, $name, $info) ->setExcelContent($arr) ->excelSave($filename, $suffix, $path); $domain = request()->domain(); $data= [ 'name' => $filename.'.'.$suffix, 'status' => 1, 'path' => $domain.'/'.$_path ]; return $data; } }