Browse Source
Merge branch 'qs_local_community' into develop
Merge branch 'qs_local_community' into develop
# Conflicts: # dcat_admin_ide_helper.phpmaster
31 changed files with 989 additions and 102 deletions
-
1.gitignore
-
61app/Admin/Common/Auth.php
-
144app/Admin/Common/Images.php
-
45app/Admin/Common/WxPay.php
-
131app/Admin/Controllers/LanzuCsInfoController.php
-
156app/Admin/Controllers/LanzuCsWithdrawController.php
-
39app/Admin/Controllers/LanzuFinancialRecord.php
-
1app/Admin/Controllers/LanzuMpWithdrawController.php
-
90app/Admin/Controllers/LanzuServiceRewardController.php
-
16app/Admin/Repositories/LanzuCsInfo.php
-
16app/Admin/Repositories/LanzuCsWithdraw.php
-
16app/Admin/Repositories/LanzuServiceReward.php
-
4app/Admin/routes.php
-
16app/Libs/SsdbClient.php
-
1app/Models/BaseModel.php
-
82app/Models/FinancialRecord.php
-
3app/Models/FinancialRecord0.php
-
2app/Models/FinancialRecord1.php
-
2app/Models/FinancialRecord2.php
-
2app/Models/FinancialRecord3.php
-
2app/Models/FinancialRecord4.php
-
13app/Models/ImsCjdcMarket.php
-
26app/Models/LanzuCsInfo.php
-
30app/Models/LanzuCsWithdraw.php
-
27app/Models/LanzuServiceReward.php
-
76app/Models/LanzuUserBalance.php
-
2app/Models/MpBalance.php
-
28dcat_admin_ide_helper.php
-
15resources/lang/zh-CN/lanzu-cs-info.php
-
14resources/lang/zh-CN/lanzu-cs-withdraw.php
-
12resources/lang/zh-CN/lanzu-service-reward.php
@ -0,0 +1,61 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Common; |
|||
|
|||
use App\Models\AdminRoles; |
|||
use App\Models\AdminRoleUsers; |
|||
use App\Models\AdminUsers; |
|||
use App\Models\LanzuUserBalance; |
|||
use Dcat\Admin\Controllers\AdminController; |
|||
use Illuminate\Support\Facades\Hash; |
|||
|
|||
class Auth extends AdminController |
|||
{ |
|||
/** |
|||
* 添加管理员帐号 |
|||
* @param $form //表单模型
|
|||
* @param $model |
|||
* @param $newId //添加信息成功后返回的ID
|
|||
* @param $roles |
|||
* @return mixed |
|||
*/ |
|||
public static function addAdminUser($form, $model, $cid, $roles) |
|||
{ |
|||
$adu = new AdminUsers(); |
|||
if (!$cid) { |
|||
return '-2'; |
|||
} |
|||
$row = $model::find($cid); |
|||
|
|||
//>>1.添加市场经理前,去查询是否已存在相同的帐号
|
|||
$count = $adu->where(['username' => $form->phone])->count(); |
|||
if ($count) { |
|||
$row->delete(); |
|||
return '-1'; |
|||
} |
|||
//>>2.添加市场经理登陆帐号
|
|||
$adu->username = $form->phone; |
|||
$adu->password = Hash::make(substr($form->phone, -5)); |
|||
$adu->name = $form->name; |
|||
$adu->status = $form->status; |
|||
$res = $adu->save(); |
|||
if (!$res) { |
|||
//删除刚添加数据
|
|||
$row->delete(); |
|||
return '-2'; |
|||
} |
|||
//>>3.将帐号id关联
|
|||
$row->admin_user_id = $adu->id; |
|||
$row->save(); |
|||
|
|||
//>>4.添加到admin roles中
|
|||
$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($adu->id, 3); |
|||
} |
|||
} |
|||
@ -0,0 +1,144 @@ |
|||
<?php |
|||
|
|||
|
|||
namespace App\Admin\Common; |
|||
|
|||
|
|||
use Dcat\Admin\Controllers\AdminController; |
|||
use GuzzleHttp\Client; |
|||
use Illuminate\Support\Facades\DB; |
|||
use Illuminate\Support\Facades\Storage; |
|||
|
|||
class Images extends AdminController |
|||
{ |
|||
private function getWxToken() |
|||
{ |
|||
//获取token
|
|||
$row = DB::table('ims_cjdc_system') |
|||
->select('appid','appsecret') |
|||
->where('uniacid', 2) |
|||
->first(); |
|||
$appid=$row->appid; |
|||
$secret=$row->appsecret; |
|||
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret; |
|||
$ch = curl_init(); |
|||
curl_setopt($ch, CURLOPT_URL,$url); |
|||
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); |
|||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0); |
|||
$data = curl_exec($ch); |
|||
curl_close($ch); |
|||
$data = json_decode($data,true); |
|||
return $data['access_token']; |
|||
} |
|||
|
|||
public function createQrCode($param,$path) |
|||
{ |
|||
$access_token = $this->getWxToken(); |
|||
$data=array( |
|||
'scene'=>$param, |
|||
"page"=>$path, |
|||
"width"=>100 |
|||
); |
|||
$data = json_encode($data); |
|||
$url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$access_token.""; |
|||
$ch = curl_init(); |
|||
curl_setopt($ch, CURLOPT_URL,$url); |
|||
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); |
|||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0); |
|||
curl_setopt($ch, CURLOPT_POST,1); |
|||
curl_setopt($ch, CURLOPT_POSTFIELDS,$data); |
|||
$data = curl_exec($ch); |
|||
curl_close($ch); |
|||
return $data; |
|||
|
|||
} |
|||
|
|||
/** |
|||
* 上传文件到oss |
|||
* @param $base64 //文件流
|
|||
* @param $fileName //文件名称
|
|||
* @return bool |
|||
*/ |
|||
public function uploadOss($base64,$fileName) |
|||
{ |
|||
return Storage::put($fileName,$base64); |
|||
} |
|||
|
|||
|
|||
public function test() |
|||
{ |
|||
$wx_head = 'http://www.marketmanage.com/uploads/20200728/d5a491cd3d8d071e3212c3478e8e35a1.jpg'; |
|||
$avatar_file = file_get_contents($wx_head); |
|||
file_put_contents('./logo.jpg',$avatar_file); |
|||
$logo = $this->changeAvatar($avatar_file); |
|||
file_put_contents('./logo_new.jpg',$logo); |
|||
|
|||
|
|||
//$qr_code = $this->createQrCode('','');
|
|||
|
|||
|
|||
} |
|||
|
|||
|
|||
public function changeAvatar($avatar) |
|||
{ |
|||
//处理用户头像为圆形icon
|
|||
$avatar = imagecreatefromstring($avatar); |
|||
$w = imagesx($avatar)-5; |
|||
$h = imagesy($avatar)-5; |
|||
$w = min($w, $h); |
|||
$h = $w; |
|||
|
|||
$img = imagecreatetruecolor($w, $h); |
|||
imagesavealpha($img, true); |
|||
$bg = imagecolorallocatealpha($img, 255, 255, 255, 127); |
|||
imagefill($img, 0, 0, $bg); |
|||
|
|||
$r = $w / 2; //圆半径
|
|||
$y_x = $r; //圆心X坐标
|
|||
$y_y = $r; //圆心Y坐标
|
|||
for ($x = 0; $x < $w; $x++) { |
|||
for ($y = 0; $y < $h; $y++) { |
|||
$rgbColor = imagecolorat($avatar, $x, $y); |
|||
|
|||
if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) { |
|||
imagesetpixel($img, $x, $y, $rgbColor); |
|||
} |
|||
} |
|||
} |
|||
|
|||
ob_start(); |
|||
imagepng($img); |
|||
imagedestroy($img); |
|||
imagedestroy($avatar); |
|||
$contents = ob_get_contents(); //读取缓存区的内容
|
|||
ob_end_clean(); //清空缓存区
|
|||
return $contents; |
|||
} |
|||
|
|||
|
|||
public function makeOnePic($qr_code, $logo) //二维码与头像组合
|
|||
{ |
|||
$qr_code = imagecreatefromstring($qr_code); //生成的二维码底色为白色
|
|||
//设置二维码为透明底
|
|||
imagesavealpha($qr_code, true); //这个设置一定要加上
|
|||
$bg = imagecolorallocatealpha($qr_code, 255, 255, 255, 127); //拾取一个完全透明的颜色,最后一个参数127为全透明
|
|||
imagefill($qr_code, 0, 0, $bg); |
|||
$icon = imagecreatefromstring($logo); //生成中间圆形logo (微信头像获取到的logo的大小为132px 132px)
|
|||
|
|||
$qr_width = imagesx($qr_code); //二维码图片宽度
|
|||
$lg_width = imagesx($icon); //logo图片宽度
|
|||
$lg_height = imagesy($icon); //logo图片高度
|
|||
|
|||
$qr_lg_width = $qr_width / 2.2; |
|||
$scale = $lg_width / $qr_lg_width; |
|||
$qr_lg_height = $lg_height / $scale; |
|||
$start_width = ($qr_width - $lg_width) / 2 ; //(获取logo的左上方的位置:( 外部的正方形-logo的宽 ) / 2,我这边存在1px的偏差 我就给+2啦)
|
|||
|
|||
imagecopyresampled($qr_code, $icon, $start_width, $start_width, 0, 0, $qr_lg_width, $qr_lg_height, $lg_width, $lg_height); |
|||
imagejpeg($qr_code,'./qrcode.png'); //保存
|
|||
|
|||
imagedestroy($qr_code); |
|||
imagedestroy($icon); |
|||
} |
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
@ -0,0 +1,131 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Controllers; |
|||
|
|||
use App\Admin\Common\Auth; |
|||
use App\Admin\Common\Images; |
|||
use App\Admin\Repositories\LanzuCsInfo; |
|||
|
|||
use App\Models\AdminUsers; |
|||
use App\Models\FinancialRecord; |
|||
use App\Models\ImsCjdcMarket; |
|||
use App\Models\LanzuUserBalance; |
|||
use Dcat\Admin\Admin; |
|||
use Dcat\Admin\Form; |
|||
use Dcat\Admin\Grid; |
|||
use Dcat\Admin\Show; |
|||
use Dcat\Admin\Controllers\AdminController; |
|||
use \App\Models\LanzuCsInfo as modelCsInfo; |
|||
|
|||
class LanzuCsInfoController extends AdminController |
|||
{ |
|||
/** |
|||
* Make a grid builder. |
|||
* |
|||
* @return Grid |
|||
*/ |
|||
protected function grid() |
|||
{ |
|||
return Grid::make(new LanzuCsInfo('userBalance'), function (Grid $grid) { |
|||
$user = Admin::user(); |
|||
if ($user->isRole('lanzu_cs')) {//如何是社区站点角色登陆,则只能看到自己的信息
|
|||
$grid->model()->where('admin_user_id', $user->id); |
|||
$grid->disableDeleteButton(); |
|||
$grid->disableCreateButton(); |
|||
$grid->disableEditButton(); |
|||
} |
|||
$grid->id->sortable(); |
|||
$grid->name; |
|||
$grid->phone; |
|||
$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->disableViewButton(); |
|||
$grid->filter(function (Grid\Filter $filter) { |
|||
$filter->equal('id'); |
|||
|
|||
}); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Make a show builder. |
|||
* |
|||
* @param mixed $id |
|||
* |
|||
* @return Show |
|||
*/ |
|||
protected function detail($id) |
|||
{ |
|||
return Show::make($id, new LanzuCsInfo(), function (Show $show) { |
|||
$show->id; |
|||
$show->name; |
|||
$show->phone; |
|||
$show->address; |
|||
$show->admin_user_id; |
|||
$show->status; |
|||
$show->created_at; |
|||
$show->updated_at; |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Make a form builder. |
|||
* @return Form |
|||
*/ |
|||
protected function form() |
|||
{ |
|||
return Form::make(new LanzuCsInfo(), function (Form $form) { |
|||
$form->display('id'); |
|||
$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->radio('status', '状态')->options(['禁用', '启用'])->default(1); |
|||
//$form->datetime('start_time')->value('1598239137');
|
|||
$form->saved(function (Form $form, $cid) { |
|||
$model = new modelCsInfo(); |
|||
if ($form->isCreating()) { |
|||
//>>1.添加登录帐号
|
|||
$res = Auth::addAdminUser($form, $model, $cid, 'lanzu_cs'); |
|||
if ($res == -1) { |
|||
return $form->error('该手机号作为登陆帐号已存在!'); |
|||
} 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) { |
|||
//>>3.保存二维码路径
|
|||
$cs->qrcode_path = $fileName; |
|||
$cs->save(); |
|||
} |
|||
} else { |
|||
//>>4.编辑时同步登陆帐号状态
|
|||
$adu = new AdminUsers(); |
|||
$id = $form->getKey(); |
|||
$row = $model::find($id); |
|||
$ad = $adu->find($row->admin_user_id); |
|||
$ad->status = $form->status; |
|||
$ad->save(); |
|||
} |
|||
}); |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,156 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Controllers; |
|||
|
|||
use App\Admin\Common\WxPay; |
|||
use App\Admin\Repositories\LanzuCsWithdraw; |
|||
use App\Models\FinancialRecord; |
|||
use App\Models\FinancialRecord0; |
|||
use App\Models\LanzuCsInfo; |
|||
use App\Models\LanzuUserBalance; |
|||
use Dcat\Admin\Admin; |
|||
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 |
|||
{ |
|||
/** |
|||
* Make a grid builder. |
|||
* |
|||
* @return Grid |
|||
*/ |
|||
protected function grid() |
|||
{ |
|||
return Grid::make(new LanzuCsWithdraw(), function (Grid $grid) { |
|||
$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(); |
|||
} |
|||
$grid->disableViewButton(); |
|||
$grid->disableDeleteButton(); |
|||
$grid->id->sortable(); |
|||
$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->created_at; |
|||
$grid->filter(function (Grid\Filter $filter) { |
|||
$filter->equal('id'); |
|||
}); |
|||
|
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Make a show builder. |
|||
* |
|||
* @param mixed $id |
|||
* |
|||
* @return Show |
|||
*/ |
|||
protected function detail($id) |
|||
{ |
|||
return Show::make($id, new LanzuCsWithdraw(), function (Show $show) { |
|||
$show->id; |
|||
$show->cs_id('提现用户'); |
|||
$show->money; |
|||
$show->status('状态'); |
|||
$show->is_pay('是否到帐'); |
|||
$show->created_at; |
|||
$show->updated_at; |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Make a form builder. |
|||
* |
|||
* @return Form |
|||
*/ |
|||
protected function form() |
|||
{ |
|||
return Form::make(new LanzuCsWithdraw('csInfo'), function (Form $form) { |
|||
$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(); |
|||
$form->hidden('cs_id', '提现用户id')->value($cs->id); |
|||
$form->text('csInfo.name', '提现用户')->value($cs->name)->disable(); |
|||
$form->number('money')->min(0)->max(env('MAX_MONEY')); |
|||
$form->saving(function (Form $form) use ($user) { |
|||
//保存前校验提现金额是否符合申请条件
|
|||
if ($form->money < env('MIN_MONEY') || $form->money > env('MAX_MONEY')) { |
|||
return $form->error('申请提现金额不得小于 ' . env('MIN_MONEY') . ' 元 或 不得大于 ' . env('MAX_MONEY') . ' 元.'); |
|||
} |
|||
$res = LanzuUserBalance::checkBalance($user->id, $form->money); |
|||
if (!$res) { |
|||
return $form->error('您可提现金额不足!'); |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
|
|||
$form->saved(function () use ($cs, $form) {//扣减提现金额
|
|||
LanzuUserBalance::reduceBalance($cs->admin_user_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(); |
|||
|
|||
//添加流水记录
|
|||
$model = FinancialRecord::getFinancialRecordModel($csInfo->admin_user_id); |
|||
$model->user_id = $csInfo->admin_user_id; |
|||
$model->user_type = 4; |
|||
$model->money = $form->model()->money; |
|||
$model->money_type = 104; |
|||
$model->desc = '社区站点提现'; |
|||
$model->comment = '社区站点提现'; |
|||
$model->save(); |
|||
} else { |
|||
//记录失败日志
|
|||
Log::error('提现失败.', $res); |
|||
} |
|||
} |
|||
}); |
|||
|
|||
} |
|||
}); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,39 @@ |
|||
<?php |
|||
|
|||
|
|||
namespace App\Admin\Controllers; |
|||
|
|||
|
|||
use App\Models\AdminUsers; |
|||
use App\Models\FinancialRecord0; |
|||
use Dcat\Admin\Controllers\AdminController; |
|||
use Dcat\Admin\Form; |
|||
use Dcat\Admin\Grid; |
|||
|
|||
class LanzuFinancialRecord extends AdminController |
|||
{ |
|||
protected function grid() |
|||
{ |
|||
return Grid::make(new FinancialRecord0(),function (Grid $grid){ |
|||
$grid->id; |
|||
$grid->user_id('用户'); |
|||
$grid->money('金额'); |
|||
$grid->desc('说明'); |
|||
$grid->created_at('创建时间'); |
|||
$grid->filter(function (Grid\Filter $filter){ |
|||
$filter->equal('id'); |
|||
}); |
|||
$grid->disableViewButton(); |
|||
$grid->disableCreateButton(); |
|||
$grid->disableEditButton(); |
|||
$grid->disableDeleteButton(); |
|||
}); |
|||
} |
|||
|
|||
protected function form() |
|||
{ |
|||
return Form::make(new FinancialRecord0(),function (Form $form){ |
|||
$form->datetime('created_at'); |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,90 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Controllers; |
|||
|
|||
use App\Admin\Repositories\LanzuServiceReward; |
|||
use App\Libs\SsdbClient; |
|||
use Dcat\Admin\Form; |
|||
use Dcat\Admin\Grid; |
|||
use Dcat\Admin\Show; |
|||
use Dcat\Admin\Controllers\AdminController; |
|||
|
|||
class LanzuServiceRewardController extends AdminController |
|||
{ |
|||
/** |
|||
* Make a grid builder. |
|||
* |
|||
* @return Grid |
|||
*/ |
|||
protected function grid() |
|||
{ |
|||
return Grid::make(new LanzuServiceReward(), function (Grid $grid) { |
|||
$grid->column('first_reward', '首单奖励')->display(function () { |
|||
return $this->set_reward['first_reward'] . ' 元'; |
|||
}); |
|||
$grid->column('new_user_reward', '站点奖励')->display(function () { |
|||
return $this->set_reward['new_user_reward'] . ' 元'; |
|||
}); |
|||
$grid->column('flow_reward', '流水奖励')->display(function () { |
|||
$f = $this->set_reward['flow_reward']; |
|||
return $f .= '%'; |
|||
}); |
|||
$grid->type->using([0 => '-', 1 => '社区']); |
|||
$grid->created_at; |
|||
$grid->updated_at; |
|||
$grid->disableViewButton(); |
|||
$grid->filter(function (Grid\Filter $filter) { |
|||
$filter->equal('id'); |
|||
|
|||
}); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Make a show builder. |
|||
* |
|||
* @param mixed $id |
|||
* |
|||
* @return Show |
|||
*/ |
|||
protected function detail($id) |
|||
{ |
|||
return Show::make($id, new LanzuServiceReward(), function (Show $show) { |
|||
$show->field('first_reward', '首单奖励')->value($show->model()->set_reward['first_reward']); |
|||
$show->field('new_user_reward', '新用户奖励')->value($show->model()->set_reward['new _user_reward']); |
|||
$show->field('flow_reward', '流水奖励')->value($show->model()->set_reward['flow_reward']); |
|||
$show->field('type')->value('社区'); |
|||
$show->created_at; |
|||
$show->updated_at; |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Make a form builder. |
|||
* |
|||
* @return Form |
|||
*/ |
|||
protected function form() |
|||
{ |
|||
return Form::make(new LanzuServiceReward(), function (Form $form) { |
|||
$form->display('id'); |
|||
$form->embeds('set_reward', '奖励配置', function ($form) { |
|||
$form->number('first_reward', '首单奖励(元)')->min(0); |
|||
$form->number('new_user_reward', '站点奖励(元)')->min(0); |
|||
$form->number('flow_reward', '流水奖励(%)'); |
|||
|
|||
}); |
|||
$form->radio('type')->options([1 => '社区'])->default(1); |
|||
$form->saved(function (Form $form) { |
|||
$ssdb = SsdbClient::client(env('SSDB_HOST'), env('SSDB_PORT')); |
|||
$data = [ |
|||
'first_reward' => $form->set_reward['first_reward'], |
|||
'new_user_reward' => $form->set_reward['new_user_reward'], |
|||
'flow_reward' => $form->set_reward['flow_reward'], |
|||
]; |
|||
$ssdb->multi_hset('set_reward_' . $form->type, $data); |
|||
}); |
|||
$form->disableViewButton(); |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,16 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Repositories; |
|||
|
|||
use App\Models\LanzuCsInfo as Model; |
|||
use Dcat\Admin\Repositories\EloquentRepository; |
|||
|
|||
class LanzuCsInfo extends EloquentRepository |
|||
{ |
|||
/** |
|||
* Model. |
|||
* |
|||
* @var string |
|||
*/ |
|||
protected $eloquentClass = Model::class; |
|||
} |
|||
@ -0,0 +1,16 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Repositories; |
|||
|
|||
use App\Models\LanzuCsWithdraw as Model; |
|||
use Dcat\Admin\Repositories\EloquentRepository; |
|||
|
|||
class LanzuCsWithdraw extends EloquentRepository |
|||
{ |
|||
/** |
|||
* Model. |
|||
* |
|||
* @var string |
|||
*/ |
|||
protected $eloquentClass = Model::class; |
|||
} |
|||
@ -0,0 +1,16 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Repositories; |
|||
|
|||
use App\Models\LanzuServiceReward as Model; |
|||
use Dcat\Admin\Repositories\EloquentRepository; |
|||
|
|||
class LanzuServiceReward extends EloquentRepository |
|||
{ |
|||
/** |
|||
* Model. |
|||
* |
|||
* @var string |
|||
*/ |
|||
protected $eloquentClass = Model::class; |
|||
} |
|||
@ -1,85 +1,25 @@ |
|||
<?php |
|||
|
|||
namespace App\Models; |
|||
|
|||
use App\Models\BaseModel; |
|||
use Dcat\Admin\Traits\HasDateTimeFormatter; |
|||
use Illuminate\Database\Eloquent\Model; |
|||
use DB; |
|||
|
|||
// class FinancialRecord0 extends BaseModel
|
|||
// {
|
|||
// protected $table = 'lanzu_financial_record_0';
|
|||
// }
|
|||
|
|||
// class FinancialRecord1 extends BaseModel
|
|||
// {
|
|||
// protected $table = 'lanzu_financial_record_1';
|
|||
// }
|
|||
|
|||
// class FinancialRecord2 extends BaseModel
|
|||
// {
|
|||
// protected $table = 'lanzu_financial_record_2';
|
|||
// }
|
|||
|
|||
// class FinancialRecord3 extends BaseModel
|
|||
// {
|
|||
// protected $table = 'lanzu_financial_record_3';
|
|||
// }
|
|||
|
|||
// class FinancialRecord4 extends BaseModel
|
|||
// {
|
|||
// protected $table = 'lanzu_financial_record_4';
|
|||
// }
|
|||
|
|||
class FinancialRecord extends Model |
|||
{ |
|||
|
|||
public function __construct($table = null) |
|||
{ |
|||
|
|||
$index = $user_id % 5; |
|||
$table_name = 'lanzu_financial_record_0'; |
|||
switch ($index) { |
|||
case 0: |
|||
case 1: |
|||
case 2: |
|||
case 3: |
|||
case 4: |
|||
$table_name = 'lanzu_financial_record_' . $index; |
|||
$model_name = 'App\\Models\\'.'FinancialRecord1'; |
|||
//$buider = DB::table($table_name);
|
|||
$model = new BaseModel; |
|||
$model->setTable($table_name); |
|||
$buider = $model; |
|||
//$buider = $buider::where('id',1);
|
|||
// $buider = $buider::where('id',1);
|
|||
default: |
|||
# code...
|
|||
break; |
|||
} |
|||
|
|||
//if(empty($table)) $table = 'lanzu_financial_record_0';
|
|||
$this->setTable($table_name); |
|||
parent::__construct([]); |
|||
} |
|||
|
|||
use HasDateTimeFormatter; |
|||
protected $dateFormat = 'U'; |
|||
|
|||
/** |
|||
* 根据用户id创建不同模型 |
|||
* @param $user_id |
|||
* @return string |
|||
*/ |
|||
public static function getFinancialRecordModel($user_id){ |
|||
$buider = null; |
|||
$index = $user_id % 5; |
|||
|
|||
switch ($index) { |
|||
case 0: |
|||
case 1: |
|||
case 2: |
|||
case 3: |
|||
case 4: |
|||
dump($index); |
|||
$model_name = 'App\\Models\\'.'FinancialRecord'.$index; |
|||
$buider = $model_name; |
|||
default: |
|||
# code...
|
|||
break; |
|||
} |
|||
$buider = new $model_name(); |
|||
return $buider; |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,26 @@ |
|||
<?php |
|||
|
|||
namespace App\Models; |
|||
|
|||
use Dcat\Admin\Traits\HasDateTimeFormatter; |
|||
|
|||
use Illuminate\Database\Eloquent\Model; |
|||
|
|||
class LanzuCsInfo extends Model |
|||
{ |
|||
use HasDateTimeFormatter; |
|||
protected $table = 'lanzu_cs_info'; |
|||
protected $dateFormat = 'U'; |
|||
|
|||
public function userBalance() |
|||
{ |
|||
return $this->hasOne("\App\Models\LanzuUserBalance",'source_id','admin_user_id'); |
|||
} |
|||
|
|||
public function csWithdraw() |
|||
{ |
|||
return $this->hasOne("\App\Models\LanzuCsWithdraw",'cs_id','id'); |
|||
} |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
<?php |
|||
|
|||
namespace App\Models; |
|||
|
|||
use Dcat\Admin\Traits\HasDateTimeFormatter; |
|||
use Illuminate\Database\Eloquent\SoftDeletes; |
|||
use Illuminate\Database\Eloquent\Model; |
|||
|
|||
class LanzuCsWithdraw extends Model |
|||
{ |
|||
use HasDateTimeFormatter; |
|||
use SoftDeletes; |
|||
|
|||
protected $table = 'lanzu_cs_withdraw'; |
|||
protected $dateFormat = 'U'; |
|||
public function csInfo() |
|||
{ |
|||
return $this->hasOne("\App\Models\LanzuCsInfo",'id','cs_id'); |
|||
} |
|||
|
|||
|
|||
public function getCreatedAtAttribute($value) |
|||
{ |
|||
return date('Y-m-d H:i',$value); |
|||
} |
|||
public function getUpdatedAtAttribute($value) |
|||
{ |
|||
return date('Y-m-d H:i',$value); |
|||
} |
|||
} |
|||
@ -0,0 +1,27 @@ |
|||
<?php |
|||
|
|||
namespace App\Models; |
|||
|
|||
use Dcat\Admin\Traits\HasDateTimeFormatter; |
|||
|
|||
use Illuminate\Database\Eloquent\Model; |
|||
|
|||
class LanzuServiceReward extends Model |
|||
{ |
|||
use HasDateTimeFormatter; |
|||
protected $table = 'lanzu_service_reward'; |
|||
protected $dateFormat = 'U'; |
|||
protected $casts = [ |
|||
'set_reward'=>'json' |
|||
]; |
|||
|
|||
public function getCreatedAtAttribute($value) |
|||
{ |
|||
return date('Y-m-d H:i',$value); |
|||
} |
|||
public function getUpdatedAtAttribute($value) |
|||
{ |
|||
return date('Y-m-d H:i',$value); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,76 @@ |
|||
<?php |
|||
|
|||
|
|||
namespace App\Models; |
|||
|
|||
|
|||
use Illuminate\Database\Eloquent\Model; |
|||
|
|||
class LanzuUserBalance extends Model |
|||
{ |
|||
protected $table = 'lanzu_user_balance'; |
|||
protected $dateFormat = 'U'; |
|||
|
|||
/** |
|||
* 获取可提现金额 |
|||
* @param $uid |
|||
* @param $uType 0/1 普通用户/服务商 |
|||
*/ |
|||
public static function getBalance($uid, $uType = 0) |
|||
{ |
|||
$row = self::where(['source_id' => $uid, 'user_type' => $uType])->first(); |
|||
if ($row) { |
|||
return $row->balance; |
|||
} else { |
|||
return '0.00'; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 扣减可提现金额 |
|||
*/ |
|||
public static function reduceBalance($sid, $type, $reduceMoney) |
|||
{ |
|||
$row = self::where(['source_id' => $sid, 'user_type' => $type])->first(); |
|||
if ($row) { |
|||
$row->balance = $row->balance - $reduceMoney; |
|||
return $row->save(); |
|||
} else { |
|||
return false; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 回退审核未通过时的提现金额 |
|||
*/ |
|||
public static function returnBalance($sid, $uType, $returnMoney) |
|||
{ |
|||
$row = self::where(['source_id' => $sid, 'user_type' => $uType])->first(); |
|||
if ($row) { |
|||
$row->balance = $row->balance + $returnMoney; |
|||
return $row->save(); |
|||
} else { |
|||
return false; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 生成一条数据 |
|||
*/ |
|||
public static function create($aduid, $type) |
|||
{ |
|||
$self = new self(); |
|||
$self->source_id = $aduid; |
|||
$self->user_type = $type; |
|||
$self->balance = 0; |
|||
$self->save(); |
|||
} |
|||
|
|||
/** |
|||
* 校验是否在足够的可提现金额 |
|||
*/ |
|||
public static function checkBalance($aduid,$money) |
|||
{ |
|||
return self::where('source_id',$aduid)->where('balance','>',$money)->count(); |
|||
} |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
<?php |
|||
return [ |
|||
'labels' => [ |
|||
'LanzuCsInfo' => 'LanzuCsInfo', |
|||
], |
|||
'fields' => [ |
|||
'name' => '名称', |
|||
'phone' => '电话', |
|||
'address' => '地址', |
|||
'admin_user_id' => '系统登陆帐号', |
|||
'status' => '状态 0/1/2 未审核/已审核', |
|||
], |
|||
'options' => [ |
|||
], |
|||
]; |
|||
@ -0,0 +1,14 @@ |
|||
<?php |
|||
return [ |
|||
'labels' => [ |
|||
'LanzuCsWithdraw' => 'LanzuCsWithdraw', |
|||
], |
|||
'fields' => [ |
|||
'cs_id' => '关联的社区服务站id', |
|||
'money' => '提现金额', |
|||
'status' => '提现状态 0/1/-1 待审核/已同意/已拒绝', |
|||
'is_pay' => '是否支付到账 0/1 否/是', |
|||
], |
|||
'options' => [ |
|||
], |
|||
]; |
|||
@ -0,0 +1,12 @@ |
|||
<?php |
|||
return [ |
|||
'labels' => [ |
|||
'LanzuServiceReward' => 'LanzuServiceReward', |
|||
], |
|||
'fields' => [ |
|||
'set_reward' => '奖励配置', |
|||
'type' => '类型', |
|||
], |
|||
'options' => [ |
|||
], |
|||
]; |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue