Commit 6b161ed6 by yink

feat(分佣记录): 新增冻结分佣记录功能

- 添加订单分佣记录-冻结分佣的路由和控制器
- 创建OrderDivideRecordDongJie模型用于查询冻结分佣数据
- 在请求日志中间件中过滤冻结分佣记录路由
- 更新语言文件添加冻结分佣相关字段
- 在API分佣记录接口中追加冻结分佣数据查询
parent 63dbf8f4
<?php
namespace App\Admin\Controllers;
use App\Models\OrderDivideRecordDongJie;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Form;
use Dcat\Admin\Http\Controllers\AdminController;
class OrderDivideRecordDongJieController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
// 使用视图查询数据
return Grid::make(new OrderDivideRecordDongJie(), function (Grid $grid) {
// 直接使用视图查询,利用Eloquent的分页功能
$grid->model()
->select('*')
->from('order_divide_view')
->orderBy('id', 'desc');
// 隐藏列
$grid->column('id', trans('order-divide-record.fields.id'))->hide();
// $grid->column('goods_id', trans('order-divide-record.fields.goods_id'))->hide();
// $grid->column('order_id', trans('order-divide-record.fields.order_id'))->hide();
// $grid->column('merchant_id', trans('order-divide-record.fields.merchant_id'))->hide();
// 显示列
$grid->column('order_sn', trans('order-divide-record.fields.order_sn'));
$grid->column('mobile', trans('order-divide-record.fields.mobile'));
$grid->column('merchant_commission', trans('order-divide-record.fields.merchant_commission'));
$grid->column('employee_commission', trans('order-divide-record.fields.employee_commission'));
$grid->column('name2', trans('order-divide-record.fields.name2'));
$grid->column('name', trans('order-divide-record.fields.name'));
$grid->column('goods_price', trans('order-divide-record.fields.goods_price'));
//$grid->column('merchant_amount', trans('order-divide-record.fields.merchant_amount'));
$grid->column('merchant_employee_amount', trans('order-divide-record.fields.merchant_employee_amount'));
$grid->column('divide_price', trans('order-divide-record.fields.divide_price'));
$grid->column('platform_amount', trans('order-divide-record.fields.platform_amount'));
$grid->column('created_at', trans('order-divide-record.fields.created_at'));
// 禁用操作按钮
$grid->disableCreateButton();
$grid->disableActions();
$grid->disableRowSelector();
// 启用筛选功能
$grid->filter(function (Grid\Filter $filter) {
// 默认展开筛选面板
$filter->panel();
// 订单号筛选
$filter->like('order_sn', trans('order-divide-record.fields.order_sn'), '订单sn');
// 手机号筛选
$filter->like('mobile', trans('order-divide-record.fields.mobile'));
// 商户名称筛选
$filter->like('name2', trans('order-divide-record.fields.name2'));
// 员工名称筛选
$filter->like('name', trans('order-divide-record.fields.name'));
// 创建时间范围筛选
$filter->between('created_at', trans('order-divide-record.fields.created_at'))->datetime();
});
// 设置分页选择器
$grid->perPages([10, 20, 50, 100]);
$grid->export()->csv();
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new OrderDivideRecordDongJie(), function (Show $show) {
$show->field('id');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new OrderDivideRecordDongJie(), function (Form $form) {
$form->display('id');
});
}
}
\ No newline at end of file
......@@ -96,4 +96,6 @@
$router->resource('payment-record', 'PaymentRecordController'); //支付记录
$router->resource('hf-settle-account', 'HfSettleAccountController'); //汇付普通用户
$router->resource('order-divide-record-dongjie', 'OrderDivideRecordDongJieController'); //订单分佣记录-冻结分佣
});
......@@ -33,6 +33,93 @@ public function getList(Request $request)
'total_page' => ceil($total / $limit),
'list' => []
];
//查询冻结中未分佣订单的预计分账金额,在第一页追加
//判断是员工还是商家
$add_sql='';
if ($type == 3&&$page==1) {
$add_sql="SELECT
log.id,
log.goods_id,
log.order_id,
log.merchant_id,
log.goods_price,
lg.merchant_commission,
sau.employee_commission,
log.created_at,
ROUND((log.goods_price * lg.merchant_commission * 1.0) / 100, 2) AS merchant_amount,
ROUND((log.goods_price * lg.merchant_commission * sau.employee_commission) / 10000, 2) AS employee_amount,
-- 使用 COALESCE 函数处理 NULL 值
COALESCE(
ROUND(((log.goods_price * lg.merchant_commission * 1.0) / 100) - ((log.goods_price * lg.merchant_commission * sau.employee_commission) / 10000), 2),
ROUND((log.goods_price * lg.merchant_commission * 1.0) / 100, 2)
) AS divide_price
FROM
li_order_goods log
LEFT JOIN
li_order_info loi ON log.order_id = loi.id
LEFT JOIN
li_goods lg ON log.goods_id = lg.id
LEFT JOIN
store_employee_user_rec seur ON seur.user_id = loi.user_id
LEFT JOIN
store_admin_users sau ON sau.id = seur.employee_id
WHERE
loi.is_div = 0 and loi.pay_type=1 and loi.deleted_at is null
AND loi.order_status in (3,4)
AND loi.merchant_id = {$um_id}
order by log.id desc ";
} else if($type == 5&&$page==1) {
$add_sql="SELECT
log.id,
log.goods_id,
log.order_id,
log.merchant_id,
log.goods_price,
lg.merchant_commission,
sau.employee_commission,
log.created_at,
ROUND((log.goods_price * lg.merchant_commission * 1.0) / 100, 2) AS merchant_amount,
ROUND((log.goods_price * lg.merchant_commission * sau.employee_commission) / 10000, 2) AS divide_price,
-- 使用 COALESCE 函数处理 NULL 值
COALESCE(
ROUND(((log.goods_price * lg.merchant_commission * 1.0) / 100) - ((log.goods_price * lg.merchant_commission * sau.employee_commission) / 10000), 2),
ROUND((log.goods_price * lg.merchant_commission * 1.0) / 100, 2)
) AS merchant_employee_amount
FROM
li_order_goods log
LEFT JOIN
li_order_info loi ON log.order_id = loi.id
LEFT JOIN
li_goods lg ON log.goods_id = lg.id
LEFT JOIN
store_employee_user_rec seur ON seur.user_id = loi.user_id
LEFT JOIN
store_admin_users sau ON sau.id = seur.employee_id
WHERE
loi.is_div = 0 and loi.pay_type=1 and loi.deleted_at is null
AND loi.order_status in (3,4)
AND sau.member_id ='{$um_id}'
order by log.id desc ";
}
if ($add_sql) {
$addData = DB::select($add_sql);
if ($addData) {
foreach ($addData as $kk => $vv) {
$data['list'][] = [
'title' =>'用户取货佣金-冻结中',
'created_at' => date("Y-m-d H:i:s", strtotime($vv->created_at)),
'divide_price' => $vv->divide_price
];
}
}
}
//已分账记录
$listData = $sql->offset(($page - 1) * $limit)->limit($limit)->orderBy('created_at', 'DESC')->get();
if ($listData->toArray()) {
foreach ($listData as $kk => $vv) {
......@@ -43,6 +130,11 @@ public function getList(Request $request)
];
}
}
return $this->JsonResponse($data);
}
......
......@@ -15,6 +15,7 @@ class RequestLoggingMiddleware
private $filteredRoutes = [
'auto-to-commentstatus',
'simulate-login',
'order-divide-record-dongjie',
'uploads/*' // 新增图片路径过滤
];
......@@ -27,6 +28,7 @@ class RequestLoggingMiddleware
*/
public function handle(Request $request, Closure $next)
{
// 检查请求的路径是否在过滤列表中
foreach ($this->filteredRoutes as $route) {
if ($request->is($route) || str_contains($request->path(), '.jpg')) {
......
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* 订单分账记录-冻结模型
* 用于展示未分账的订单数据
*/
class OrderDivideRecordDongJie extends Model
{
protected $table = 'order_divide_view';
/**
* 不使用数据表,仅用于查询构建
* @var bool
*/
public $timestamps = false;
/**
* 禁用批量赋值保护
* @var array
*/
protected $guarded = [];
}
\ No newline at end of file
......@@ -2,12 +2,26 @@
return [
'labels' => [
'OrderDivideRecord' => '分佣记录',
'OrderDivideRecord' => '分佣记录',
'OrderDivideRecordDongJie' => '分佣记录-冻结',
'orderdividerecorddongjie' => '分佣记录-冻结',
],
'fields' => [
'user_id' => '用户ID',
'amount' => '提现金额',
'status' => '提现状态',
'id' => 'ID',
'goods_id' => '商品ID',
'order_id' => '订单ID',
'merchant_id' => '商户ID',
'goods_price' => '商品价格',
'merchant_commission' => '商户佣金比例',
'employee_commission' => '员工佣金比例',
'created_at' => '创建时间',
'order_sn' => '订单号',
'mobile' => '手机号',
'name' => '员工姓名',
'name2' => '商户',
'merchant_amount' => 'xx金额',
'divide_price' => '员工金额',
'merchant_employee_amount' => '商户金额',
'platform_amount' => '平台金额',
],
'options' => [],
];
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