Browse Source

社区站点提现

master
lanzu_qsy 5 years ago
parent
commit
c77c4c9eda
  1. 1
      app/Admin/Common/Auth.php
  2. 45
      app/Admin/Common/WxPay.php
  3. 1
      app/Admin/Controllers/LanzuCsInfoController.php
  4. 55
      app/Admin/Controllers/LanzuCsWithdrawController.php
  5. 1
      app/Admin/Controllers/LanzuMpWithdrawController.php
  6. 2
      app/Models/LanzuCsWithdraw.php
  7. 31
      app/Models/LanzuUserBalance.php

1
app/Admin/Common/Auth.php

@ -1,4 +1,5 @@
<?php
namespace App\Admin\Common;
use App\Models\AdminRoles;

45
app/Admin/Common/WxPay.php

@ -0,0 +1,45 @@
<?php
namespace App\Admin\Common;
use App\Models\ImsCjdcUser;
use EasyWeChat\Factory;
class WxPay
{
/**
* 企业付配置
* @param array $data
* @return array|\EasyWeChat\Kernel\Support\Collection|object|\Psr\Http\Message\ResponseInterface|string
* @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public static function transfers($data = [])
{
$app = Factory::payment(config('wechat.payment.default'));
$res = $app->transfer->toBalance([
'partner_trade_no' => $data['partner_trade_no'], // 商户订单号,需保持唯一性(只能是字母或者数字,不能包含有符号)
'openid' => $data['openid'],
'check_name' => 'NO_CHECK', // NO_CHECK:不校验真实姓名, FORCE_CHECK:强校验真实姓名
're_user_name' => $data['re_user_name'], // 如果 check_name 设置为FORCE_CHECK,则必填用户真实姓名
'amount' => $data['amount'], // 企业付款金额,单位为分
'desc' => $data['desc'], // 企业付款操作说明信息。必填
]);
return $res;
}
public static function pay($model,$form)
{
$data = [];
$user = ImsCjdcUser::find($model->user_id);
$data['openid'] = $user->openid;
$data['amount'] = $form->model()->money * 100;
$data['partner_trade_no'] = $form->model()->id;
$data['re_user_name'] = $model->name;
$data['desc'] = $model->name;
return self::transfers($data);
}
}

1
app/Admin/Controllers/LanzuCsInfoController.php

@ -15,6 +15,7 @@ use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Controllers\AdminController;
use \App\Models\LanzuCsInfo as modelCsInfo;
class LanzuCsInfoController extends AdminController
{
/**

55
app/Admin/Controllers/LanzuCsWithdrawController.php

@ -2,6 +2,7 @@
namespace App\Admin\Controllers;
use App\Admin\Common\WxPay;
use App\Admin\Repositories\LanzuCsWithdraw;
use App\Models\LanzuCsInfo;
use App\Models\LanzuUserBalance;
@ -10,7 +11,8 @@ use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Controllers\AdminController;
use Illuminate\Support\Facades\Log;
use App\Models\LanzuCsWithdraw as modelCsWithdraw;
class LanzuCsWithdrawController extends AdminController
{
/**
@ -24,6 +26,11 @@ class LanzuCsWithdrawController extends AdminController
$user = Admin::user();
if (!$user->isRole('lanzu_cs')) {//如果不是社区站点的角色登陆,则隐藏提现入口
$grid->disableCreateButton();
$grid->actions(function (Grid\Displayers\Actions $actions) use ($grid){
if ($actions->row->status!=0){//状态一但改变,就不能编辑
$actions->disableEdit();
}
});
} else {
$grid->disableEditButton();
}
@ -85,31 +92,47 @@ class LanzuCsWithdrawController extends AdminController
$form->text('money');
}
}
$form->saved(function ()use ($cs,$form){//扣减提现金额
LanzuUserBalance::reduceBalance($cs->id,3,$form->money);
});
} else {//编辑操作
$form->display('amount', '可提现金额')->value(LanzuUserBalance::getBalance($form->model()->cs_id, 3));
$form->display('cs_id', '提现用户')->value($form->model()->name);
$form->display('money');
if ($form->model()->status!=0){//提现审核后 就能再编辑
$form->radio('status', '状态')->options([1 => '同意', -1 => '拒绝'])->disable();
}else{
$form->radio('status', '状态')->options([1 => '同意', -1 => '拒绝'])->default(-1);
}
});
$form->saved(function ()use ($form){
if ($form->status==-1){//如何审核被拒绝,退回提现金额
LanzuUserBalance::returnBalance($form->model()->cs_id,3,$form->model()->money);
}elseif ($form->status==1){//调用微信企业付
//获取站点信息
$csInfo = LanzuCsInfo::find($form->model()->cs_id);
$res = WxPay::pay($csInfo,$form);
if ($res['result_code'] == "SUCCESS") {//更新到账状态
$csw = modelCsWithdraw::find($form->model()->id);
$csw->is_pay = 1;
$csw->save();
} else {
//记录失败日志
Log::error('提现失败.', $res);
}
/**
* 获取可提现金额
* @param $aduId
* @return float
*/
protected function getBalance($aduId)
{
$row = $this->getMmInfoByAduId($aduId);
if ($row) {
$res = MpBalance::where(['user_id' => $row->user_id])->first();
if ($res) {
return $res->balance;
dd($res);
}
});
}
return '0.00';
});
}
}

1
app/Admin/Controllers/LanzuMpWithdrawController.php

@ -99,7 +99,6 @@ class LanzuMpWithdrawController extends AdminController
protected function lanzu_bis_form(){
//管理员或者lanzu_bis操作
return Form::make(new LanzuMpWithdraw(['mpInfo']), function (Form $form) {
$form->footer(function ($footer) {
// 去掉`查看`checkbox
$footer->disableViewCheck();

2
app/Models/LanzuCsWithdraw.php

@ -15,7 +15,7 @@ class LanzuCsWithdraw extends Model
protected $dateFormat = 'U';
public function csInfo()
{
return $this->belongsTo("\App\Models\LanzuCsInfo",'cs_id','id');
return $this->hasOne("\App\Models\LanzuCsInfo",'id','cs_id');
}

31
app/Models/LanzuUserBalance.php

@ -4,8 +4,6 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class LanzuUserBalance extends Model
@ -31,9 +29,9 @@ class LanzuUserBalance extends Model
/**
* 扣减可提现金额
*/
public static function reduceBalance($uid, $uType, $reduceMoney)
public static function reduceBalance($sid, $type, $reduceMoney)
{
$row = self::where(['source_id' => $uid, 'user_type' => $uType])->first();
$row = self::where(['source_id' => $sid, 'user_type' => $type])->first();
if ($row) {
$row->balance = $row->balance - $reduceMoney;
return $row->save();
@ -45,9 +43,9 @@ class LanzuUserBalance extends Model
/**
* 回退审核未通过时的提现金额
*/
public static function returnBalance($uid, $uType, $returnMoney)
public static function returnBalance($sid, $uType, $returnMoney)
{
$row = self::where(['source_id' => $uid, 'user_type' => $uType])->first();
$row = self::where(['source_id' => $sid, 'user_type' => $uType])->first();
if ($row) {
$row->balance = $row->balance + $returnMoney;
return $row->save();
@ -69,25 +67,4 @@ class LanzuUserBalance extends Model
}
}
Loading…
Cancel
Save