first
This commit is contained in:
80
modules/User/Http/Controllers/Admin/AccountController.php
Normal file
80
modules/User/Http/Controllers/Admin/AccountController.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Models\Account;
|
||||
use Modules\User\Models\AccountLog;
|
||||
|
||||
class AccountController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '用户账户';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Account());
|
||||
|
||||
$grid->model()->orderByDesc('user_id');
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('user.username', '用户名');
|
||||
});
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('user.info.nickname', '用户昵称');
|
||||
});
|
||||
});
|
||||
|
||||
$grid->disableActions();
|
||||
$grid->disableCreateButton();
|
||||
|
||||
$grid->model()->with(['user.info']);
|
||||
|
||||
$grid->column('user.username', '用户名');
|
||||
$grid->column('用户昵称')->display(function () {
|
||||
return $this->user->info->nickname;
|
||||
});
|
||||
$grid->column('balance', '余额');
|
||||
$grid->column('score', '水滴');
|
||||
// $grid->column('coins');
|
||||
// $grid->column('other');
|
||||
$grid->column('updated_at', '更新时间');
|
||||
$grid->column('账户日志')->display(function () {
|
||||
return '账户日志';
|
||||
})->link(function () {
|
||||
return route('admin.user.account.logs', $this);
|
||||
}, '_self');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function detail($id): Grid
|
||||
{
|
||||
$grid = new Grid(new AccountLog());
|
||||
|
||||
$grid->disableCreateButton();
|
||||
$grid->disableActions();
|
||||
|
||||
if (is_numeric($id)) {
|
||||
$grid->model()->where('account_id', $id);
|
||||
} else {
|
||||
$grid->column('用户')
|
||||
->display(function () {
|
||||
return $this->account->user->username."({$this->account->user->info->nickname})";
|
||||
});
|
||||
}
|
||||
|
||||
$grid->column('type', '账户类型');
|
||||
$grid->column('rule.title', '账变规则');
|
||||
$grid->column('amount', '账变金额');
|
||||
$grid->column('balance', '当期余额');
|
||||
$grid->column('remark', '备注');
|
||||
$grid->column('source', '详情')->hide();
|
||||
$grid->column('created_at', '账变时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin\Actions;
|
||||
|
||||
use Encore\Admin\Actions\Response;
|
||||
use Encore\Admin\Actions\RowAction;
|
||||
use Encore\Admin\Facades\Admin;
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\User\Models\User;
|
||||
|
||||
class AddUserRemark extends RowAction
|
||||
{
|
||||
|
||||
public $name = '增加备注';
|
||||
|
||||
public function handle(User $user, Request $request): Response
|
||||
{
|
||||
try {
|
||||
$user->addLog(Admin::user(), $request->remark);
|
||||
|
||||
return $this->response()->success('添加备注成功')->refresh();
|
||||
} catch (\Exception $exception) {
|
||||
return $this->response()->error($exception->getMessage())->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
public function form(User $user)
|
||||
{
|
||||
$this->textarea('remark', '备注')->required();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin\Actions\Certification;
|
||||
|
||||
use Encore\Admin\Actions\RowAction;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Modules\User\Models\UserCertificationConfig;
|
||||
|
||||
class ConfigPublish extends RowAction
|
||||
{
|
||||
public $name = '使用配置';
|
||||
|
||||
public function handle(Model $model)
|
||||
{
|
||||
UserCertificationConfig::where('id', '<>', $model->id)->update(['status' => 0]);
|
||||
$model->status = 1;
|
||||
$model->save();
|
||||
|
||||
return $this->response()->success('发布配置完成')->refresh();
|
||||
}
|
||||
|
||||
public function dialog()
|
||||
{
|
||||
$this->confirm('确定使用配置么?');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin\Actions\Certification;
|
||||
|
||||
use Encore\Admin\Actions\RowAction;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Replicate extends RowAction
|
||||
{
|
||||
public $name = '复制配置';
|
||||
|
||||
public function handle(Model $model)
|
||||
{
|
||||
try {
|
||||
DB::transaction(function () use ($model) {
|
||||
$new = $model->replicate();
|
||||
|
||||
$new->status = 0;
|
||||
$new->save();
|
||||
});
|
||||
|
||||
return $this->response()->success('复制菜单完成')->refresh();
|
||||
} catch (\Exception $exception) {
|
||||
return $this->response()->error('复制菜单出错了')->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
public function dialog()
|
||||
{
|
||||
$this->confirm('确定复制配置么?');
|
||||
}
|
||||
}
|
||||
69
modules/User/Http/Controllers/Admin/Actions/JoinIdentity.php
Normal file
69
modules/User/Http/Controllers/Admin/Actions/JoinIdentity.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin\Actions;
|
||||
|
||||
use Encore\Admin\Actions\Response;
|
||||
use Encore\Admin\Actions\RowAction;
|
||||
use Exception;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\User\Models\Identity;
|
||||
|
||||
class JoinIdentity extends RowAction
|
||||
{
|
||||
|
||||
public $name = '加入身份';
|
||||
|
||||
public function handle(User $user, Request $request): Response
|
||||
{
|
||||
try {
|
||||
$identity_id = $request->join_identity_id;
|
||||
$remark = $request->remark;
|
||||
$identity = Identity::find($identity_id);
|
||||
$price = $identity->getCondition('price', '0');
|
||||
|
||||
$data = [
|
||||
'user_id' => $user->id,
|
||||
'identity_id' => $identity_id,
|
||||
'year' => 1,
|
||||
'type' => 1,
|
||||
'stock' => $identity->stock,
|
||||
'name' => '',
|
||||
'card_no' => '',
|
||||
'cover' => '',
|
||||
'state' => Order::STATE_INIT,
|
||||
'price' => $price,
|
||||
];
|
||||
|
||||
$order = Order::create($data);
|
||||
$order->pay();
|
||||
|
||||
//
|
||||
// $user->joinIdentity($identity_id, 'System', [
|
||||
// 'remark' => $remark,
|
||||
// ]);
|
||||
|
||||
return $this->response()->success('加入身份成功')->refresh();
|
||||
} catch (Exception $e) {
|
||||
return $this->response()->error($e->getMessage())->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
public function form(User $user)
|
||||
{
|
||||
$userIdentity = $user->identityFirst();
|
||||
if (empty($userIdentity)) {
|
||||
$identities = Identity::whereIn('order', [2, 3, 4, 5])->pluck('name', 'id');
|
||||
} elseif ($userIdentity->job == Identity::JOB_YK) {
|
||||
$identities = Identity::whereIn('order', [2, 3, 4, 5])->pluck('name', 'id');
|
||||
} else {
|
||||
$identities = Identity::where('order', '>', $userIdentity->order)->pluck('name', 'id');
|
||||
}
|
||||
$this->select('join_identity_id', '加入身份')
|
||||
->options($identities)
|
||||
->required();
|
||||
$this->text('remark', '加入备注');
|
||||
$this->confirm('确认加入该身份?');
|
||||
}
|
||||
|
||||
}
|
||||
25
modules/User/Http/Controllers/Admin/Actions/Pay.php
Normal file
25
modules/User/Http/Controllers/Admin/Actions/Pay.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin\Actions;
|
||||
|
||||
use Encore\Admin\Actions\Response;
|
||||
use Encore\Admin\Actions\RowAction;
|
||||
use Modules\User\Models\Order;
|
||||
|
||||
class Pay extends RowAction
|
||||
{
|
||||
|
||||
public $name = '支付测试-正式版本移除';
|
||||
|
||||
public function handle(Order $order): Response
|
||||
{
|
||||
try {
|
||||
$order->pay();
|
||||
|
||||
return $this->response()->success('支付状态调整成功')->refresh();
|
||||
} catch (\Exception $exception) {
|
||||
return $this->response()->error($exception->getMessage())->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
25
modules/User/Http/Controllers/Admin/Actions/Refund.php
Normal file
25
modules/User/Http/Controllers/Admin/Actions/Refund.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin\Actions;
|
||||
|
||||
use Encore\Admin\Actions\Response;
|
||||
use Encore\Admin\Actions\RowAction;
|
||||
use Modules\User\Models\Order;
|
||||
|
||||
class Refund extends RowAction
|
||||
{
|
||||
|
||||
public $name = '退款';
|
||||
|
||||
public function handle(Order $order): Response
|
||||
{
|
||||
try {
|
||||
$order->refund();
|
||||
|
||||
return $this->response()->success('退款成功')->refresh();
|
||||
} catch (\Exception $exception) {
|
||||
return $this->response()->error($exception->getMessage())->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin\Actions;
|
||||
|
||||
use Encore\Admin\Actions\Response;
|
||||
use Encore\Admin\Actions\RowAction;
|
||||
use Exception;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\User\Models\Identity;
|
||||
use Modules\User\Models\IdentityLog;
|
||||
|
||||
class RemoveIdentity extends RowAction
|
||||
{
|
||||
|
||||
public $name = '移除身份';
|
||||
|
||||
public function handle(Model $user, Request $request): Response
|
||||
{
|
||||
try {
|
||||
$identity_id = $request->remove_identity_id;
|
||||
$remark = $request->remark;
|
||||
$user->removeIdentity($identity_id, 'System', [
|
||||
'remark' => $remark,
|
||||
]);
|
||||
|
||||
$defaultIdentity = Identity::where('default', 1)->first();
|
||||
if ($defaultIdentity) {
|
||||
$user->joinIdentity($defaultIdentity->id, IdentityLog::CHANNEL_SYSTEM);
|
||||
}
|
||||
|
||||
return $this->response()->success('移除身份成功')->refresh();
|
||||
} catch (Exception $e) {
|
||||
return $this->response()->error($e->getMessage())->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
public function form(Model $model)
|
||||
{
|
||||
$this->select('remove_identity_id', '移除身份')
|
||||
->options(Identity::whereIn('id', $model->identities()->get()->pluck('id'))
|
||||
->pluck('name', 'id'))
|
||||
->required();
|
||||
$this->text('remark', '移除说明');
|
||||
$this->confirm('确认移除该身份?');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin\Actions;
|
||||
|
||||
use Encore\Admin\Actions\Response;
|
||||
use Encore\Admin\Actions\RowAction;
|
||||
use Exception;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class UpdateRelation extends RowAction
|
||||
{
|
||||
|
||||
public $name = '变更隶属';
|
||||
|
||||
public function handle(Model $model, Request $request): Response
|
||||
{
|
||||
try {
|
||||
if ($model->updateParent($request->parent_id)) {
|
||||
return $this->response()->success('变更成功')->refresh();
|
||||
} else {
|
||||
return $this->response()->error('变更失败')->refresh();
|
||||
}
|
||||
} catch (Exception $exception) {
|
||||
return $this->response()->error($exception->getMessage())->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
public function form()
|
||||
{
|
||||
$this->text('parent_id', '目标ID');
|
||||
$this->confirm('确认变更隶属?');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin\Actions;
|
||||
|
||||
use Encore\Admin\Actions\Response;
|
||||
use Encore\Admin\Actions\RowAction;
|
||||
use Modules\User\Models\User;
|
||||
|
||||
class UserStatusInit extends RowAction
|
||||
{
|
||||
|
||||
public $name = '正常';
|
||||
|
||||
public function handle(User $user): Response
|
||||
{
|
||||
try {
|
||||
$user->update([
|
||||
'status' => User::STATUS_INIT
|
||||
]);
|
||||
|
||||
return $this->response()->success('设置成功')->refresh();
|
||||
} catch (\Exception $exception) {
|
||||
return $this->response()->error($exception->getMessage())->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin\Actions;
|
||||
|
||||
use Encore\Admin\Actions\Response;
|
||||
use Encore\Admin\Actions\RowAction;
|
||||
use Modules\User\Models\User;
|
||||
|
||||
class UserStatusRefund extends RowAction
|
||||
{
|
||||
|
||||
public $name = '已退费';
|
||||
|
||||
public function handle(User $user): Response
|
||||
{
|
||||
try {
|
||||
$user->update([
|
||||
'status' => User::STATUS_REFUND
|
||||
]);
|
||||
|
||||
return $this->response()->success('设置成功')->refresh();
|
||||
} catch (\Exception $exception) {
|
||||
return $this->response()->error($exception->getMessage())->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Http\Controllers\Admin\Actions\Certification\ConfigPublish;
|
||||
use Modules\User\Http\Controllers\Admin\Actions\Certification\Replicate;
|
||||
use Modules\User\Models\UserCertificationConfig;
|
||||
|
||||
class CertificationConfigController extends AdminController
|
||||
{
|
||||
protected $title = '认证配置';
|
||||
|
||||
protected function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new UserCertificationConfig());
|
||||
|
||||
$grid->disableFilter();
|
||||
$grid->model()->orderBy('id', 'desc');
|
||||
$grid->actions(function ($action) {
|
||||
$action->disableView();
|
||||
$action->add(new Replicate);
|
||||
|
||||
if ($this->row->status == 0) {
|
||||
$action->add(new ConfigPublish);
|
||||
} else {
|
||||
$action->disableEdit();
|
||||
$action->disableDelete();
|
||||
}
|
||||
});
|
||||
$grid->column('id', 'ID');
|
||||
$grid->column('配置HASH')->display(function () {
|
||||
return md5($this->created_at);
|
||||
});
|
||||
$grid->column('is_open', '开通网络认证')->bool();
|
||||
$grid->column('is_ocr_open', '开通OCR认证')->bool();
|
||||
$grid->column('type', '认证类型')
|
||||
->using(UserCertificationConfig::TYPE)
|
||||
->label();
|
||||
$grid->column('status', '状态')->bool();
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
protected function form(): Form
|
||||
{
|
||||
$form = new Form(new UserCertificationConfig());
|
||||
|
||||
$states = [
|
||||
'on' => ['value' => 1, 'text' => '开启', 'color' => 'success'],
|
||||
'off' => ['value' => 0, 'text' => '关闭', 'color' => 'danger'],
|
||||
];
|
||||
$form->switch('is_open', '开通网络认证')->states($states);
|
||||
$form->switch('is_ocr_open', '开通OCR认证')->states($states);
|
||||
$form->radioButton('type', '认证类型')
|
||||
->options(UserCertificationConfig::TYPE)
|
||||
->required();
|
||||
$form->password('code', '阿里云code')->help('开启认证时必填');
|
||||
$form->url('url', '阿里云接口地址')->help('开启OCR认证时必填');
|
||||
$form->text('ocr_appid', 'OCRAPPID')->help('开启OCR认证时必填');
|
||||
$form->password('ocr_secretkey', 'OCRSecret')->help('开启OCR认证时必填');
|
||||
|
||||
return $form;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Models\UserCertification;
|
||||
|
||||
class CertificationController extends AdminController
|
||||
{
|
||||
protected $title = '认证记录';
|
||||
|
||||
protected function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new UserCertification());
|
||||
|
||||
$grid->disableCreateButton();
|
||||
$grid->disableActions();
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('name', '姓名');
|
||||
});
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->equal('id_card', '身份证号');
|
||||
});
|
||||
});
|
||||
|
||||
$grid->column('id', '#ID#');
|
||||
$grid->column('name', '姓名');
|
||||
$grid->column('id_card', '身份证号');
|
||||
$grid->column('created_at', '申请时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
}
|
||||
42
modules/User/Http/Controllers/Admin/GatewayController.php
Normal file
42
modules/User/Http/Controllers/Admin/GatewayController.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Models\SmsGateway;
|
||||
|
||||
class GatewayController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '短信网关';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new SmsGateway());
|
||||
$grid->disableFilter();
|
||||
|
||||
$grid->column('name', '网关名称');
|
||||
$grid->column('slug', '网关标识');
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new SmsGateway());
|
||||
|
||||
$form->text('name', '网关名称')->required();
|
||||
$form->text('slug', '网关标识')->required();
|
||||
$form->keyValue('configs', '网关配置')->value([
|
||||
'APP_ID' => '',
|
||||
'APP_SECRET' => '',
|
||||
'SIGN_NAME' => '',
|
||||
]);
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
}
|
||||
226
modules/User/Http/Controllers/Admin/IdentitiesController.php
Normal file
226
modules/User/Http/Controllers/Admin/IdentitiesController.php
Normal file
@@ -0,0 +1,226 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use App\Admin\Traits\WithUploads;
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Form\NestedForm;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Models\Identity;
|
||||
|
||||
class IdentitiesController extends AdminController
|
||||
{
|
||||
|
||||
use WithUploads;
|
||||
|
||||
protected $title = '用户身份';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
|
||||
$grid = new Grid(new Identity());
|
||||
$grid->model()->oldest('id')->oldest('order');
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->scope('trashed', '回收站')->onlyTrashed();
|
||||
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('name', '身份名称');
|
||||
});
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->equal('status', '状态')->select([
|
||||
0 => '禁用',
|
||||
1 => '正常',
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
$grid->model()->oldest()->withCount('users');
|
||||
|
||||
$grid->column('id', '#ID#');
|
||||
$grid->column('cover', '展示图片')->image('', 40);
|
||||
$grid->column('name', '身份名称');
|
||||
$grid->column('order', '排序');
|
||||
$grid->column('status', '状态')->bool();
|
||||
$grid->column('serial_open', '是否开启编号')->bool();
|
||||
$grid->column('serial_places', '编号长度');
|
||||
$grid->column('serial_prefix', '编号前缀');
|
||||
$grid->column('years', '有效期(月)')
|
||||
->display(function () {
|
||||
return $this->years > 0 ? $this->years : '永久';
|
||||
});
|
||||
$grid->column('stock', '送水(箱)');
|
||||
$grid->column('users_count', '组内用户');
|
||||
$grid->column('job', '身份')->using(Identity::JOBS)->label();
|
||||
$grid->column('total', '可开通总数');
|
||||
$grid->column('channel', '缴费渠道')
|
||||
->using(Identity::CHANNELS)
|
||||
->label([
|
||||
Identity::CHANNEL_ONLINE => 'primary',
|
||||
Identity::CHANNEL_OFFLINE => 'success',
|
||||
]);
|
||||
foreach (config('identity.conditions') as $key => $title) {
|
||||
$grid->column($title)->display(function () use ($key) {
|
||||
return $this->getCondition($key, '无');
|
||||
});
|
||||
}
|
||||
foreach (config('identity.rules') as $key => $title) {
|
||||
$grid->column($title)->display(function () use ($key) {
|
||||
return $this->getRule($key, '无');
|
||||
});
|
||||
}
|
||||
|
||||
$states = [
|
||||
'on' => ['value' => 1, 'text' => '是', 'color' => 'primary'],
|
||||
'off' => ['value' => 0, 'text' => '否', 'color' => 'default'],
|
||||
];
|
||||
$grid->column('default', '默认身份')->switch($states);
|
||||
$grid->column('can_buy', '前台开通')->switch($states);
|
||||
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new Identity());
|
||||
$form->text('name', '身份名称')
|
||||
->required()
|
||||
->rules([
|
||||
'unique:Modules\User\Models\Identity,name,{{id}}',
|
||||
], [
|
||||
'unique' => '身份名称已经存在',
|
||||
]);
|
||||
$this->cover($form, 'cover', '展示图片');
|
||||
$form->number('order', '排序')
|
||||
->required()
|
||||
->default(0);
|
||||
$form->textarea('description', '身份简介')
|
||||
->rules(['max:255'], [
|
||||
'max' => '简介内容最大不能超过:max个字符',
|
||||
]);
|
||||
$form->switch('default', '默认身份')
|
||||
->default(0);
|
||||
$form->switch('can_buy', '前台开通')
|
||||
->help('是否可以在前台开通身份')
|
||||
->default(0);
|
||||
$form->number('stock', '库存')
|
||||
->help('开通身份送多少水')
|
||||
->default(0);
|
||||
|
||||
$form->number('years', '有效期(月)')
|
||||
->help('0未长期有效')
|
||||
->default(0);
|
||||
|
||||
$form->switch('status', '状态')
|
||||
->required()
|
||||
->default(1);
|
||||
$form->select('serial_open', '是否开启编号')
|
||||
->options([
|
||||
false => '关闭',
|
||||
true => '开启',
|
||||
])
|
||||
->required();
|
||||
$form->number('serial_places', '编号长度')
|
||||
->rules([
|
||||
'exclude_if:serial_open,true',
|
||||
'required',
|
||||
], [
|
||||
'required' => '编号开启必填',
|
||||
]);
|
||||
$form->text('serial_prefix', '编号前缀');
|
||||
$form->text('protocol_url', '协议地址')->help('显示开通身份签署的协议');
|
||||
$form->radioButton('channel', '缴费渠道')
|
||||
->options(Identity::CHANNELS)
|
||||
->default(1);
|
||||
$form->radioButton('job', '身份')
|
||||
->options(Identity::JOBS)
|
||||
->default(0)
|
||||
->when(Identity::JOB_TY, function (Form $form) {
|
||||
$form->number('total', '可开通总数')->default(100);
|
||||
$form->date('end_at', '结束日期');
|
||||
});
|
||||
$form->divider();
|
||||
|
||||
$form->table('conditions', '升级条件', function (NestedForm $form) {
|
||||
$form->select('name', '条件')
|
||||
->required()
|
||||
->options(config('identity.conditions'))
|
||||
->rules('required');
|
||||
$form->select('compare', '规则')
|
||||
->options([
|
||||
'>' => '大于',
|
||||
'>=' => '大于等于',
|
||||
'=' => '等于',
|
||||
'<' => '小于',
|
||||
'<=' => '小于等于',
|
||||
])
|
||||
->required()
|
||||
->rules('required');
|
||||
$form->text('value', '值')
|
||||
->required()
|
||||
->rules('required');
|
||||
});
|
||||
//
|
||||
$form->table('rules', '身份权益', function (NestedForm $form) {
|
||||
$form->select('name', '权益')
|
||||
->required()
|
||||
->options(config('identity.rules'))
|
||||
->rules('required');
|
||||
$form->select('compare', '规则')
|
||||
->options([
|
||||
'>' => '大于',
|
||||
'>=' => '大于等于',
|
||||
'=' => '等于',
|
||||
'<' => '小于',
|
||||
'<=' => '小于等于',
|
||||
])
|
||||
->required()
|
||||
->rules('required');
|
||||
$form->text('value', '值')
|
||||
->required()
|
||||
->rules('required');
|
||||
});
|
||||
$form->table('ruleshows', '身份权益(前台展示)', function (NestedForm $form) {
|
||||
$form->image('icon', '权益图片');
|
||||
$form->select('name', '权益')
|
||||
->options(config('identity.show_rules'))
|
||||
->required()
|
||||
->rules('required');
|
||||
$form->text('value', '值')
|
||||
->required()
|
||||
->rules('required');
|
||||
});
|
||||
//
|
||||
$form->table('rights', '可享受权益', function (NestedForm $form) {
|
||||
$form->text('name', '名称')
|
||||
->required()
|
||||
->rules('required');
|
||||
$form->image('cover', '权益图片');
|
||||
$form->text('remark', '备注')
|
||||
->required()
|
||||
->rules('required');
|
||||
$form->number('order', '排序');
|
||||
});
|
||||
|
||||
// $form->saving(function ($form) {
|
||||
//// dd(request()->all());
|
||||
// });
|
||||
|
||||
|
||||
$form->saved(function ($form) {
|
||||
$model = $form->model();
|
||||
if ($model->default == 1) {
|
||||
Identity::where('id', '!=', $model->id)
|
||||
->where('default', 1)
|
||||
->update([
|
||||
'default' => 0,
|
||||
]);
|
||||
}
|
||||
});
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Models\IdentityLog;
|
||||
|
||||
class IdentityLogController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '身份变动记录';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new IdentityLog());
|
||||
|
||||
$grid->disableActions();
|
||||
$grid->disableCreateButton();
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('user.username', '用户名');
|
||||
});
|
||||
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('user.info.nickname', '用户昵称');
|
||||
});
|
||||
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->equal('channel', '变更方式')->select(IdentityLog::CHANNEL_MAP);
|
||||
});
|
||||
});
|
||||
|
||||
$grid->column('user.username', '用户名');
|
||||
$grid->column('用户昵称')->display(function () {
|
||||
return $this->user->info->nickname;
|
||||
});
|
||||
$grid->column('before_identity.name', '变更前身份')->display(function () {
|
||||
if ($this->before == 0) {
|
||||
return '无';
|
||||
}
|
||||
|
||||
return $this->before_identity->name;
|
||||
});
|
||||
$grid->column('after_identity.name', '变更后身份')->display(function () {
|
||||
if ($this->after == 0) {
|
||||
return '无';
|
||||
}
|
||||
|
||||
return $this->after_identity->name;
|
||||
});
|
||||
$grid->column('channel', '变更方式')->using(IdentityLog::CHANNEL_MAP);
|
||||
$grid->column('remark', '备注');
|
||||
$grid->column('created_at', '变更时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
}
|
||||
156
modules/User/Http/Controllers/Admin/IndexController.php
Normal file
156
modules/User/Http/Controllers/Admin/IndexController.php
Normal file
@@ -0,0 +1,156 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Exception;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\User\Http\Controllers\Admin\Actions\JoinIdentity;
|
||||
use Modules\User\Http\Controllers\Admin\Actions\RemoveIdentity;
|
||||
use Modules\User\Http\Controllers\Admin\Actions\UpdateRelation;
|
||||
use Modules\User\Models\User;
|
||||
|
||||
class IndexController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '用户管理';
|
||||
|
||||
/**
|
||||
* Notes : 用户管理列表
|
||||
*
|
||||
* @Date : 2021/3/11 1:59 下午
|
||||
* @Author : <Jason.C>
|
||||
* @return Grid
|
||||
*/
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new User());
|
||||
|
||||
if (config('user.create_user_by_admin')) {
|
||||
$grid->quickCreate(function (Grid\Tools\QuickCreate $create) {
|
||||
$create->text('username', '用户名')->required();
|
||||
$create->password('password', '登录密码')->required();
|
||||
$create->text('info.nickname', '用户昵称')->required();
|
||||
});
|
||||
} else {
|
||||
$grid->disableCreateButton();
|
||||
}
|
||||
|
||||
$grid->actions(function (Grid\Displayers\Actions $actions) {
|
||||
! config('user.create_user_by_admin') && $actions->disableEdit();
|
||||
$actions->disableDelete();
|
||||
$actions->disableView();
|
||||
$actions->add(new JoinIdentity());
|
||||
$actions->add(new RemoveIdentity());
|
||||
$actions->add(new UpdateRelation());
|
||||
});
|
||||
|
||||
$grid->quickSearch('username')->placeholder('快速搜索用户名');
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('username', '用户名');
|
||||
});
|
||||
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('info.nickname', '用户昵称');
|
||||
$filter->like('identityMiddle.serial', '会员编号(数字)');
|
||||
});
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->equal('identities.id', '身份')->select(Identity::pluck('name', 'id'));
|
||||
$filter->equal('parent.username', '推荐人');
|
||||
});
|
||||
});
|
||||
|
||||
$grid->model()->withCount('addresses')->with(['info', 'parent', 'identities', 'addresses']);
|
||||
|
||||
$grid->column('info.avatar', '头像')->image('', 32);
|
||||
$grid->column('id', '用户ID');
|
||||
$grid->column('username', '用户名');
|
||||
$grid->column('info.nickname', '用户昵称');
|
||||
|
||||
// $grid->column('addresses_count', '收货地址')
|
||||
// ->link(function () {
|
||||
// return route('admin.mall.addresses.index', ['user_id' => $this->id]);
|
||||
// }, '_self');
|
||||
$grid->column('推荐人')->display(function () {
|
||||
return $this->parent->username ?? '无';
|
||||
});
|
||||
$grid->column('identities', '用户身份')
|
||||
->display(function () {
|
||||
$data = [];
|
||||
foreach ($this->identities as $identity) {
|
||||
$data[] = $identity->name.' : '.$identity->serial_prefix.$identity->getOriginal('pivot_serial');
|
||||
}
|
||||
|
||||
return $data;
|
||||
})
|
||||
->label();
|
||||
|
||||
|
||||
$grid->column('是否关注')
|
||||
->display(function () {
|
||||
return $this->isOfficialSubscribe();
|
||||
})
|
||||
->bool();
|
||||
$grid->column('邀请码')
|
||||
->display(function () {
|
||||
return Hashids::connection('code')->encode($this->id);
|
||||
});
|
||||
$grid->column('created_at', '注册时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes : 编辑表单
|
||||
*
|
||||
* @Date : 2021/7/15 5:09 下午
|
||||
* @Author : <Jason.C>
|
||||
* @return Form
|
||||
* @throws Exception
|
||||
*/
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new User());
|
||||
|
||||
if ($form->isCreating() && ! config('user.create_user_by_admin')) {
|
||||
throw new Exception('不运允许添加用户');
|
||||
}
|
||||
|
||||
if ($form->isCreating() && ! config('user.edit_user_by_admin')) {
|
||||
throw new Exception('不运允许编辑用户');
|
||||
}
|
||||
|
||||
$form->text('username', '用户名')
|
||||
->required()
|
||||
->rules('unique:users,username,{{id}}');
|
||||
$form->password('password', '登录密码')
|
||||
->required()
|
||||
->rules('min:6');
|
||||
$form->text('info.nickname', '用户昵称');
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes : User 列表选择, 这里没有判断,用户是否已经有店铺了,如果判断的情况,可能导致当前用户 无法被选中
|
||||
*
|
||||
* @Date : 2021/5/6 4:35 下午
|
||||
* @Author : <Jason.C>
|
||||
*/
|
||||
public function ajax(Request $request)
|
||||
{
|
||||
$q = $request->get('q');
|
||||
|
||||
return User::leftJoin('user_infos as info', 'users.id', '=', 'info.user_id')
|
||||
->where('username', 'like', "%$q%")
|
||||
->orWhere('info.nickname', 'like', "%$q%")
|
||||
->select('id', DB::raw('CONCAT(username, " [", info.nickname, "]") as text'))
|
||||
->paginate();
|
||||
}
|
||||
|
||||
}
|
||||
88
modules/User/Http/Controllers/Admin/OrderController.php
Normal file
88
modules/User/Http/Controllers/Admin/OrderController.php
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Grid;
|
||||
use Exception;
|
||||
use Modules\User\Http\Controllers\Admin\Actions\Pay;
|
||||
use Modules\User\Models\Order;
|
||||
|
||||
class OrderController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '升级订单';
|
||||
|
||||
/**
|
||||
* Notes: 升级订单
|
||||
*
|
||||
* @Author: 玄尘
|
||||
* @Date : 2021/6/7 15:19
|
||||
* @return Grid
|
||||
*/
|
||||
public function grid(): Grid
|
||||
{
|
||||
try {
|
||||
trait_exists('Modules\Payment\Traits\WithPayments');
|
||||
$grid = new Grid(new Order());
|
||||
$grid->model()->latest()->where('identity_id', '>', 2);
|
||||
$grid->disableCreateButton();
|
||||
|
||||
$grid->actions(function (Grid\Displayers\Actions $actions) {
|
||||
$actions->disableEdit();
|
||||
$actions->disableDelete();
|
||||
$actions->disableView();
|
||||
if ($actions->row->canPay()) {
|
||||
$actions->add(new Pay());
|
||||
}
|
||||
|
||||
if ($actions->row->canRefund()) {
|
||||
$actions->add(new Refund());
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->column(1 / 2, function (Grid\Filter $filter) {
|
||||
$filter->like('user.username', '用户名');
|
||||
$filter->like('user.info.nickname', '用户昵称');
|
||||
});
|
||||
|
||||
$filter->column(1 / 2, function (Grid\Filter $filter) {
|
||||
$filter->equal('identity.id', '身份')->select(function () {
|
||||
return Identity::query()->where('order', '>', 1)->pluck('name', 'id');
|
||||
});
|
||||
$filter->equal('state', '状态')->select(Order::STATES);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$grid->column('id', '用户ID');
|
||||
$grid->column('升级用户')->display(function () {
|
||||
return $this->user->username."({$this->user->info->nickname})";
|
||||
});
|
||||
$grid->column('name', '打款人姓名');
|
||||
$grid->column('cover', '打款凭证')->gallery(['width' => 60, 'height' => 60]);
|
||||
$grid->column('identity.name', '开通身份');
|
||||
$grid->column('price', '应打款额')->editable();
|
||||
$grid->column('state', '状态')->using(Order::STATES)->label();
|
||||
$grid->column('type', '类型')->using(Order::TYPES)->label();
|
||||
|
||||
$grid->column('created_at', '升级时间');
|
||||
|
||||
return $grid;
|
||||
} catch (Exception $exception) {
|
||||
dd('Payment 模块不存在,无法加载订单数据');
|
||||
}
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new Order());
|
||||
|
||||
$form->decimal('price', '金额')->required();
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
}
|
||||
60
modules/User/Http/Controllers/Admin/RuleController.php
Normal file
60
modules/User/Http/Controllers/Admin/RuleController.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Models\Account;
|
||||
use Modules\User\Models\AccountRule;
|
||||
|
||||
class RuleController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '账变规则管理';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new AccountRule());
|
||||
$grid->disableTools();
|
||||
$grid->actions(function (Grid\Displayers\Actions $actions) {
|
||||
$actions->disableView();
|
||||
$actions->disableDelete();
|
||||
});
|
||||
$grid->column('id', '#ID#');
|
||||
$grid->column('title', '规则名称');
|
||||
$grid->column('name', '规则关键字');
|
||||
$grid->column('type', '规则账户')->using(Account::TYPES);
|
||||
$grid->column('variable', '固定额度');
|
||||
$grid->column('created_at', '创建时间');
|
||||
$grid->column('updated_at', '更新时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new AccountRule());
|
||||
$form->text('title', '规则名称')->required();
|
||||
if ($form->isCreating()) {
|
||||
$form->text('name', '规则关键字')->required();
|
||||
} else {
|
||||
$form->text('name', '规则关键字')
|
||||
->readonly()
|
||||
->required();
|
||||
}
|
||||
$form->select('type', '规则账户')
|
||||
->options(Account::TYPES)
|
||||
->required();
|
||||
$form->number('variable', '固定额度')->default(0);
|
||||
$states = [
|
||||
'on' => ['value' => 1, 'text' => '是', 'color' => 'success'],
|
||||
'off' => ['value' => 0, 'text' => '否', 'color' => 'danger'],
|
||||
];
|
||||
$form->switch('deductions', '立即扣款')->states($states);
|
||||
$form->textarea('remark', '描述')->required();
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin\Selectable;
|
||||
|
||||
use Closure;
|
||||
use Encore\Admin\Grid\Filter;
|
||||
use Encore\Admin\Grid\Selectable;
|
||||
use Modules\User\Models\Identity;
|
||||
|
||||
class Identities extends Selectable
|
||||
{
|
||||
|
||||
public $model = Identity::class;
|
||||
|
||||
public static function display(): Closure
|
||||
{
|
||||
return function ($value) {
|
||||
if (is_array($value)) {
|
||||
return implode(';', array_column($value, 'name'));
|
||||
}
|
||||
|
||||
return optional($this->identities)->name;
|
||||
};
|
||||
}
|
||||
|
||||
public function make()
|
||||
{
|
||||
$this->column('id', '#ID#');
|
||||
$this->column('name', '身份名称');
|
||||
$this->column('status', '状态')->bool();
|
||||
$this->column('created_at', '时间');
|
||||
|
||||
$this->filter(function (Filter $filter) {
|
||||
$filter->like('name', '身份名称');
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
51
modules/User/Http/Controllers/Admin/ServiceController.php
Normal file
51
modules/User/Http/Controllers/Admin/ServiceController.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use App\Admin\Traits\WithUploads;
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Http\Controllers\Admin\Selectable\Identities;
|
||||
use Modules\User\Models\Service;
|
||||
|
||||
class ServiceController extends AdminController
|
||||
{
|
||||
|
||||
use WithUploads;
|
||||
|
||||
public $title = '客服中心';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Service());
|
||||
|
||||
$grid->disableTools();
|
||||
|
||||
$grid->model()->with(['identities']);
|
||||
|
||||
$grid->column('id', '#ID#');
|
||||
$grid->column('name', '姓名');
|
||||
$grid->column('mobile', '联系方式');
|
||||
$grid->column('status', '状态')->bool();
|
||||
$grid->column('identities', '服务身份')
|
||||
->belongsToMany(Identities::class);
|
||||
$grid->column('created_at', '创建时间');
|
||||
$grid->column('updated_at', '更新时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new Service());
|
||||
$form->text('name', '姓名')->required();
|
||||
$form->mobile('mobile', '联系方式')->required();
|
||||
$this->cover($form, 'cover', '客服二维码');
|
||||
$form->switch('status', '显示')->default(1);
|
||||
$form->belongsToMany('identities', Identities::class, '服务身份');
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
}
|
||||
40
modules/User/Http/Controllers/Admin/SignBannerController.php
Normal file
40
modules/User/Http/Controllers/Admin/SignBannerController.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use App\Admin\Traits\WithUploads;
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Models\SignBanner;
|
||||
use Modules\User\Models\SignChainLog;
|
||||
|
||||
class SignBannerController extends AdminController
|
||||
{
|
||||
use WithUploads;
|
||||
|
||||
protected $title = '签到背景图片';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new SignBanner());
|
||||
|
||||
$grid->column('id', '#ID#');
|
||||
$grid->column('title', '标题');
|
||||
$grid->column('cover', '封面图')->image('', 100, 100);
|
||||
$grid->column('status', '状态')->bool();
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new SignBanner());
|
||||
|
||||
$form->text('title', '标题')->required();
|
||||
$this->cover($form);
|
||||
$form->switch('status', '状态')->default(1);
|
||||
|
||||
return $form;
|
||||
}
|
||||
}
|
||||
61
modules/User/Http/Controllers/Admin/SignConfigController.php
Normal file
61
modules/User/Http/Controllers/Admin/SignConfigController.php
Normal file
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Layout\Content;
|
||||
use Modules\User\Models\SignConfig;
|
||||
use Encore\Admin\Form\EmbeddedForm;
|
||||
|
||||
class SignConfigController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '签到配置管理';
|
||||
|
||||
public function index(Content $content)
|
||||
{
|
||||
return redirect(admin_url('users/signs/1/edit'));
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
SignConfig::firstOrCreate(['id' => 1]);
|
||||
|
||||
$form = new Form(new SignConfig());
|
||||
$form->disableCreatingCheck();
|
||||
$form->disableEditingCheck();
|
||||
$form->tools(function (Form\Tools $tools) {
|
||||
$tools->disableDelete();
|
||||
$tools->disableView();
|
||||
$tools->disableList();
|
||||
});
|
||||
$form->embeds('params', '配置', function (EmbeddedForm $form) {
|
||||
$form->radio('open', '是否开启')->options([
|
||||
0 => '关闭',
|
||||
1 => '开启',
|
||||
])->required();
|
||||
$form->text('rule_name', '签到账变关键字')->default('');
|
||||
$form->radio('show_type', '签到展示类型')
|
||||
->options(SignConfig::SHOWTYPES)
|
||||
->default(SignConfig::SHOWTYPES_DAY)
|
||||
->required();
|
||||
$form->radio('type', '签到类型')
|
||||
->options(SignConfig::TYPES)
|
||||
->required();
|
||||
$form->number('single_number', '单次奖励')->default(0);
|
||||
$form->number('continuous_base', '连续基础值')->default(0);
|
||||
$form->number('continuous_incremental', '连续增量')->default(0);
|
||||
$form->number('cycle_day', '周期天数')->default(0);
|
||||
$form->number('cycle_base', '周期基础值')->default(0);
|
||||
$form->number('cycle_incremental', '周期增量')->default(0);
|
||||
});
|
||||
$form->table('tasks', '特殊奖励', function ($form) {
|
||||
$form->number('day', '天数')->default(0);
|
||||
$form->number('number', '奖励')->default(0);
|
||||
});
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
}
|
||||
38
modules/User/Http/Controllers/Admin/SignTextController.php
Normal file
38
modules/User/Http/Controllers/Admin/SignTextController.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Models\SignText;
|
||||
|
||||
class SignTextController extends AdminController
|
||||
{
|
||||
protected $title = '签到展示文字';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new SignText());
|
||||
|
||||
$grid->column('id', '#ID#');
|
||||
$grid->column('title', '标题');
|
||||
$grid->column('description', '一级描述');
|
||||
$grid->column('sub_description', '二级描述');
|
||||
$grid->column('status', '状态')->bool();
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new SignText());
|
||||
|
||||
$form->text('title', '标题')->required();
|
||||
$form->text('description', '一级描述')->required();
|
||||
$form->text('sub_description', '二级描述')->required();
|
||||
$form->switch('status', '状态')->default(1);
|
||||
|
||||
return $form;
|
||||
}
|
||||
}
|
||||
54
modules/User/Http/Controllers/Admin/SmsConfigController.php
Normal file
54
modules/User/Http/Controllers/Admin/SmsConfigController.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Models\SmsConfig;
|
||||
use Modules\User\Models\SmsGateway;
|
||||
|
||||
class SmsConfigController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '短信配置';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new SmsConfig());
|
||||
$grid->disableFilter();
|
||||
$grid->model()->orderByDesc('in_use');
|
||||
|
||||
$grid->column('debug', '调试模式')->bool();
|
||||
$grid->column('debug_code', '调试验证码');
|
||||
$grid->column('length', '验证码位数');
|
||||
$grid->column('expires', '有效期/分钟');
|
||||
$grid->column('default_gateway', '默认网关');
|
||||
$grid->column('in_use', '使用中')->bool();
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new SmsConfig());
|
||||
|
||||
$form->select('default_gateway', '默认网关')->options(function () {
|
||||
return SmsGateway::pluck('name', 'slug');
|
||||
})->required();
|
||||
$form->switch('debug', '调试模式');
|
||||
$form->text('debug_code', '调试验证码')->setWidth(2)->required();
|
||||
$form->number('length', '验证码位数')->default(4)->required();
|
||||
$form->number('expires', '有效期/分钟')->default(5)->required();
|
||||
$form->keyValue('template', '渠道模板')->value([
|
||||
'DEFAULT' => '',
|
||||
'LOGIN' => '',
|
||||
'REGISTER' => '',
|
||||
])->required();
|
||||
$form->switch('in_use', '使用中');
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
}
|
||||
37
modules/User/Http/Controllers/Admin/SmsController.php
Normal file
37
modules/User/Http/Controllers/Admin/SmsController.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Models\Sms;
|
||||
|
||||
class SmsController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '短信记录';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Sms());
|
||||
|
||||
$grid->disableCreateButton();
|
||||
$grid->disableActions();
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->equal('mobile', '接收手机');
|
||||
});
|
||||
});
|
||||
|
||||
$grid->column('mobile', '接收手机');
|
||||
$grid->column('channel', '短信渠道');
|
||||
$grid->column('gateway', '发送网关');
|
||||
$grid->column('content', '短信内容');
|
||||
$grid->column('used', '使用')->bool();
|
||||
$grid->column('created_at', '发送时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
}
|
||||
60
modules/User/Http/Controllers/Admin/StockController.php
Normal file
60
modules/User/Http/Controllers/Admin/StockController.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\User\Models\UserStock;
|
||||
use Modules\User\Models\UserStockLog;
|
||||
|
||||
class StockController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '会员库存';
|
||||
|
||||
/**
|
||||
* Notes : 用户管理列表
|
||||
*
|
||||
* @Date : 2021/3/11 1:59 下午
|
||||
* @Author : <Jason.C>
|
||||
* @return Grid
|
||||
*/
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new UserStock());
|
||||
|
||||
|
||||
$grid->disableCreateButton();
|
||||
$grid->disableActions();
|
||||
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('user.username', '用户名');
|
||||
});
|
||||
});
|
||||
|
||||
$grid->model()->withCount('logs')->with(['user.info']);
|
||||
|
||||
$grid->column('user.username', '用户名');
|
||||
$grid->column('用户昵称')
|
||||
->display(function () {
|
||||
return $this->user->info->nickname;
|
||||
});
|
||||
|
||||
$grid->column('stock', '总数');
|
||||
$grid->column('hold', '提货数')
|
||||
->link(function () {
|
||||
return admin_url('/users/stocks/'.$this->id.'/logs');
|
||||
}, '_blank');
|
||||
$grid->column('剩余')
|
||||
->display(function () {
|
||||
return $this->residue;
|
||||
});
|
||||
|
||||
$grid->column('created_at', '注册时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
}
|
||||
58
modules/User/Http/Controllers/Admin/StockLogController.php
Normal file
58
modules/User/Http/Controllers/Admin/StockLogController.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Encore\Admin\Grid;
|
||||
use Encore\Admin\Layout\Content;
|
||||
use Modules\Gout\Models\GoutCase;
|
||||
use Modules\User\Models\UserStock;
|
||||
use Modules\User\Models\UserStockLog;
|
||||
|
||||
class StockLogController extends Controller
|
||||
{
|
||||
|
||||
protected $title = '库存记录';
|
||||
|
||||
public function index(Content $content, UserStock $stock)
|
||||
{
|
||||
return $content
|
||||
->header($stock->user->info->nickname)
|
||||
->description('库存记录')
|
||||
->body($this->grid($stock));
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes : 用户管理列表
|
||||
*
|
||||
* @Date : 2021/3/11 1:59 下午
|
||||
* @Author : <Jason.C>
|
||||
* @return Grid
|
||||
*/
|
||||
public function grid($stock): Grid
|
||||
{
|
||||
$grid = new Grid(new UserStockLog());
|
||||
|
||||
$grid->disableCreateButton();
|
||||
$grid->disableActions();
|
||||
|
||||
$grid->model()->where('user_stock_id', $stock->id)->with(['userStock']);
|
||||
|
||||
$grid->column('id', 'ID');
|
||||
$grid->column('身份')
|
||||
->display(function () {
|
||||
if ($this->identity) {
|
||||
return $this->identity->name;
|
||||
} else {
|
||||
return '---';
|
||||
}
|
||||
});
|
||||
$grid->column('type', '类型')
|
||||
->using(UserStockLog::TYPES)
|
||||
->label();
|
||||
$grid->column('variable', '数量');
|
||||
$grid->column('created_at', '操作时间');
|
||||
return $grid;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user