| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- <?php
- /**
- * @package merchant
- *
- * @author Qinii
- * @day 2020-06-16
- *
- *
- */
- namespace app\controller\admin\user;
- use app\common\enum\CommonEnum;
- use app\common\enum\user\UserWithdrawalLimitRecordEnum;
- use app\common\repositories\user\UserRepository;
- use app\common\repositories\user\UserWithdrawalLimitRecordRepository;
- use crmeb\basic\BaseController;
- use crmeb\services\SpreadsheetExcelService;
- use think\App;
- use app\validate\api\UserExtractValidate as validate;
- use app\common\repositories\user\UserExtractRepository as repository;
- use think\facade\Db;
- class UserExtract extends BaseController
- {
- /**
- * @var repository
- */
- public $repository;
- /**
- * UserExtract constructor.
- * @param App $app
- * @param repository $repository
- */
- public function __construct(App $app,repository $repository)
- {
- parent::__construct($app);
- $this->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;
- }
- }
|