Browse Source

社区站点提现

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

7
app/Admin/Common/Auth.php

@ -1,4 +1,5 @@
<?php
namespace App\Admin\Common;
use App\Models\AdminRoles;
@ -18,7 +19,7 @@ class Auth extends AdminController
* @param $roles
* @return mixed
*/
public static function addAdminUser($form,$model,$cid,$roles)
public static function addAdminUser($form, $model, $cid, $roles)
{
$adu = new AdminUsers();
if (!$cid) {
@ -48,13 +49,13 @@ class Auth extends AdminController
$row->save();
//>>4.添加到admin roles中
$lanzu_role = AdminRoles::where('slug', $roles)->first();
$lanzu_role = AdminRoles::where('slug', $roles)->first();
$aru = new AdminRoleUsers();
$aru->role_id = $lanzu_role->id;
$aru->user_id = $adu->id;
$aru->save();
//>>5.生成可提现金额信息
LanzuUserBalance::create($cid,3);
LanzuUserBalance::create($cid, 3);
}
}

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);
}
}

51
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
{
/**
@ -26,7 +27,7 @@ class LanzuCsInfoController extends AdminController
{
return Grid::make(new LanzuCsInfo('userBalance'), function (Grid $grid) {
$user = Admin::user();
if ($user->isRole('lanzu_cs')){//如何是社区站点角色登陆,则只能看到自己的信息
if ($user->isRole('lanzu_cs')) {//如何是社区站点角色登陆,则只能看到自己的信息
$grid->model()->where('admin_user_id', $user->id);
$grid->disableDeleteButton();
$grid->disableEditButton();
@ -34,15 +35,15 @@ class LanzuCsInfoController extends AdminController
$grid->id->sortable();
$grid->name;
$grid->phone;
$grid->column('userBalance.balance','可提现金额');
$grid->column('qrcode_path','二维码')->image('',50,50);
$grid->column('market_id','所属市场')->display(function (){
$grid->column('userBalance.balance', '可提现金额');
$grid->column('qrcode_path', '二维码')->image('', 50, 50);
$grid->column('market_id', '所属市场')->display(function () {
return ImsCjdcMarket::find($this->market_id)->name;
});
$grid->status('状态')->using(['禁用', '启用']);
$grid->address;
$grid->created_at->display(function ($time){
return date('Y-m-d H:i',$time);
$grid->created_at->display(function ($time) {
return date('Y-m-d H:i', $time);
});
$grid->disableViewButton();
$grid->filter(function (Grid\Filter $filter) {
@ -81,42 +82,42 @@ class LanzuCsInfoController extends AdminController
{
return Form::make(new LanzuCsInfo(), function (Form $form) {
$form->display('id');
$form->text('name','名称')->required();
$form->text('user_id','用户ID')->required();
$form->text('name', '名称')->required();
$form->text('user_id', '用户ID')->required();
$form->mobile('phone')->required();
$form->select('market_id','所属市场')->options(ImsCjdcMarket::getMarket())->required();
$form->text('address','社区地址')->required();
$form->select('market_id', '所属市场')->options(ImsCjdcMarket::getMarket())->required();
$form->text('address', '社区地址')->required();
$form->radio('status', '状态')->options(['禁用', '启用'])->default(1);
$form->saved(function (Form $form,$cid){
$form->saved(function (Form $form, $cid) {
$model = new modelCsInfo();
if ($form->isCreating()) {
//>>1.添加登录帐号
$res = Auth::addAdminUser($form,$model,$cid,'lanzu_cs');
if ($res==-1){
$res = Auth::addAdminUser($form, $model, $cid, 'lanzu_cs');
if ($res == -1) {
return $form->error('该手机号作为登陆帐号已存在!');
}elseif ($res==-2){
} elseif ($res == -2) {
return $form->error('添加失败!');
}
//>>2.生成小程序二维码
$cs = $model->find($cid);
$aid = $cs->admin_user_id;
$images = new Images();
$param= "p=index&sid={$aid}";
$path= 'zh_cjdianc/pages/Liar/loginindex';
$qrcode = $images->createQrCode($param,$path);
$fileName = 'public/upload/' .'qrcode'.'/'. date('Y') . '/' . date('m-d') . '/' . rand(100000000000000,999999999999999).'.png';
$result = $images->uploadOss($qrcode,$fileName);
if ($result==true){
$cs = $model->find($cid);
$aid = $cs->admin_user_id;
$images = new Images();
$param = "p=index&sid={$aid}";
$path = 'zh_cjdianc/pages/Liar/loginindex';
$qrcode = $images->createQrCode($param, $path);
$fileName = 'public/upload/' . 'qrcode' . '/' . date('Y') . '/' . date('m-d') . '/' . rand(100000000000000, 999999999999999) . '.png';
$result = $images->uploadOss($qrcode, $fileName);
if ($result == true) {
//>>3.保存二维码路径
$cs->qrcode_path = $fileName;
$cs->save();
}
} else {
//>>4.编辑时同步登陆帐号状态
$adu = new AdminUsers();
$adu = new AdminUsers();
$id = $form->getKey();
$row = $model::find($id);
$row = $model::find($id);
$ad = $adu->find($row->admin_user_id);
$ad->status = $form->status;
$ad->save();

87
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
{
/**
@ -22,20 +24,25 @@ class LanzuCsWithdrawController extends AdminController
{
return Grid::make(new LanzuCsWithdraw(), function (Grid $grid) {
$user = Admin::user();
if (!$user->isRole('lanzu_cs')){//如果不是社区站点的角色登陆,则隐藏提现入口
if (!$user->isRole('lanzu_cs')) {//如果不是社区站点的角色登陆,则隐藏提现入口
$grid->disableCreateButton();
}else{
$grid->actions(function (Grid\Displayers\Actions $actions) use ($grid){
if ($actions->row->status!=0){//状态一但改变,就不能编辑
$actions->disableEdit();
}
});
} else {
$grid->disableEditButton();
}
$grid->disableViewButton();
$grid->disableDeleteButton();
$grid->id->sortable();
$grid->cs_id('提现用户')->display(function (){
return LanzuCsInfo::where('id',$this->cs_id)->first()->name;
$grid->cs_id('提现用户')->display(function () {
return LanzuCsInfo::where('id', $this->cs_id)->first()->name;
});
$grid->money;
$grid->status('状态')->using([1=>'已同意',-1=>'已拒绝',0=>'待审核'])->label([1=>'success',-1=>'danger',0=>'default']);
$grid->is_pay('是否到账')->using(['否','是']);
$grid->status('状态')->using([1 => '已同意', -1 => '已拒绝', 0 => '待审核'])->label([1 => 'success', -1 => 'danger', 0 => 'default']);
$grid->is_pay('是否到账')->using(['否', '是']);
$grid->created_at;
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
@ -75,41 +82,57 @@ class LanzuCsWithdrawController extends AdminController
$form->display('id');
$user = Admin::user();
if ($form->isCreating()){//如果是添加操作
if ($user->isRole('lanzu_cs')){//如果是社区站点角色
$cs = LanzuCsInfo::where('admin_user_id',$user->id)->first();
if ($cs){
$form->text('amount', '可提现金额')->value(LanzuUserBalance::getBalance($cs->id,3))->disable();
if ($form->isCreating()) {//如果是添加操作
if ($user->isRole('lanzu_cs')) {//如果是社区站点角色
$cs = LanzuCsInfo::where('admin_user_id', $user->id)->first();
if ($cs) {
$form->text('amount', '可提现金额')->value(LanzuUserBalance::getBalance($cs->id, 3))->disable();
$form->hidden('cs_id', '提现用户id')->value($cs->id);
$form->text('csInfo.name', '提现用户')->value($cs->name)->disable();
$form->text('money');
}
}
}else{//编辑操作
$form->display('amount', '可提现金额')->value(LanzuUserBalance::getBalance($form->model()->cs_id,3));
$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');
$form->radio('status','状态')->options([1=>'同意',-1=>'拒绝'])->default(-1);
}
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);
}
dd($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;
}
}
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');
}

37
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();
@ -59,35 +57,14 @@ class LanzuUserBalance extends Model
/**
* 生成一条数据
*/
public static function create($sid,$type)
public static function create($sid, $type)
{
$self = new self();
$self = new self();
$self->source_id = $sid;
$self->user_type = $type;
$self->balance = 0;
$self->balance = 0;
$self->save();
}
}
Loading…
Cancel
Save