Commit c038de20 by yink

feat: 添加用户积分记录管理功能

新增用户积分记录管理模块,包括路由配置、语言文件、模型定义和控制器实现。控制器提供了积分记录的列表展示、筛选、导出等功能,并支持积分状态的分类展示和操作。
parent aa4189f3
<?php
namespace App\Admin\Controllers;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use App\Models\UserPointChangeRec;
class UserPointChangeRecController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(UserPointChangeRec::with('user'), function (Grid $grid) {
$grid->column('id', 'ID')->sortable();
$grid->column('user_id', '用户ID');
// 添加用户昵称字段
$grid->column('user.name', '用户昵称');
$grid->column('user.phone', '用户手机');
$grid->column('order_id', '关联订单号');
$grid->column('point_amount', '积分数量')->display(function ($value) {
$prefix = $this->change_type == 1 ? '+' : '-';
$color = $this->change_type == 1 ? 'green' : 'red';
return "<span style='color:{$color}'>$prefix$value</span>";
});
$grid->column('change_type', '增减类别')->using([1 => '增加', 0 => '减少']);
$grid->column('point_state', '积分状态')->using(UserPointChangeRec::pointState);
$grid->column('freeze_end_date', '解冻结束日期');
$grid->column('source', '积分来源')->using(UserPointChangeRec::source);
$grid->column('memo', '备注');
$grid->column('created_at', '创建时间')->sortable();
$grid->filter(function ($filter) {
$filter->equal('user_id', '用户ID');
// 添加用户昵称筛选
$filter->like('user.nickname', '用户昵称');
$filter->equal('change_type', '增减类别')->radio([
1 => '增加',
0 => '减少'
]);
$filter->equal('point_state', '积分状态')->select([
1 => '已完成',
2 => '解冻中',
3 => '冻结中'
]);
$filter->between('created_at', '创建时间')->datetime();
});
// 添加导出按钮
$grid->export()->filename('积分记录-'.date('YmdHis'))->rows(function ($rows) {
foreach ($rows as $index => &$row) {
// 处理增减类别
$row['change_type'] = $row['change_type'] == 1 ? '增加' : '减少';
// 处理积分状态
$pointStateMap = [
1 => '已完成',
2 => '解冻中',
3 => '冻结中'
];
$row['point_state'] = $pointStateMap[$row['point_state']] ?? '';
// 处理积分来源
$sourceMap = [
1 => '直推',
2 => '间推',
3 => '购物',
9 => '手动'
];
$row['source'] = $sourceMap[$row['source']] ?? '';
}
return $rows;
});
// 隐藏操作按钮
$grid->disableActions(); // 隐藏所有操作按钮
$grid->disableCreateButton(); // 隐藏新增按钮
$grid->disableDeleteButton(); // 隐藏删除按钮
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new UserPointChangeRec(), function (Show $show) {
$show->field('id', 'ID');
$show->field('user_id', '用户ID');
$show->field('order_id', '关联订单号');
$show->field('point_amount', '积分数量');
$show->field('change_type', '增减类别')->using([1 => '增加', 0 => '减少']);
$show->field('point_state', '积分状态')->using(UserPointChangeRec::pointState);
$show->field('freeze_end_date', '解冻结束日期');
$show->field('source', '积分来源')->using(UserPointChangeRec::source);
$show->field('memo', '备注');
$show->field('created_at', '创建时间');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new UserPointChangeRec(), function (Form $form) {
$form->display('id', 'ID');
$form->text('user_id', '用户ID')->required();
$form->text('order_id', '关联订单号');
$form->number('point_amount', '积分数量')->required();
$form->radio('change_type', '增减类别')
->options([1 => '增加', 0 => '减少'])
->default(1);
$form->select('point_state', '积分状态')
->options(UserPointChangeRec::pointState)
->default(1);
$form->datetime('freeze_end_date', '解冻结束日期');
$form->select('source', '积分来源')
->options(UserPointChangeRec::source)
->default(1);
$form->text('memo', '备注');
//$form->display('created_at', '创建时间');
});
}
}
......@@ -91,4 +91,7 @@
$router->resource('hf-company-member', 'HfCompanyMemberController'); //汇付天下-企业用户
$router->resource('user-point-change-rec', 'UserPointChangeRecController'); //积分记录
});
......@@ -14,6 +14,7 @@ class UserPointChangeRec extends Model
{
use HasDateTimeFormatter;
protected $table = 'user_point_change_rec';
public $timestamps = false;
public function user()
{
......@@ -37,6 +38,14 @@ public function order()
];
//积分状态定义【point_state】
public const pointState = [
1 => '已完成',
2 => '解冻中',
3 => '冻结中'
];
/**
* 用户积分变更记录
* @param int $user_id 用户ID
......
<?php
return [
'labels' => [
'UserPointChangeRec' => '用户积分记录',
'city' => 'City',
],
'fields' => [
'province_id' => '省份',
'city_id' => '城市',
],
'options' => [],
];
......@@ -21,14 +21,11 @@
Route::namespace('App\Http\Controllers\Api')->middleware('acceptJson')->group(function () {
//轮训接口
Route::post('updateOrderStatusToDiv','OrderDivideRecordController@updateOrderStatusToDiv'); //分佣订单解冻轮训
Route::post('pointUnfreezeEnd','OrderDivideRecordController@pointUnfreezeEnd'); //订单积分解冻轮训
//调试路由
Route::post('simulate-login','LoginController@simulateLogin'); //模拟登陆
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment